Seguridad y disponibilidad: RAID por software y backup
diferencial con DAR usando GNU/Linux
Mauro Silvosa Rivera
[email protected]
Grupo de Usuarios y Programadores de Linux (GPUL)
2006-07-13 (Rev. 1)
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
1 / 32
Contenido
1 RAID por software usando GNU/Linux
Introducción
Instalación de un servidor usando RAID-1 por software
Ejemplo de uso de RAID-5 por software
2 Backup diferencial usando DAR
Introducción
Backup diferencial usando DAR
Recuperación de datos
3 Referencias
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
2 / 32
RAID por software usando GNU/Linux
Introducción
Contenido
1 ¿Qué es RAID?
2 Niveles 1 y 5 de RAID
3 Discos de reserva (spare disks)
4 Coste de las diferentes alternativas consideradas
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
3 / 32
RAID por software usando GNU/Linux
Introducción
¿Qué es RAID?
RAID: Redundant Array of Inexpensive Disks, posteriormente
conocido como Redundant Array of Independent Disks
http://en.wikipedia.org/wiki/RAID
RAID es un sistema que usa múltiples discos duros para compartir o
replicar la información a lo largo de esos discos.
Dependiendo de la versión de RAID elegida, RAID nos permite aumentar
la integridad de los datos, la tolerancia a fallos, el ancho de banda de
EE/SS o la capacidad de almacenamiento respecto a cada disco visto de
forma individual.
En su implementación original, la ventaja principal era la capacidad de
combinar varios discos de bajo coste y de tecnologías más antiguas en un
array que ofrecía rendimiento y capacidad de almacenamiento comparables
a los discos más caros de tecnología más moderna.
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
4 / 32
RAID por software usando GNU/Linux
Introducción
Niveles 1 y 5 de RAID
RAID-1 (mirror)
I Copia exacta de un conjunto de datos en dos o más discos
I Prevalece el rdto. de lectura frente a la capacidad de almacenamiento
RAID-5 (stripping)
I Trozea datos a nivel de bloque y calcula bloques de paridad que se
distribuyen por todos los discos del array
I Popular por su bajo coste de redundancia por Mbyte
I Mejor rendiento cuando se implementa con hardware
Figura: Organización de discos en modos 1 y 5 de RAID
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
5 / 32
RAID por software usando GNU/Linux
Introducción
Spare disks (discos de reserva)
Forman parte del array pero no están en uso hasta que uno de los que
sí lo están falla
En caso de fallo ocupan automáticamente el lugar del disco defectuoso
y comienzan a replicarse para sincronizarse con los datos del array
RAID-1 y RAID-5 admiten discos de spare
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
6 / 32
RAID por software usando GNU/Linux
Introducción
Coste de las diferentes alternativas consideradas
Consideraremos la implementación por software de RAID-1 y RAID-5
con y sin discos spare
Tipo
RAID-1
RAID-1+S
RAID-5
RAID-5+S
Controladoras Discos
1x44 EUR
2x44 EUR
2x44 EUR
2x44 EUR
EUR/GByte
Total
1,35 EUR/GByte
2x59 EUR 162 EUR
3x59 EUR 265 EUR
2,2 EUR/GByte
3x59 EUR 265 EUR 1,104 EUR/GByte
1,35 EUR/GByte
4x59 EUR 324 EUR
Cuadro: Coste de las diferentes alternativas
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
7 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Contenido
1
Instalación del sistema base
2 Recompilación del kernel
3 Creación de los arrays RAID-1 (todavía incompletos)
4 Preparación del sistema para arrancar desde los arrays RAID-1
5 Completar los arrays RAID-1 con el resto de discos
6 Últimos pasos y puesta en marcha
7 Probando el sistema
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
8 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Instalación del sistema base
Debian network installation disk (http://www.debian.org/CD/netinst)
Particionar el disco duro
Partición
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda5
/dev/sda6
/dev/sda7
Tipo
MD
Punto de montaje Tamaño
2 GBytes
/
Primary - Linux md0
512 MBytes Primary - swap md1
swap
Primary - Linux md2
30 MBytes
/boot
Logical - Linux md3
2 GBytes
/home
/tmp
1 GBytes
Logical - Linux md4
Logical - Linux md5
2 GBytes
/dat
Cuadro: Tabla de particiones definidas en el primer disco.
Intalar LILO como bootloader en MBR de /dev/sda (GRUB debería
funcionar, pero no lo probé nunca)
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
9 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Recompilación del kernel
El servidor montará todos los datos (incluidos /boot y /) en arrays
RAID.
Por tanto, el kernel debe tener integrado el soporte para RAID. No
sirve como módulo.
Importante no olvidarse del HW instalado: tarjetas SATA, SCSI,
vídeo, red, ...
Compilación del kernel
$ cd /usr/src/linux-source-2.6.15
$ make menuconfig
$ make-kpkg kernel-image
$ cd ..
$ dpkg -i kernel-image.deb
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
10 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Creación de los arrays RAID-1 (todavía incompletos)
Copia de la estructura de particiones del primer disco a los demás
$ sfdisk -d /dev/sda | sfdisk /dev/sdb
$ sfdisk -d /dev/sda | sfdisk /dev/sdc
Linux RAID autodetect: marcamos todo con tipo FD menos la
partición Extended
$ fdisk /dev/sdb
$ fdisk /dev/sdc
Creación de los arrays RAID-1
$ apt-get install mdadm
$ mdadm --create /dev/mdX --verbose
--level=1 --raid-devices=2
--spare-devices=1 missing /dev/sdbY missing
$ cat /proc/mdstat
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
11 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Creación de los arrays RAID-1... (2)
Creación de mdadm.conf
$ mdadm --detail --scan > /etc/mdadm/mdadm.conf
Creación de los sistemas de ficheros en los arrays
$ mkfs.ext3 /dev/mdX
$ mkfs.ext2 /dev/mdX
$ mkswap /dev/md1
Reboot
$ reboot
Reinicio no necesario...
Este reinicio no es necesario, pero es interesante hacerlo para confirmar
que todo va bien. Al terminar de reiniciar comprobamos el estado de los
arrays con $ cat /proc/mdstat y si todo va bien seguimos.
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
12 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Preparación del sistema para arrancar desde los arrays
Importante...
Es muy importante respetar el orden de estos pasos para que en el último
paso (replicación) todos los discos tengan los mismos datos.
1 Edición de /etc/lilo.conf
root = /dev/md0
2 Edición de /etc/fstab para que el sistema monte los arrays RAID en
lugar de los dispositivos físicos.
3 Replicación de los discos físicos en los arrays RAID
$ echo "Ejemplo para la partición raíz"
$ cd /
$ mount /dev/md0 /mnt
$ find . -xdev | cpio -pm /mnt
4 Reiniciamos el servidor para que se monte sobre los arrays.
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
13 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Completar los arrays RAID-1 con el resto de discos
1 Linux RAID autodetect para el primer disco.
$ fdisk /dev/sda
2 Añadir el primer disco al array
$ mdadm --manage /dev/mdX --add /dev/sdaY
3 Añadir el disco de spare al array
$ mdadm --manage /dev/mdX --add /dev/sdcY
Nota...
Los dos últimos pasos se podrían haber integrado en una sóla línea de
comando:
$ mdadm --manage /dev/mdX --add /dev/sdaY /dev/sdcY
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
14 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Últimos pasos y puesta en marcha
1 Duplicación del MBR:
I Editamos /etc/lilo.conf para que refleje boot=/dev/md2 y
raid-extra-boot=mbr
I Ejecutamos LILO para aplicar los cambios: lilo -v
2 Reinicio del sistema
Reinicio no necesario...
Este reinicio tampoco es necesario, pero de nuevo vuelve a ser bueno
hacerlo para ver que todo va bien y de comprobar que el sistema arranca.
Si esta prueba funciona estaríamos en condiciones de hacer otras pruebas
más duras, como las que se describirán más adelante.
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
15 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Probando el sistema
Primera prueba
I Marcar un disco (no spare) como faulty (forzar el fallo). Esto debería
hacer que entrase automáticamente el disco spare.
$ mdadm --manage /dev/md4 --set-faulty /dev/sdb6
I Quitar el disco arcado como faulty
$ mdadm --manage /dev/md4 --remove /dev/sdb6
I Marcar de nuevo un disco como faulty (forzar el fallo). Esto debería
hacer que el array quedase sólo con un disco útil.
$ mdadm --manage /dev/md4 --set-faulty /dev/sdc6
I Volver a quitar el disco que ha fallado
$ mdadm --manage /dev/md4 --remove /dev/sdc6
I Añadir de nuevo al volumen dos discos para dejarlo en un estado de
más garantías frente a fallos.
$ mdadm --manage /dev/md4 --re-add /dev/sdb6
--add /dev/sdc6
III Talleres de C.P.S (GPUL)
Seguridad y disponibilidad
2006-07-13 (Rev. 1)
16 / 32
RAID por software usando GNU/Linux
Instalación de un servidor usando RAID-1 por software
Probando el sistema
Segunda prueba
I Shutdown
I Retirar el primer disco
I Arrancar de nuevo
Si todo está bien hecho el sistema debería arrancar sin problemas
usando el sector de arranque de otro de los discos.
Tercera prueba
I Shutdown
I Insertar de nuevo el
Comentarios de: Seguridad y disponibilidad: RAID por software y backup diferencial con DAR usando GNU/Linux (0)
No hay comentarios