a_raid

Anuncio
Compartiendo conocimiento...
Guía para mover a raid por software una instalación de
CentOS
(c) 2014 Xavier Jiménez
Aprovechando la instalación básica de Asterisk que documentamos en la entrada anterior, vamos a
retocarla para disponer de un raid1 por software. Esto va a ofrecernos una mayor garantía contra
pérdida de datos. El objetivo será, sin perder información, añadir un segundo disco y migrar el
entorno para que se apoye en el raid de Linux MD.
Primero necesitaremos instalar el software de administración para raids, usaremos rsync para la
copia de los datos.
# yum install mdadm rsync
En este ejemplo el primer disco es /dev/sda y el segundo /dev/sdb
El primer paso es guardar la tabla de particiones de sda
# sfdisk -d /dev/sda > sda_table
y después la cargamos en sdb
# sfdisk --force /dev/sdb < sda_table
Con esto logramos replicar las mismas particiones y tamaños de sda en sdb, lo que nos prepara el
entorno y solo quedará entrar en sdb para cambiar el tipo de partición que usamos.
Las particiones por defecto de CentOS son :
sda1 : Sistema Linux (83) de arranque que contiene el kernel, el initramfs y las configuraciones de
grub
sda2 : Unidad lvm (8e) que contiene una partición para swap y la partición de root
Veamos como está formado el LVM. Primero inspeccionamos los datos de los grupos de volumen
[root@asterisk ~]# vgdisplay
--- Volume group --VG Name
vg_asterisk
System ID
Format
lvm2
Metadata Areas
1
Metadata Sequence No 3
VG Access
read/write
VG Status
resizable
MAX LV
0
Cur LV
2
Open LV
2
Max PV
0
Cur PV
1
Act PV
1
VG Size
7,51 GiB
PE Size
4,00 MiB
Total PE
1922
Alloc PE / Size
1922 / 7,51 GiB
Free PE / Size
0/0
VG UUID
DK85W0-Ro74-XfUS-LiwB-a6A2-QBlM-RtxbLn
Como podemos apreciar, hay definido un solo grupo que se llama vg_asterisk. Vemos los
volúmenes lógicos que contiene.
[root@asterisk ~]# lvscan
ACTIVE
'/dev/vg_asterisk/lv_root' [6,71 GiB] inherit
ACTIVE
'/dev/vg_asterisk/lv_swap' [816,00 MiB] inherit
Aquí vemos los dos volúmenes que comentábamos y contiene sda2, lv_root ( contiene la ríz del
sistema operativo “/”, o root) y lv_swap ( contiene el espacio que destinamos a swap )
El objetivo es replicar la estructura de particiones, pero en vez de que el disco contenga una
particion del tipo linux (83) y otra del tipo lvm (8e) las dos serán del tipo raid (fd)
Primero vamos a transformar las particiones de /dev/sdb
[root@asterisk ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Orden (m para obtener ayuda): p
Disco /dev/sdb: 8589 MB, 8589934592 bytes
16 heads, 63 sectors/track, 16644 cylinders
Units = cilindros of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disposit. Inicio Comienzo
Fin Bloques Id Sistema
/dev/sdb1 *
3
1018 512000 83 Linux
La partición 1 no termina en un límite de cilindro.
/dev/sdb2
1018
16645 7875584 8e Linux LVM
Orden (m para obtener ayuda):
Ejecutamos la orden t que permite cambiar el tipo de partición
Orden (m para obtener ayuda): t
Número de partición (1-4): 1
Código hexadecimal (escriba L para ver los códigos): fd
Se ha cambiado el tipo de sistema de la partición 1 por fd (Linux raid autodetect)
Repetimos para la partición 2
Orden (m para obtener ayuda): t
Número de partición (1-4): 12
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)
Guardamos los cambios en el disco
Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!
Llamando a ioctl() para volver a leer la tabla de particiones.
Se están sincronizando los discos.
Vamos a crear el primer disco de raid, que se compondrá por /dev/sda1 y /dev/sdb1. En este
momento no nos conviene usar /dev/sda1, así que crearemos un disco de raid (/dev/md0) degradado,
que dispondrá de un solo miembro, en este caso /dev/sdb1.
# mdadm -C /dev/md0 -l 1 -n 2 missing /dev/sdb1 --metadata=0.90 --name=0
mdadm: array /dev/md0 started.
Formatemos la parición md para su uso con extended 4
# mkfs.ext4 /dev/md0
Cremos la partición md-raid que va a contener el lvm
# mdadm -C /dev/md1 -l 1 -n 2 missing /dev/sdb2 --name=1
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/md1 started.
Cremos un grupo de volúmenes LVM sobre la segunda partición md-raid
# vgcreate vg-raid /dev/md1
Cremos las unidades lógicas dentro del nuevo grupo de volúmenes
# lvcreate -L 816 -n lv_swap vg-raid
# lvcreate -L 6,70G -n lv_root vg-raid
Preparamos el volumen lógico lv_swap para contener la swap
# mkswap /dev/vg-raid/lv_swap
mkswap: /dev/vg-raid/lv_swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 835580 KiB
no label, UUID=bf8a5db3-ad6f-44e5-ae6e-8fe41c927eec
Formateamos lv_root para que contenga un sistema de ficheros extended 4
# mkfs.ext4 /dev/vg-raid/lv_root
mke2fs 1.41.12 (17-May-2010)
Etiqueta del sistema de ficheros=
Tipo de SO: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
439776 nodos-i, 1757184 bloques
87859 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=1799356416
54 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8144 nodos-i por grupo
Respaldo del superbloque guardado en los bloques:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Escribiendo las tablas de nodos-i: hecho
Creating journal (32768 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho
Este sistema de ficheros se revisará automáticamente cada 26 montajes o
180 días, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.
Editamos /boot/grub/grub.conf para quitar las referencias a RD_NO_DM y apuntar root al LVM
que hemos creado dentro del raid. En nuestro caso nos encontramos :
root=/dev/mapper/vg_asterisk-lv_root
y lo cambiamos por
root=/dev/mapper/vg—raid-lv_root
Cambiamos :
rd_LVM_LV=vg-asterisk/lv_root
por
rd_LVM_LV=vg-raid/lv_root
Cambiamos :
rd_LVM_LV=vg-asterisk/lv_swap
por
rd_LVM_LV=vg-raid/lv_swap
El contexto de arranque dentro de grub queda finalmente :
title CentOS (2.6.32-431.11.2.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.11.2.el6.x86_64 ro root=/dev/mapper/vg--raid-lv_root rd_NO_LUKS rd_LVM_LV=vg-raid/lv_root
KEYBOARDTYPE=pc KEYTABLE=es rd_LVM_LV=vg-raid/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto
LANG=es_ES.UTF-8
initrd /initramfs-2.6.32-431.11.2.el6.x86_64.img
Editamos /etc/fstab para que coincida con las particiones que hemos definido dentro del raid :
/dev/mapper/vg--raid-lv_root
/dev/md0
/dev/mapper/vg--raid-lv_swap
/
ext4 defaults
/boot ext4 defaults
swap swap defaults
11
12
00
Generamos el fichero de configuración para los raid
# mdadm --examine --scan > /etc/mdadm.conf
Regeneramos el ramfilesystem para que incluya la detección de raid
# mv /boot/initramfs-2.6.32-431.11.2.el6.x86_64.img /boot/initramfs-2.6.32-431.11.2.el6.x86_64.img_bkp
# dracut /boot/initramfs-2.6.32-431.11.2.el6.x86_64.img 2.6.32-431.11.2.el6.x86_64
Ya podemos proceder a la copia de los datos. Primero vamos a preparar un entorno para no
confundirnos durante la sincronización de los datos.
# cd /mnt
# mkdir src
# mkdir dst
Para sincronizar los datos de /dev/sda1 (boot) con el nuevo disco de raid (md0) primero
montamos /dev/sda1 sobre /mnt/src y montamos sobre /dev/md0 /mnt/dst
# mount /dev/sda1 /mnt/src
# mount /dev/md0 /mnt/dst
Sincronizamos los datos
# rsync -avH --progress /mnt/src/ /mnt/dst
# umount /mnt/src
# umount /mnt/dst
# umount /boot
Montamos / (root) sobre /mnt/src
# mount -o bind / /mnt/src
Montamos lv_root sobre
# mount /dev/vg-raid/lv_root /mnt/dst
Sincronizamos los datos
# rsync -avH -- progress /mnt/src/ /mnt/dst
Cuando se complete la copia estaremos en situación de reiniciar el equipo y arrancar desde el raid,
aún degradado. Si tenemos activo selinux es importante crear el fichero /.autorelabel
# touch /.autorelabel
Reiniciamos con
# reboot
Paramos el volgroup de origen, en nuestro caso vg_asterisk :
# vgchange -a n vg_asterisk
Cambiamos el tipo de partición en el disco original a fd y añadimos las particiones al raid como
hicimos anteriormente.
# fdisk /dev/sda
Orden (m para obtener ayuda): t
Número de partición (1-4): 1
Código hexadecimal (escriba L para ver los códigos): fd
Se ha cambiado el tipo de sistema de la partición 1 por fd (Linux raid autodetect)
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 1 por fd (Linux raid autodetect)
Orden (m para obtener ayuda): w
Añadimos la partición de boot disco al raid
# mdadm - - add /dev/md0 /dev/sda1
Añadimos la partición de datos al raid
# mdadm - - add /dev/md1 /dev/sda2
Instalamos grub en los discos del raid
# grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
Descargar