RAID por software reemplazo de disco dañado

sismo
05/06/2009 - 20:17

Este procedimiento lo documente en una vmware el día antes de tener que hacer el cambio de un disco de un servidor de producción que el smartd nos empezó a alertar que el disco estaba fallando!

El servidor tiene 2 discos sata (el procedimiento es igual para sata, scsi o sas) linux ve todo como scsi.

El procedimiento es complejo no es recomendable para ser ejecutados por usuarios con poca experiencia en la administración de sistemas.

Procedimiento:

En el ejemplo el disco que esta fallando es el "/dev/sdb"

Lo primero a realizar es desactivar la swap del disco en cuestión (la swap en este caso no estaba dentro de un RAID).

< root@raidtest:~# swapoff /dev/sdb1

y borrar la entrada en el fstab (vi /etc/fstab)

> # /dev/sdb1
> UUID=ad86a391-c492-4946-8c1e-536ec6eed5b7 none            swap    sw              0       0

A continuación se debe marcar las particiones de esta unidad como falladas en los distintos RAID's definidos.  

< root@raidtest:~# mdadm /dev/md0 -f /dev/sdb2
< root@raidtest:~# mdadm /dev/md1 -f /dev/sdb3
< root@raidtest:~# mdadm /dev/md2 -f /dev/sdb4

Y removerlas.

< root@raidtest:~# mdadm /dev/md0 -r /dev/sdb2
< root@raidtest:~# mdadm /dev/md1 -r /dev/sdb3
< root@raidtest:~# mdadm /dev/md2 -r /dev/sdb4

Se desactivar la unidad del sistema.  Lo primero a realizar es identificarla en la lista de componentes SCSI (linux ve a los SATA/SAS como SCSI). El primer dispositivo es un CD-ROM el segundo y tercero son discos.  Se debe desactivar el segundo (/dev/sdb).

< root@raidtest:~# cat /proc/scsi/scsi
> Attached devices:
> Host: scsi1 Channel: 00 Id: 00 Lun: 00
>  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
>  Type:   CD-ROM                           ANSI  SCSI revision: 05
> Host: scsi2 Channel: 00 Id: 00 Lun: 00
>   Vendor: VMware,  Model: VMware Virtual S Rev: 1.0
>   Type:   Direct-Access                    ANSI  SCSI revision: 02
> Host: scsi2 Channel: 00 Id: 01 Lun: 00
>   Vendor: VMware,  Model: VMware Virtual S Rev: 1.0
>   Type:   Direct-Access                    ANSI  SCSI revision: 02

 Se debe remover en forma lógica el disco que esta en la segunda placa SCSI (scsi2) en el canal 0 id 1 lun 0 .  Se realiza con el siguiente comando.

< root@raidtest:~# echo "scsi remove-single-device" 2 0 1 0 > /proc/scsi/scsi

Se verifica la remoción lógica del disco.

< root@raidtest:~# cat /proc/scsi/scsi
< Attached devices:
< Host: scsi1 Channel: 00 Id: 00 Lun: 00
<   Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
<   Type:   CD-ROM                           ANSI  SCSI revision: 05
< Host: scsi2 Channel: 00 Id: 00 Lun: 00
<   Vendor: VMware,  Model: VMware Virtual S Rev: 1.0
<   Type:   Direct-Access                    ANSI  SCSI revision: 02

Se debe remover físicamente el disco del equipo.

Se inserta el reemplazo (se asume que se inserta en el mismo puerto).  Y se lo habilita a nivel lógico en el sistema con el siguiente comando.

< root@raidtest:~# echo "scsi add-single-device" 2 0 1 0 > /proc/scsi/scsi

Se revisa el sislog para verificar el estado del disco.

