CONOCIDOS · SERVICIOS DEDICAADOS " VPS
Gestión del software de Linux RAID (Parte II): Recuperación después de una falla de disco
Última actualización 2019-02-03
Gestión del software de Linux RAID (Parte II): Recuperación después de una falla de disco
|
Este artículo le muestra cómo recuperar el software de Linux RAID en caso de una falla de disco. Para los ejemplos siguientes, utilizaremos las siguientes hipótesis:
Array saludable cat /proc/mdstat Personalidades : [raid1] md0 : raid activo1 sdb1[1] sda1[0] 511988 blocks super 1.0 [2/2] [UU] md1 : raid activo1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 1/8 pages [4KB], 65536KB chunk dispositivos no utilizados: <none
Tenga en cuenta que ambos arrays (md0, md1) son:
cat /proc/partitions major minor #blocks name 8 0 976762584 sda 8 1 512000 sda1 8 2 976248832 sda2 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0
Tenga en cuenta que los siguientes elementos deben ser verdaderos:
Array degradado
Personalidades : [raid1] md0 : raid activo1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : raid activo1 sdb2[1] sda2[0] 976247676 blocks super 1.1 [2/2] [UU] bitmap: 0/8 pages [0KB], 65536KB chunk dispositivos no utilizados: <none
Nota: Uno o más arrays RAID mostrarán a los miembros desaparecidos: [2/1] [ U]
Personalidades : [raid1] md0 : raid activo1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : raid activo1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk dispositivos no utilizados: <none En caso de fallo grave o si un disco no se inicializa en el reinicio del sistema, el disco en sí puede desaparecer como se muestra en los ejemplos siguientes.
Personalidades : [raid1] md0 : redada activa1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : redada activa1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk dispositivos no utilizados: <none
Disk missing: /proc/partitions major minor #blocks name 8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0
Remoción de un disco fallido Manually marking devices as ‘failed’ Debe marcar manualmente un dispositivo tan defectuoso sólo si uno de sus arrays está en un estado degradado debido a un tiempo de salida o leer error en una de las particiones. El disco físico en sí debe estar funcionando bien.
CAUTION: Be sure you are failing only the partitions that belong to the corresponding failed disk (i.e. sda1/sda2 for Sda and sdb1/sdb2 for sdb). Set sda1 and sda1 as Fallo [root@freshinstall ~]# mdadm --manage /dev/md0 --fail /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0
[root@freshinstall ~]# mdadm --manage /dev/md1 --fail /dev/sda2 mdadm: set /dev/sda2 faulty in /dev/md1
In cat /proc/mdstat Personalidades : [raid1] md0 : raid activo1 sdb1[1] sda1[0](F) 511988 blocks super 1.0 [2/1] [_U] md1 : raid activo1 sdb2[1] sda2[0](F) 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk dispositivos no utilizados: <none
Removing dispositivos fallidos de array Antes de que un disco pueda ser reemplazado, los miembros fallidos deben ser eliminados de sus correspondientes arrays:
[root@freshinstall ~]# mdadm --manage /dev/md0 --remove /dev/sda1 mdadm: caliente eliminado /dev/sda1 de /dev/md0
[root@freshinstall ~]# mdadm --manage /dev/md1 --remove /dev/sda2 mdadm: caliente eliminado /dev/sda2 de /dev/md1
[root@freshinstall ~]# cat /proc/mdstat Personalidades : [raid1] md0 : redada activa1 sdb1[1] 511988 blocks super 1.0 [2/1] [_U] md1 : redada activa1 sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] bitmap: 1/8 pages [4KB], 65536KB chunk dispositivos no utilizados: <none
[root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda1 [root@freshinstall ~]# mdadm --misc --zero-superblock /dev/sda2
dd if=/dev/zero of=/dev/sda bs=1M CAUCIÓN: Este proceso borra todos los datos del dispositivo dado el argumento "de=" (/dev/sda en el ejemplo anterior). Nota: Este proceso puede tardar un tiempo en completarse.
Agregar un disco de sustitución El disco de reemplazo debe ser exactamente el mismo tamaño o más grande que el disco fallido. Una vez que el disco de reemplazo se inserta en el sistema, el núcleo registrará algo así: dmesg ANTE ANTE ANTE sd 0:0:0:0: [sdc] 1953525168 512-byte bloques lógicos: (1.00 TB/931 GiB) sd 0:0:0:0: [sdc] 4096-byte bloques físicos sd 0:0:0:0: [sdc] Write Protect is off sd 0:0:0:0: [sdc] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sdc] Escriba caché: habilitado, lea el caché: activado, no soporta DPO o FUA
cat /proc/partitions major minor #blocks name
8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc Compruebe el estado SMART del nuevo disco: smartctl -H /dev/sdc smartctl 5.39.1 2010-01-28 r3054 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION == SMART resultado de la prueba de autoevaluación de la salud general: PASSED
Partición Para comenzar a porcionar, confirme primero que el nuevo disco no ha sido auto-montado: mount | grep sdc No debería haber salida. Si se muestra algo, las particiones correspondientes deben ser no montadas manualmente llamando: umount <partition> Como el sistema inicial utiliza dos unidades de espejo de exactamente el mismo tamaño, podemos utilizar la unidad operacional como una plantilla para particionar: sfdisk -d -uS /dev/sdb | sfdisk -L -uS /dev/sdc Comprobando que nadie está usando este disco ahora mismo ... OK
Disk /dev/sdc: 121601 cilindros, 255 cabezas, 63 sectores/track Situación antigua: Unidades = sectores de 512 bytes, contando desde 0
Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty Nueva situación: Unidades = sectores de 512 bytes, contando desde 0
Device Boot Start End #sectors Id System /dev/sdc1 * 2048 1026047 1024000 fd Linux raid autodetect /dev/sdc2 1026048 1953523711 1952497664 fd Linux raid autodetect /dev/sdc3 0 - 0 0 Empty /dev/sdc4 0 - 0 0 Empty Advertencia: la partición 1 no termina en un límite de cilindro Advertencia: la partición 2 no comienza en un límite de cilindro Advertencia: la partición 2 no termina en un límite de cilindro Escribió exitosamente la nueva tabla de partición
Releer la tabla de partición ...
Si creó o cambió una partición DOS, /dev/foo7, digamos, utilice dd(1) to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1 (Véase fdisk(8).)
Después de esto, usted debe ser capaz de ver su nuevo disco particionado: cat /proc/partitions major minor #blocks name
8 16 976762584 sdb 8 17 512000 sdb1 8 18 976248832 sdb2 9 1 976247676 md1 253 0 2097152 dm-0 253 1 2097152 dm-1 9 0 511988 md0 8 0 976762584 sdc 8 1 512000 sdc1 8 2 976248832 sdc2
Agregar nuevos dispositivos a la matriz [root@freshinstall ~]# mdadm --manage /dev/md0 --add /dev/sdc1 mdadm: añadido /dev/sdc1
[root@freshinstall ~]# mdadm --manage /dev/md1 --add /dev/sdc2 mdadm: añadido /dev/sdc2
[root@freshinstall ~]# cat /proc/mdstat Personalidades : [raid1] md0 : redada activa1 sdc1[2] sdb1[1] 511988 blocks super 1.0 [2/2] [UU] md1 : incursión activa1 sdc2[2] sdb2[1] 976247676 blocks super 1.1 [2/1] [_U] [>....................] recovery = 0.1% (1618176/976247676) finish=160.6min speed=101136K/sec bitmap: 1/8 pages [4KB], 65536KB chunk dispositivos no utilizados: <none Nota: Ambos arrays tienen dos miembros activos en ellos y md1 está reconstruyendo activamente.
Reinstalación de arranque Una vez que la unidad fallida es reemplazada, reinstalar GRUB en el MBR del nuevo disco para asegurarse de que puede arrancar de él: grub-install /dev/sdc La instalación terminó. No se ha informado de ningún error. Este es el contenido del mapa del dispositivo /boot/grub/device.map. Comprueba si esto es correcto o no. Si alguna de las líneas es incorrecta, Arréglalo y re-corre el script `grub-install'.
# Este mapa de dispositivo fue generado por anaconda (hd0) /dev/sdc (hd1) /dev/sdb
|
Díganos qué tiene que estar levantado.
A short conversation with an engineer. No quote-bot, no callback queue. We'll tell you honestly if we're not the right fit.