Migración a RAID 1 en ''Quente''
Migraremos un sistema Debian Jessie instalado nunha partición simple dun disco montada no sistema raíz (/dev/sda1), a unha instalación con 2 discos en raid sobre LVM en /dev/sdb2 e /dev/sdc2. A estructura a montar será a seguinte:
- Se montarán as particións /dev/sdb2 e /dev/sdc2 en RAID 1
- Particionaremos o RAID /dev/md0 en unha partición para /boot' de 1GB e o resto nunha partición para crear un VG LVM.
- Se creará o VG e un LV para o raíz de 9GB. O uso de /home será irrelevante neste sistema
- O swap residirá en outra partición fora do RAID.
Instalación do RAID
Unha vez feitas as particións, crearemos o RAID 1:
1.- Cargamos os módulos RAID e miramos a configuración:
root@earendil:/# modprobe linear
root@earendil:/# modprobe multipath
root@earendil:/# modprobe raid0
root@earendil:/# modprobe raid1
root@earendil:/# modprobe raid5
root@earendil:/# modprobe raid6
root@earendil:/# modprobe raid10
root@earendil:/# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>
root@host:#
2.- Cambiamos o tipo das particións /dev/sdb1, /dev/sdc1, /dev/sdb2 e /dev/sdc2 a Linux raid auto con fdisk
root@earendil:/# fdisk /dev/sdb
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Orden (m para obtener ayuda): p
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders, 3907029168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Identificador del disco: 0x3bdc4138
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 2048 1048578047 524288000 83 Linux
/dev/sdb2 1048578048 3145730047 1048576000 83 Linux
/dev/sdb3 3145730048 3907029167 380649560 83 Linux
Orden (m para obtener ayuda): t
Número de partición (1-4): 2
Código hexadecimal (escriba L para ver los códigos): fd
Se ha cambiado el tipo de sistema de la partición 2 por fd (Linux raid autodetect)
Orden (m para obtener ayuda): wq
3.- Nos aseguramos de que as particións non teñen datos de algún RAID anterior
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdc2
4.- Creamos o RAID. Si o sistema estivara instalado en unha de estas dúas particións, poderíamos poñer missing en lugar de a partición do sistema para crear un RAID dexenerado ao que lle engadiríamos a outra partición cando estivera todo listo (a información almacenada no RAID).
root@earendil:/# mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sdb2 /dev/sdc2
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? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
root@earendil:/# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[1] sdb2[0]
1048444736 blocks super 1.2 [2/2] [UU]
[>....................] resync = 1.9% (20398144/1048444736) finish=143.0min speed=119779K/sec
unused devices: <none>
5.- Particionamos o RAID
root@earendil:/# fdisk /dev/md0
El dispositivo no contiene una tabla de particiones DOS válida ni una etiqueta de disco Sun o SGI o OSF
Building a new DOS disklabel with disk identifier 0x552942f8.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Atención: el indicador 0x0000 inválido de la tabla de particiones 4 se corregirá mediante w(rite)
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Orden (m para obtener ayuda): p
Disk /dev/md0: 1073.6 GB, 1073607409664 bytes
2 heads, 4 sectors/track, 262111184 cylinders, 2096889472 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Identificador del disco: 0x552942f8
Disposit. Inicio Comienzo Fin Bloques Id Sistema
Orden (m para obtener ayuda): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Número de partición (1-4, valor predeterminado 1):
Se está utilizando el valor predeterminado 1
Primer sector (2048-2096889471, valor predeterminado 2048):
Se está utilizando el valor predeterminado 2048
Last sector, +sectores or +size{K,M,G} (2048-2096889471, valor predeterminado 2096889471): +1G
Orden (m para obtener ayuda): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Número de partición (1-4, valor predeterminado 2):
Se está utilizando el valor predeterminado 2
Primer sector (2099200-2096889471, valor predeterminado 2099200):
Se está utilizando el valor predeterminado 2099200
Last sector, +sectores or +size{K,M,G} (2099200-2096889471, valor predeterminado 2096889471):
Se está utilizando el valor predeterminado 2096889471
Orden (m para obtener ayuda): p
Disk /dev/md0: 1073.6 GB, 1073607409664 bytes
2 heads, 4 sectors/track, 262111184 cylinders, 2096889472 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Identificador del disco: 0x552942f8
Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/md0p1 * 2048 2099199 1048576 83 Linux
/dev/md0p2 2099200 2096889471 1047395136 83 Linux
Orden (m para obtener ayuda): wq
¡Se ha modificado la tabla de particiones!
Llamando a ioctl() para volver a leer la tabla de particiones.
Se están sincronizando los discos.
root@earendil:/#
6.- Creamos o VG:
root@earendil:/# pvcreate /dev/md0p2
Physical volume "/dev/md0p2" successfully created
root@earendil:/# vgcreate EARENDIL_R1 /dev/md0p2
Volume group "EARENDIL_R1" successfully created
root@earendil:/# vgdisplay EARENDIL_R1
--- Volume group ---
VG Name EARENDIL_R1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 998,87 GiB
PE Size 4,00 MiB
Total PE 255711
Alloc PE / Size 0 / 0
Free PE / Size 255711 / 998,87 GiB
VG UUID ZUyOZJ-r3lM-MliE-lu4k-XUrI-mYUE-7smNxP
root@earendil:/#
6.- Creamos o LV
lvcreate -L9G -n Earendil-R1_System EARENDIL_R1
Logical volume "Earendil-R1_System" created
7.- Formateamos as partición para /boot e o LV para /
root@earendil:/# mkfs.ext2 /dev/md0p1
mke2fs 1.42.8 (20-Jun-2013)
Etiqueta del sistema de ficheros=
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
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=268435456
8 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
Allocating group tables: hecho
Escribiendo las tablas de nodos-i: hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho
root@earendil:/# mkfs.ext4 /dev/EARENDIL_R1/Earendil-R1_System
mke2fs 1.42.8 (20-Jun-2013)
Etiqueta del sistema de ficheros=
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
589824 inodes, 2359296 blocks
117964 blocks (5.00%) reserved for the super user
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=2415919104
72 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
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@earendil:/#
8.- Axustamos a configuración dos RAID do sistema
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
9.- Montamos as particións do sistema
root@earendil:/# mkdir /mnt/boot
root@earendil:/# mkdir /mnt/root
root@earendil:/# mount /dev/md0p1 /mnt/boot
root@earendil:/# mount /dev/EARENDIL_R1/Earendil-R1_System /mnt/root
10.- Axuste do arranque. Averiguamos os UUID con blkid
- /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>
UUID=be869c76-a526-4fd7-9033-7cf3f5974d68 / ext4 errors=remount-ro 0 1
UUID=403bcdd0-c77e-4a7c-816a-6a7d579b3353 none swap sw 0 0
UUID=5c287f2d-970b-4271-b941-bc01666ec61c /boot ext2 default 0 2
- Creamos unha entrada para grub en /etc/grub.d/06_migrate_to_raid
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Debian GNU/Linux, with Xen 4.1-amd64 and Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os --class xen {
insmod raid
insmod mdraid1x
insmod lvm
insmod part_msdos
insmod ext2
set root='(md0,1)'
search --no-floppy --fs-uuid --set=root 5c287f2d-970b-4271-b941-bc01666ec61c
echo 'Loading Xen 4.1-amd64 ...'
multiboot /xen-4.1-amd64.gz placeholder dom0_mem=1024M
echo 'Loading Linux ...'
module /vmlinuz-3.2.0-4-amd64 placeholder root=/dev/mapper/EARENDIL_R1-Earendil--R1_System ro quiet
echo 'Loading initial ramdisk ...'
module /initrd.img-3.2.0-4-amd64
}
- montamos o novo sistema raíz en /mnt e o activamos
mount /dev/EARENDIL_R1/Earendil-R1_System /mnt
mount /dev/md0p1 /mnt/boot
cp -dpRx / /mnt
mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
# Actualizamos ''grub'' con '''update-grub'''
update-grub
#Creamos un novo initrd con
update-initramfs -u -k all
#Instalamos '''grub''' nos novos discos
grub-install /dev/sda
grub-install /dev/sdb
grub-install /dev/sdc
reboot