< root@raidtest:~# tail -n 15 /var/log/syslog
> May  6 19:55:24 raidtest kernel: [ 1412.983194] scsi 2:0:1:0: Direct-Access     VMware,  VMware Virtual S 1.0  PQ: 0 ANSI: 2
> May  6 19:55:24 raidtest kernel: [ 1412.983850] sd 2:0:1:0: [sdc] 41943040 512-byte hardware sectors (21475 MB)
> May  6 19:55:24 raidtest kernel: [ 1412.983952] sd 2:0:1:0: [sdc] Write Protect is off
> May  6 19:55:24 raidtest kernel: [ 1412.983963] sd 2:0:1:0: [sdc] Mode Sense: 5d 00 00 00
> May  6 19:55:24 raidtest kernel: [ 1412.984219] sd 2:0:1:0: [sdc] Cache data unavailable
> May  6 19:55:24 raidtest kernel: [ 1412.984227] sd 2:0:1:0: [sdc] Assuming drive cache: write through
> May  6 19:55:24 raidtest kernel: [ 1412.984875] sd 2:0:1:0: [sdc] 41943040 512-byte hardware sectors (21475 MB)
> May  6 19:55:24 raidtest kernel: [ 1412.984963] sd 2:0:1:0: [sdc] Write Protect is off
> May  6 19:55:24 raidtest kernel: [ 1412.984972] sd 2:0:1:0: [sdc] Mode Sense: 5d 00 00 00
> May  6 19:55:24 raidtest kernel: [ 1412.985679] sd 2:0:1:0: [sdc] Cache data unavailable
> May  6 19:55:24 raidtest kernel: [ 1412.985687] sd 2:0:1:0: [sdc] Assuming drive cache: write through
> May  6 19:55:24 raidtest kernel: [ 1412.986140]  sdc: unknown partition table
> May  6 19:55:24 raidtest kernel: [ 1412.999439] sd 2:0:1:0: [sdc] Attached SCSI disk
> May  6 19:55:24 raidtest kernel: [ 1412.999715] sd 2:0:1:0: Attached scsi generic sg2 type 0

Se detecta que el disco insertado en este caso fue reconocido por el sistema como sdc (/dev/sdc).  Si lo reconoce con la misma definición que el removido no es problema, varía según la controladora.

A continuación se transfiere la tabla de particiones del disco que esta funcionando (asumiendo que el disco tiene igual o mayor capacidad que el que se encuentra en uso en el sistema).

< root@raidtest:~# sfdisk -d /dev/sda |sfdisk /dev/sdc

Finalizada la creación de la estructura de archivos del disco rígido, se procede a crear la partición swap.

< root@raidtest:~# mkswap /dev/sdc1
> Setting up swapspace version 1, size = 501735 kB
> no label, UUID=2038332b-69fd-4dd2-a96a-0018d97fe075

Se habilita al sistema al uso de la swap.

< root@raidtest:~# swapon /dev/sdc1

Se debe agregar la entrada de la swap al /etc/fstab para que persista la configuración

> #/dev/sda1 
> UUID=2038332b-69fd-4dd2-a96a-0018d97fe075 none swap sw 0 0

El siguiente paso a realizar es agregar las particiones a los dispositivos RAID.

< root@raidtest:~# mdadm /dev/md0 -a /dev/sdc2
< root@raidtest:~# mdadm /dev/md1 -a /dev/sdc3
< root@raidtest:~# mdadm /dev/md2 -a /dev/sdc4

Para verificar el estado del raid se puede ejecutar el siguiente comando:

< root@raidtest:~# cat /proc/mdstat
> Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
> md2 : active raid1 sdc4[2] sda4[0]
>       10458240 blocks [2/1] [U_]
>           resync=DELAYED
>      
> md1 : active raid1 sdc3[2] sda3[0]
>       9767424 blocks [2/1] [U_]
>       [===>.................]  recovery = 16.1% (1574080/9767424) finish=1.0min speed=131173K/sec
>      
> md0 : active raid1 sdc2[1] sda2[0]
>       248896 blocks [2/2] [UU]
>      
> unused devices: <none>

Dejando pasar un tiempo se puede volver a chequear el estado de la actualización de datos.

< root@raidtest:~# cat /proc/mdstat
> Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
> md2 : active raid1 sdc4[1] sda4[0]
>       10458240 blocks [2/2] [UU]
>      
> md1 : active raid1 sdc3[1] sda3[0]
>       9767424 blocks [2/2] [UU]
>      
> md0 : active raid1 sdc2[1] sda2[0]
>       248896 blocks [2/2] [UU]
>      
> unused devices: <none>

Comentarios

Voy a ver si anda.

Gracias.

Distribuir contenido