Migración a RAID 1 en ''Quente''

De Wiki do Ciclo ASIR do IES de Rodeira

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