Ha surgido la necesidad de redimensionar las particiones de un servidor de oficina, cambiando bastante el esquema de particiones. Disponemos de un segundo disco duro, así que lo utilizaremos como plantilla, copiaremos los datos del disco viejo al nuevo y de paso montaremos un RAID en espejo (RAID 1). Al acabar deberíamos tener ambos discos duros con la nueva distribución de particiones, con RAID activado y sin haber perdido ningún dato.
De los dos discos del sistema, /dev/sda es el disco duro actual que está funcionando ya en el equipo, y /dev/sdb es el disco duro nuevo al que queremos mover el sistema. Lo ideal es que ambos discos duros tengan el mismo tamaño para un montaje en espejo, o por lo menos, que las particiones que queramos espejar quepan en ambos discos (se pueden dejar particiones fuera del RAID, lo veremos ahora). El procedimiento es casi idéntico utilicemos RAID o no, pero ya puestos, vamos con todo. 🙂
Antes de empezar, haced un backup de todo lo importante que haya en ese equipo. No debería ser necesario, pero es mejor no correr riesgos innecesarios.
Este es el sistema actual antes de empezar, tiene un LVM configurado que no se necesita:
root@oficina:~# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
rootfs 322M 120M 186M 40% /
udev 10M 0 10M 0% /dev
tmpfs 89M 556K 88M 1% /run
/dev/mapper/espejo-root 322M 120M 186M 40% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 177M 0 177M 0% /run/shm
/dev/sda1 228M 12M 204M 6% /boot
/dev/mapper/espejo-home 446G 218G 206G 52% /home
/dev/mapper/espejo-tmp 368M 11M 339M 3% /tmp
/dev/mapper/espejo-usr 8,3G 7,4G 464M 95% /usr
/dev/mapper/espejo-var 2,8G 1,6G 1,2G 58% /var
root@oficina:~#root@oficina:~# fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, 976773168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x000317f3
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 976771071 488134657 5 Extendida
/dev/sda5 501760 976771071 488134656 8e Linux LVM
root@oficina:~# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, 976773168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x00000000
El disco /dev/sdb no contiene una tabla de particiones válida
root@oficina:~#
El siguiente paso es crear en el disco nuevo /dev/sdb las particiones a nuestro gusto:
root@oficina:~# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, 976773168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x00000000
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 * 63 996029 497983+ fd Linux raid autodetect
/dev/sdb2 996030 2988089 996030 fd Linux raid autodetect
/dev/sdb3 2988090 43054199 20033055 fd Linux raid autodetect
/dev/sdb4 43054200 976773167 466859484 fd Linux raid autodetect
root@oficina:~#
No es obligatorio marcar el tipo de las particiones como Linux raid autodetect (código FD en el tipo de partición) pero lo veo recomendable para ser conscientes, y tomar las medidas pertinentes, si alguno de estos discos duros son utilizados en otro equipo con posterioridad.
/dev/sdb1 será la partición /boot configurada como RAID 1 (espejo)
/dev/sdb2 será una partición usada como SWAP, no configuraremos ningún RAID en ella por ahora, posteriormente añadiremos un RAID 0 para mejorar el rendimiento (será /dev/md/swap).
/dev/sdb3 será la partición / configurada como RAID 1
/dev/sdb4 será la partición /home configurada como RAID 1
Ahora montamos el RAID, esto hará que aparezcan unos dispositivos por cada partición controlada mediante RAID, y son los que utilizaremos en lugar de /dev/sda1 o /dev/sda2 a la hora de trabajar con los discos duros (en el fstab por ejemplo):
root@oficina:~# apt-get install mdadm
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
mdadm ya está en su versión más reciente.
0 actualizados, 0 se instalarán, 0 para eliminar y 0 no actualizados.
root@oficina:~# mdadm --create boot --name=boot --homehost="<none>" --level=1 --raid-devices=2 missing /dev/sdb1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/boot started.
root@oficina:~# mdadm --create root --name=root --homehost="<none>" --level=1 --raid-devices=2 missing /dev/sdb3
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/root started.
root@oficina:~# mdadm --create home --name=home --homehost="<none>" --level=1 --raid-devices=2 missing /dev/sdb4
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/home started.
root@oficina:~# ls -la /dev/md
total 0
drwxr-xr-x 2 root root 100 oct 22 20:36 .
drwxr-xr-x 15 root root 3360 oct 22 20:36 ..
lrwxrwxrwx 1 root root 8 oct 22 20:31 boot -> ../md127
lrwxrwxrwx 1 root root 8 oct 22 20:36 home -> ../md125
lrwxrwxrwx 1 root root 8 oct 22 20:35 root -> ../md126
root@oficina:~#
Lo que hacemos es crear los volúmenes únicamente con las particiones del disco sdb, el disco sda lo añadiremos una vez que el sistema consiga arrancar desde el RAID (por eso indicamos ahora que está missing). Cuando incluyamos el disco sda en el RAID, se borrará por completo y se clonará a partir del disco duro que estamos configurando.
El parámetro name indica la etiqueta que tendrá, muy útil porque sino será algo como md0. El otro parámetro homehost indica el nombre del servidor, en nuestro caso no queremos que lo coloque, por eso le indicamos
Ahora toca formatear las particiones:
root@oficina:~# mkfs.ext4 -m 0 -L BOOT /dev/md/boot
mke2fs 1.42.5 (29-Jul-2012)
Etiqueta del sistema de ficheros=BOOT
OS type: Linux
Tamaño del bloque=1024 (bitácora=0)
Tamaño del fragmento=1024 (bitácora=0)
Stride=0 blocks, Stripe width=0 blocks
124440 inodes, 497664 blocks
0 blocks (0.00%) reserved for the super user
Primer bloque de datos=1
Número máximo de bloques del sistema de ficheros=67633152
61 bloque de grupos
8192 bloques por grupo, 8192 fragmentos por grupo
2040 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: hecho
Escribiendo las tablas de nodos-i: hecho
Creating journal (8192 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: 0/6hecho
root@oficina:~# mkswap /dev/sdb2
Setting up swapspace version 1, size = 996024 KiB
no label, UUID=ec3df6d1-1774-4606-8c46-72e02e5d7737
root@oficina:~# mkfs.ext4 -m 0 -L ROOT /dev/md/root
mke2fs 1.42.5 (29-Jul-2012)
Etiqueta del sistema de ficheros=ROOT
OS type: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
1253376 inodes, 5004144 blocks
0 blocks (0.00%) reserved for the super user
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=0
153 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: hecho
Escribiendo las tablas de nodos-i: hecho
Creating journal (32768 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: 0/hecho
root@oficina:~#
La opción -m 0 hace que se reserven un 0% de los bloques del sistema de archivos (generalmente se reserva un cierto porcentaje para evitar colapsos si se llena mucho, pero por experiencia propia tengo llegado a 0 bytes libres y todo sigue funcionando :D), y el parámetro -L XXXX establece una etiqueta.
Tuve un problema extraño con el disco duro al formatear la partición home, por alguna razón, tras dos horas generando el sistema de archivos, mostró este mensaje y el disco duro mostraba errores en dmesg:
ext2fs_mkdir: Attempt to read block from filesystem resulted in short read
smartctl -i /dev/sdb
Tras reiniciar, procedí a volver a generar el sistema de archivos y parece que funcionó:
root@oficina:~# mkfs.ext4 -m 0 -L HOME /dev/md/home
mke2fs 1.42.5 (29-Jul-2012)
Etiqueta del sistema de ficheros=HOME
OS type: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
29171712 inodes, 116682064 blocks
0 blocks (0.00%) reserved for the super user
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=0
3561 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8192 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000
Allocating group tables: hecho
Escribiendo las tablas de nodos-i: hecho
Creating journal (32768 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho
root@oficina:~#
Ahora toca copiar los datos:
root@oficina:~# mount | grep \/dev
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=112460,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
/dev/mapper/espejo-root on / type ext3 (rw,relatime,errors=remount-ro,barrier=1,data=ordered)
/dev/sda1 on /boot type ext2 (rw,relatime,errors=continue)
/dev/mapper/espejo-home on /home type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/mapper/espejo-tmp on /tmp type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/mapper/espejo-usr on /usr type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/mapper/espejo-var on /var type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
root@oficina:~#
/dev/sda1 lo copiaremos en /dev/md/boot
/dev/mapper/espejo-root lo copiaremos en /dev/md/root
/dev/mapper/var lo copiaremos dentro de /dev/md/root en la carpeta var que existirá después de copiar el espejo-root
/dev/mapper/usr lo copiaremos dentro de /dev/md/root en la carpeta usr que existirá después de copiar el espejo-root
/dev/mapper/espejo-tmp no lo copiaremos, son sólo archivos temporales.
/dev/mapper/espejo-home lo copiaremos en /dev/md/home
Vamos a ello, montamos las unidades RAID y transferimos los ficheros:
root@oficina:~# mkdir /mnt/root
root@oficina:~# mkdir /mnt/boot
root@oficina:~# mkdir /mnt/home
root@oficina:~# mount /dev/md/root /mnt/root/
root@oficina:~# mount /dev/md/boot /mnt/boot/
root@oficina:~# mount /dev/md/home /mnt/home/
root@oficina:~# cp -xaRP /boot/* /mnt/boot/
root@oficina:~# rsync -auxHAX --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* / /mnt/root
root@oficina:~# cp -xaRP /var/* /mnt/root/var/
root@oficina:~# cp -xaRP /usr/* /mnt/root/usr/
root@oficina:~# cp -xaRP /home/* /mnt/home/
root@oficina:~# mount -o bind /dev/ /mnt/root/dev/
root@oficina:~# mount -o bind /proc/ /mnt/root/proc/
root@oficina:~# mount -o bind /sys/ /mnt/root/sys/
root@oficina:~# umount /mnt/boot/
root@oficina:~# chroot /mnt/root/
Ya está todo copiado, vamos a configurar el equipo para que pueda arrancar desde el RAID:
root@oficina:/# mount /dev/md/boot /boot/
root@oficina:/# vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/md/root / ext4 errors=remount-ro 0 1
/dev/md/boot /boot ext4 defaults 0 2
/dev/md/home /home ext4 defaults 0 2
#/dev/mapper/espejo-swap_1 none swap sw 0 0
root@oficina:/# /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
root@oficina:/# update-initramfs -k all -u
update-initramfs: Generating /boot/initrd.img-4.1.3-devel
root@oficina:/# grub-install --recheck /dev/sdb
Installation finished. No error reported.
root@oficina:/# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-4.1.3-devel
Found initrd image: /boot/initrd.img-4.1.3-devel
done
root@oficina:/#
Parece que todo fue bien, pero tenemos que comprobarlo. Revisamos el fichero grub.cfg, tiene que cargar los módulos raid y mdraid1x. Además de eso, los identificadores de las particiones deberían ser los de las particiones RAID:
root@oficina:/# vi /boot/grub/grub.cfg
...
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 4.1.3-devel' --class debian --class gnu-linux --class gnu --class os {
load_video
insmod gzio
insmod raid
insmod mdraid1x
insmod part_msdos
insmod ext2
set root='(mduuid/a88ec28f7b0f29d73baa2ebb96f1f2aa)'
search --no-floppy --fs-uuid --set=root 871c9c73-47f5-4497-bd37-d123b04b9db5
echo 'Loading Linux 4.1.3-devel ...'
linux /vmlinuz-4.1.3-devel root=UUID=addeade3-fda8-4927-8e84-1749ec9d96d9 ro quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-4.1.3-devel
}
...
root@oficina:/# blkid /dev/md/root
/dev/md/root: LABEL="ROOT" UUID="addeade3-fda8-4927-8e84-1749ec9d96d9" TYPE="ext4"
root@oficina:/# blkid /dev/md/boot
/dev/md/boot: LABEL="BOOT" UUID="871c9c73-47f5-4497-bd37-d123b04b9db5" TYPE="ext4"
root@oficina:/#
Todo correcto. Si no funcionase, podéis colocar ese texto (menuentry { ... }) en el archivo /etc/grub/40_custom y volver a ejecutar update-grub.
Ahora mismo tenemos un disco duro configurado para arrancar sin RAID, y el otro configurado para arrancar con RAID. Reiniciamos el equipo y o bien entramos en la BIOS para cambiar el orden de arranque de los discos duros, o bien intercambiamos físicamente los cables SATA. Yo he optado por intercambiar los cables (¡Ojo! ahora /dev/sda será el RAID bueno y /dev/sdb será el disco antiguo que sobreescribiremos). Si todo va bien deberíais ver esto:
root@oficina:~# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
rootfs 19G 11G 8,2G 57% /
udev 10M 0 10M 0% /dev
tmpfs 89M 628K 88M 1% /run
/dev/disk/by-uuid/addeade3-fda8-4927-8e84-1749ec9d96d9 19G 11G 8,2G 57% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 177M 0 177M 0% /run/shm
/dev/md127 463M 23M 437M 5% /boot
/dev/md125 438G 217G 222G 50% /home
root@oficina:~# ls -la /dev/disk/by-uuid/ | grep md
lrwxrwxrwx 1 root root 11 jul 22 19:01 1697cc5b-d157-4b80-9422-597c38519d40 -> ../../md125
lrwxrwxrwx 1 root root 11 jul 22 19:01 871c9c73-47f5-4497-bd37-d123b04b9db5 -> ../../md127
lrwxrwxrwx 1 root root 11 jul 22 19:01 addeade3-fda8-4927-8e84-1749ec9d96d9 -> ../../md126
root@oficina:~# ls -la /dev/md/
total 0
drwxr-xr-x 2 root root 100 jul 22 19:01 .
drwxr-xr-x 15 root root 3520 jul 22 19:01 ..
lrwxrwxrwx 1 root root 8 jul 22 19:01 boot -> ../md127
lrwxrwxrwx 1 root root 8 jul 22 19:01 home -> ../md125
lrwxrwxrwx 1 root root 8 jul 22 19:01 root -> ../md126
root@oficina:~# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sda4[1]
466728256 blocks super 1.2 [2/1] [_U]
md126 : active raid1 sda3[1]
20016576 blocks super 1.2 [2/1] [_U]
md127 : active raid1 sda1[1]
497664 blocks super 1.2 [2/1] [_U]
unused devices: <none>
root@oficina:~# fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, 976773168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x00000000
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 63 996029 497983+ fd Linux raid autodetect
/dev/sda2 996030 2988089 996030 fd Linux raid autodetect
/dev/sda3 2988090 43054199 20033055 fd Linux raid autodetect
/dev/sda4 43054200 976773167 466859484 fd Linux raid autodetect
root@oficina:~# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, 976773168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x000317f3
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 * 2048 499711 248832 83 Linux
/dev/sdb2 501758 976771071 488134657 5 Extendida
/dev/sdb5 501760 976771071 488134656 8e Linux LVM
root@oficina:~#
Ahora tenemos que borrar el disco duro antiguo e integrarlo en el RAID, para ello, copiamos la tabla de particiones desde el disco nuevo al viejo, reiniciamos para que el kernel redetecte todo bien y lo añadimos al array:
root@oficina:~# dd if=/dev/sda of=/dev/sdb bs=512 count=1
1+0 registros leídos
1+0 registros escritos
512 bytes (512 B) copiados, 0,000153029 s, 3,3 MB/s
root@oficina:~# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, 976773168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0x00000000
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 * 63 996029 497983+ fd Linux raid autodetect
/dev/sdb2 996030 2988089 996030 fd Linux raid autodetect
/dev/sdb3 2988090 43054199 20033055 fd Linux raid autodetect
/dev/sdb4 43054200 976773167 466859484 fd Linux raid autodetect
root@oficina:~# reboot
...
root@oficina:~# mdadm /dev/md/boot -a /dev/sdb1
mdadm: added /dev/sdb1
root@oficina:~# mdadm /dev/md/root -a /dev/sdb3
mdadm: added /dev/sdb3
root@oficina:~# mdadm /dev/md/home -a /dev/sdb4
mdadm: added /dev/sdb4
root@oficina:~#
Podéis ver como avanza la sincronización con los siguientes comandos:
root@oficina:~# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb4[2] sda4[1]
466728256 blocks super 1.2 [2/1] [_U]
resync=DELAYED
md126 : active raid1 sdb3[2] sda3[1]
20016576 blocks super 1.2 [2/1] [_U]
[==========>..........] recovery = 51.8% (10377088/20016576) finish=4.1min speed=38823K/sec
md127 : active raid1 sdb1[2] sda1[1]
497664 blocks super 1.2 [2/2] [UU]
unused devices: <none>
root@oficina:~# mdadm --detail /dev/md/home
/dev/md/home:
Version : 1.2
Creation Time : Wed Jul 22 20:36:26 2015
Raid Level : raid1
Array Size : 466728256 (445.11 GiB 477.93 GB)
Used Dev Size : 466728256 (445.11 GiB 477.93 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Jul 22 19:14:16 2015
State : clean, degraded, resyncing (DELAYED)
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Name : home
UUID : 6d19ec6c:1498b05d:aa842f0a:f4ade329
Events : 3470
Number Major Minor RaidDevice State
2 8 20 0 spare rebuilding /dev/sdb4
1 8 4 1 active sync /dev/sda4
root@oficina:~# cat /proc/mdstat
Personalities : [raid1]
md125 : active raid1 sdb4[2] sda4[1]
466728256 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 1.0% (4936064/466728256) finish=228.6min speed=33654K/sec
md126 : active raid1 sdb3[2] sda3[1]
20016576 blocks super 1.2 [2/2] [UU]
md127 : active raid1 sdb1[2] sda1[1]
497664 blocks super 1.2 [2/2] [UU]
unused devices: <none>
root@oficina:~# mdadm --detail /dev/md/root
/dev/md/root:
Version : 1.2
Creation Time : Wed Jul 22 20:35:43 2015
Raid Level : raid1
Array Size : 20016576 (19.09 GiB 20.50 GB)
Used Dev Size : 20016576 (19.09 GiB 20.50 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Jul 22 19:24:13 2015
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Name : root
UUID : d725447d:6141736f:ffbdb132:42ee270b
Events : 4383
Number Major Minor RaidDevice State
2 8 19 0 active sync /dev/sdb3
1 8 3 1 active sync /dev/sda3
root@oficina:~#
Se puede lanzar el comando automáticamente cada 10 segundos usando:
watch -n 10 cat /proc/mdstat
En mi caso, tardará 4 horas en sincronizar los dos discos duros de más de 400 GB. Mientras tanto, vamos con un bonus, vamos a crear un RAID 0 sobre la segunda partición de ambos discos, que era la que reservamos para SWAP (1024 MB + 1024 MB). RAID 0 no ofrece redundancia pero sí mejora el rendimiento, algo que tiene mucho sentido para la SWAP. Vamos a ello, es igual que lo que hicimos antes, pero con nivel 0:
root@oficina:~# mdadm --create swap --name=swap --homehost="<none>" --level=0 --raid-devices=2 /dev/sda2 /dev/sdb2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/swap started.
root@oficina:~# mkswap -L SWAP /dev/md/swap
mkswap: /dev/md/swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1991676 KiB
LABEL=SWAP, UUID=5be8a945-aa1c-4a1c-89f7-7419ebed388c
root@oficina:~# cat /proc/mdstat
Personalities : [raid1] [raid0]
md124 : active raid0 sdb2[1] sda2[0]
1991680 blocks super 1.2 512k chunks
md125 : active raid1 sdb4[2] sda4[1]
466728256 blocks super 1.2 [2/1] [_U]
[>....................] recovery = 3.5% (16569216/466728256) finish=407.6min speed=18404K/sec
md126 : active raid1 sdb3[2] sda3[1]
20016576 blocks super 1.2 [2/2] [UU]
md127 : active raid1 sdb1[2] sda1[1]
497664 blocks super 1.2 [2/2] [UU]
unused devices: <none>
root@oficina:~# /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
root@oficina:~# update-initramfs -k all -u && update-grub
update-initramfs: Generating /boot/initrd.img-4.1.3-devel
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-4.1.3-devel
Found initrd image: /boot/initrd.img-4.1.3-devel
No volume groups found
done
root@oficina:~# vi /etc/fstab
...
#/dev/mapper/espejo-swap_1 none swap sw 0 0
/dev/md/swap none swap sw 0 0
...
root@oficina:~# swapon -a
root@oficina:~# free
total used free shared buffers cached
Mem: 903268 138012 765256 0 14600 75796
-/+ buffers/cache: 47616 855652
Swap: 1991676 0 1991676
root@oficina:~#
Listo, ahora sólo queda esperar a que acabe de sincronizar el disco y habremos terminado. 🙂

