Archivo

Posts Tagged ‘Lvm’

Convertir Raid1 En Raid5 Sobre LVM Sin Perder Datos

Situación:

Tenemos un Raid1 /dev/md0 con 2 discos de 250GB /dev/sdb1 y /dev/sdc1.

Con el dispositivo /dev/md0 hemos creado un LV ( logical volume ) llamado datos, dentro de un VG ( volume group ) también llamado datos, con lo que obtenemos:

/dev/mapper/datos-datos 230G  115G  115G  50% /mnt/datos

Objetivo:

Hemos obtenido un tercer disco de 250GB /dev/sdd1 y queremos convertir el Raid1 existente en un Raid5 con los tres discos de 250GB, sin perder datos y manteniendo el LV datos.

En Marcha:

– Sobreescribimos el metadata del Raid1 con el metadata del Raid5

mdadm –create /dev/md0 –level=5 -n 2 /dev/sdb1 /dev/sdc1

– Comprobamos que hemos pasado de un Raid1 a un Raid5:

mdadm -D /dev/md0

– Añadimos el tercer disco /dev/sdd1 al array /dev/md0

mdadm –add /dev/md0 /dev/sdd1

– Comprobamos que se está realizando la reconstrucción del array, de nuevo con:

mdadm -D /dev/md0

– Una vez que ha finalizado la reconstrucción hacemos crecer el array, utilizando también un fichero de backup en caso de que se interrumpiera el proceso por alguna razón:

mdadm –grow /dev/md0 –raid-disks=3 –backup-file=/tmp/raid1to5.backup

– Esto puede tardar muchas horas, dependiendo del tamaño de los discos y de los datos que hubiera en el array.
Comprobamos periódicamente el array con:

mdadm -D /dev/md0

Y cuando haya finalizado el proceso, procedemos a redimensionar nuestro LV datos:

pvresize /dev/md0

Si el comando anterior nos da el error “too many metadata areas for pvresize” debemos hacer:

– vgcfgbackup -v -f /tmp/file datos     Dónde datos es el nombre de mi VG.
– vgchange -an datos                    Dónde datos es el nombre de mi VG.

Ahora tenemos que editar el fichero /tmp/file y buscar y copiar el UUID del pv /dev/md0 para luego utilizarlo:

– pvcreate -ff –metadatacopies 1 –restorefile /tmp/file –uuid elUUID /dev/md0
– vgcfgrestore -v -f /tmp/file datos
– pvresize /dev/md0

Ahora sólo queda extender el LV que en mi caso se llama datos, al igual que el VG.
Para extender un LV se hace dependiendo del sistema de archivos que tenga.

En mi caso uso xfs, y se extiende:

– xfs_growfs /dev/mapper/datos

Con ext3 sería:

– e2fsck -f /dev/mapper/datos
– resize2fs -p /dev/mapper/datos

Si ahora hacemos un df -h obtenemos el nuevo tamaño de nuestro LV datos:

– dev/mapper/datos-datos        465G  115G  350G  25% /mnt/datos

Listo. Parece más complicado de lo que en realidad es.

Advertencia:

Todas las veces que he realizado este proceso no he tenido ningún problema, ni he perdido ningún dato.
De todas formas siempre hago un backup de mis datos antes de jugar con mis discos duros, por lo tanto, siempre, siempre haz un backup.

Categorías:SysAdmin Etiquetas: , ,