Edición de «RAID y LVM en Linux»

Saltar a: navegación, buscar

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición en estas condiciones. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual Tu texto
Línea 1: Línea 1:
{| class="wikitable" align="right" cellpadding="4"
+
== Introducción ==
|+ '''Sobre este documento'''
 
|-
 
| bgcolor="#ddf"|'''Tipo''' || Manual (How To)
 
|-
 
| bgcolor="#ddf"|'''Categoria''' || [[:Categoría:Linux|Linux]]
 
|-
 
| bgcolor="#ddf"|'''Plataforma''' || All GNU/Linux
 
|-
 
| bgcolor="#ddf"|'''Dificultad''' || [[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]][[Imagen:Micro_tux.png|Tux]]
 
|-
 
|}
 
 
En esta guía vamos a explicar como configurar un [http://es.wikipedia.org/wiki/RAID RAID] y un [http://es.wikipedia.org/wiki/LVM LVM] para un sistema GNU/Linux.
 
En esta guía vamos a explicar como configurar un [http://es.wikipedia.org/wiki/RAID RAID] y un [http://es.wikipedia.org/wiki/LVM LVM] para un sistema GNU/Linux.
 
Partiendo de dos discos duros montaremos el siguiente sistema:
 
Partiendo de dos discos duros montaremos el siguiente sistema:
  
 
* '''RAID tipo 1''' que nos permitirá mantener los datos mas críticos en dos particiones en espejo, en el caso de fallar uno de los discos no perderíamos datos.
 
* '''RAID tipo 1''' que nos permitirá mantener los datos mas críticos en dos particiones en espejo, en el caso de fallar uno de los discos no perderíamos datos.
 +
 
* '''LVM''' que nos permite unir varios discos en un volumen lógico, si nos quedamos sin espacio podemos añadir otro disco duro y unir este espacio al LVM en caliente.
 
* '''LVM''' que nos permite unir varios discos en un volumen lógico, si nos quedamos sin espacio podemos añadir otro disco duro y unir este espacio al LVM en caliente.
  
Línea 29: Línea 19:
 
  /dev/sdb2 /media/hdc2    jfs    45GB  ---> LVM
 
  /dev/sdb2 /media/hdc2    jfs    45GB  ---> LVM
  
El primer disco (sda) lo tenemos dividido en 4 particiones: raiz, swap, una para el RAID (/media/hda3) y el espacio restante para añadir al LVM (/media/hda4).
+
El primer disco (sda) lo tenemos dividido en 4 particiones: raiz, swap, una para el RAID (/media/hda3) y el espacio restante para añadir al LVM (/media/hda4)
EL segundo disco (sdb) está dividido en dos particiones, la primera (media/hdc1) será el otro disco del RAID y el espacio restante (/media/hdc2) lo uniremos al LVM.
+
EL segundo disco (sdb) esta dividido en dos particiones, la primera (media/hdc1) sera el otro disco del RAID y el espacio restante (/media/hdc2) lo uniremos al LVM
  
 
----
 
----
 +
  
 
== RAID ==
 
== RAID ==
Línea 43: Línea 34:
 
Luego creamos el RAID en /dev/md0
 
Luego creamos el RAID en /dev/md0
 
  sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb1
 
  sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb1
 
'''''--create /dev/md0''' será el nombre del RAID que estamos creando''
 
 
'''''--level=1''' le indicamos qué tipo de RAID estamos creando, en este caso RAID1''
 
 
'''''--raid-devices=2''' el número de dispositivos que forman el RAID''
 
 
'''''/dev/sda3 /dev/sdb1...''' la lista de dispositivos que forma parte del RAID''
 
 
  
 
Formateamos el RAID y lo montamos (En mi caso el sistema de archivos sera jfs)
 
Formateamos el RAID y lo montamos (En mi caso el sistema de archivos sera jfs)
Línea 63: Línea 45:
  
 
== LVM ==
 
== LVM ==
Las particiones que formaran el LVM tienen que tener el flag 8e (Linux VM).
+
Las particiones que formaran el LVM tienen que tener el flag 8e (Linux VM)
 
Las particiones que van a formar el LVM también deben estar desmontadas:
 
Las particiones que van a formar el LVM también deben estar desmontadas:
 
  umount /dev/sda4
 
  umount /dev/sda4
Línea 72: Línea 54:
 
  sudo pvcreate /dev/sdb2
 
  sudo pvcreate /dev/sdb2
  
Y después creamos el VG (Grupo de Volúmenes) al que hemos llamado '''lvm'''
+
Y después creamos el VG (Grupo de Volúmenes)
 
  sudo vgcreate lvm /dev/sda4 /dev/sdb2
 
  sudo vgcreate lvm /dev/sda4 /dev/sdb2
  
 
Ahora añadimos los volúmenes lógicos (LV) dentro del LVM... es como si hiciéramos particiones del Grupo de volúmenes.
 
Ahora añadimos los volúmenes lógicos (LV) dentro del LVM... es como si hiciéramos particiones del Grupo de volúmenes.
En este caso solo creare una partición a la que asignare todo el espacio.
+
En este caso solo creare una partición a la que asignare todo el espacio.  
 
 
 
Si queremos crear mas particiones para saber de cuanto espacio disponemos podemos ejecutar el comando vg display que nos devuelve información acerca del lvm
 
Si queremos crear mas particiones para saber de cuanto espacio disponemos podemos ejecutar el comando vg display que nos devuelve información acerca del lvm
 
  sudo vgdisplay lvm
 
  sudo vgdisplay lvm
  
Antes de crear el LV debemos cargar el modulo '''Device mapper driver''':
+
Antes de crear el LV debemos cargar el modulo Device mapper driver:
 
  sudo modprobe dm-mod  
 
  sudo modprobe dm-mod  
  
Línea 88: Línea 69:
  
 
'''''-n Datos''' sera el nombre del LV''
 
'''''-n Datos''' sera el nombre del LV''
 
 
'''''-l''' Puedes especificar el tamaño en porcentaje del VG, en este caso he dejado para el LV el 100% del VG, ya que quiero que todo aparezca como un unico disco.''
 
'''''-l''' Puedes especificar el tamaño en porcentaje del VG, en este caso he dejado para el LV el 100% del VG, ya que quiero que todo aparezca como un unico disco.''
 
 
'''''-L''' Esta opción nos permitiría especificar el tamaño en Kb, Mb, Gb del LV, por ejemplo -L250G (crea un LV de 250GB)''
 
'''''-L''' Esta opción nos permitiría especificar el tamaño en Kb, Mb, Gb del LV, por ejemplo -L250G (crea un LV de 250GB)''
  
Línea 107: Línea 86:
 
  vgextend lvm /dev/dispositivo_a_añadir
 
  vgextend lvm /dev/dispositivo_a_añadir
  
Por (pen)último repartimos este espacio según nuestras necesidades, por ejemplo aumentamos el tamaño de /media/Datos en 20GB procedentes del dispositivo que acabamos de añadir
+
Por ultimo repartimos este espacio según nuestras necesidades, por ejemplo aumentamos el tamaño de /media/Datos en 20GB procedentes del dispositivo que acabamos de añadir
  lvextend -L+20G /dev/lvm/Datos /dev/dispositivo_a_añadir
+
  lvextend -L20G /dev/lvm/Datos /dev/dispositivo_a_añadir
 
 
Finalmente, después de haber extendido el volumen lógico es necesario aumentar el tamaño del sistema de ficheros, para que todo encaje. Este procedimiento será distinto en funcion del sistema de ficheros que usemos. En el ejemplo siguiente, se hace lo necesario para JFS:
 
mount -o remount,resize /media/datos
 
 
 
----
 
 
 
== RAID1 en un sistema ya instalado ==
 
Este apartado te servirá para convertir un sistema instalado en un solo disco en un RAID1.
 
Tendrá tanto el directorio / como la swap en espejo, por lo que si falla uno de los discos el sistema seguirá funcionando sin problemas.
 
 
 
Está realizado a partir de [http://www.howtoforge.com/software-raid1-grub-boot-debian-etch este manual (en inglés)]
 
 
 
Tenemos un sistema ya instalado con ''/dev/sda1'' para / y ''/dev/sda2'' para swap. En el otro disco creamos dos particiones, ''/dev/sdb1'' del mismo tamaño que ''/dev/sda1'' y ''/dev/sdb2'' para swap del mismo tamaño que ''/dev/sda2'' y marcamos las dos particiones creadas con el flag de RAID (fd).
 
 
 
Creamos dos dispositivos de RAID para el sistema de archivos y para la swap. Estos RAID los crearemos en modo degradado (con un solo disco), ya que de momento solo añadiremos al RAID los discos que hemos formateado, por lo que las entradas que corresponden al disco /dev/sda las dejamos en ''missing''
 
sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
 
sudo mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
 
 
 
Ahora formateamos los RAID que acabamos de crear:
 
sudo mkfs.jfs /dev/md0
 
sudo mkswap /dev/md1
 
 
 
Tenemos que modificar el fichero ''/etc/mdadm/mdadm.conf'' para lo que ejecutamos
 
mdadm --examine --scan
 
 
 
Que nos devuelve información de nuestro RAID:
 
 
 
...
 
ARRAY /dev/md0 level=raid1 num-devices=2 UUI...
 
ARRAY /dev/md1 level=raid1 num-devices=2 UUI...
 
 
 
Las líneas anteriores las deberemos añadir al final del fichero mdadm.conf
 
sudo gedit /etc/mdadm/mdadm.conf
 
 
 
Y los montamos después de crear el punto de montaje:
 
sudo mkdir /mnt/md0
 
sudo mkdir /mnt/md1
 
 
 
sudo mount /dev/md0 /mnt/md0
 
sudo mount /dev/md1 /mnt/md1
 
 
 
Ahora modificamos el archivo ''/etc/fstab'' para que nos monte estas particiones como RAIZ y SWAP.
 
Cambiamos estas líneas:
 
/dev/sda1    /              jfs        defaults,errors=remount-ro    0      1
 
/dev/sda2    none            swap        sw                      0      0
 
 
 
Por estas:
 
/dev/md0    /              jfs        defaults,errors=remount-ro    0      1
 
/dev/md1    none            swap        sw                      0      0
 
 
 
 
 
También tenemos que modificar el fichero ''/etc/mtab'', hacemos lo mismo, sustituimos dentro del fichero ''/dev/sda1'' por ''/dev/md0''
 
 
 
Editamos el menu del grub para que arranque el sistema desde la partición RAID:
 
sudo gedit /boot/grub/menu.lst
 
 
 
Tenemos que duplicar las lineas que nos indica de donde arrancar
 
title        Ubuntu 8.04, kernel 2.6.24-17-generic
 
root        (hd0,0)
 
kernel        /boot/vmlinuz-2.6.24-17-generic root=/dev/sda1 ro quiet splash
 
initrd        /boot/initrd.img-2.6.24-17-generic
 
quiet
 
 
 
Y modificamos el primero para que apunte a ''/dev/md0'' en el disco ''(hd1,0)''.
 
El segundo lo dejamos apuntando a nuestra particion raiz actual por si no arranca correctamente desde ''/dev/md0''
 
title        Ubuntu 8.04, kernel 2.6.24-17-generic
 
root        '''(hd1,0)'''
 
kernel        /boot/vmlinuz-2.6.24-17-generic root='''/dev/md0''' ro quiet splash
 
initrd        /boot/initrd.img-2.6.24-17-generic
 
quiet
 
 
title        Ubuntu 8.04, kernel 2.6.24-17-generic
 
root        (hd0,0)
 
kernel        /boot/vmlinuz-2.6.24-17-generic root=/dev/sda1 ro quiet splash
 
initrd        /boot/initrd.img-2.6.24-17-generic
 
quiet
 
 
 
Ahora actualizamos el ramdisk:
 
sudo update-initramfs -u
 
 
 
Ya solo nos quedaria copiar todos los datos de / a la nueva particion desde la que va a arrancar ahora:
 
sudo cp -dpRx / /mnt/md0
 
 
 
Tenemos que configurar correctamente grub en los dos discos:
 
sudo grub
 
 
 
grub> root (hd1,0)
 
grub> setup (hd1)
 
 
grub> root (hd0,0)
 
grub> setup (hd0)
 
 
 
Ahora reiniciamos la maquina y arrancara desde el RAID, que esta funcionando en modo degradado ya que solo dispone de un disco.
 
Lo podemos ver con el siguiente comando, la particion ''/dev/md0'' debe estar montada en /
 
df -h
 
 
 
Ahora que hemos conseguido arrancar el sistema desde el segundo disco es hora de preparar las particiones del primer disco para añadirlo al RAID. Ponemos el flag de RAID (fd) a las particiones ''/dev/sda1'' y ''/dev/sda2'' y podemos añadir ''/dev/sda1'' y ''/dev/sda2'' a su RAID correspondiente
 
sudo mdadm --add /dev/md0 /dev/sda1
 
sudo mdadm --add /dev/md1 /dev/sda2
 
 
 
Si compruebas ahora el fichero ''/proc/mdstat'' veras que se esta sincronizando el RAID, hay que esperar hasta que finalice:
 
more /proc/mdstat
 
 
 
Personalities : [raid1]
 
md2 : active raid1 sda1[2] sdb1[1]
 
      8702093 blocks [2/1] [_U]
 
      [=====>...............]  recovery = 37.3% (3245881/8702093) finish=2.4min speed=67433K/sec
 
 
md1 : active raid1 sda2[0] sdb2[1]
 
      197920 blocks [2/2] [UU]
 
 
 
Ahora ya lo tenemos correctamente sincronizado:
 
Personalities : [raid1]
 
md2 : active raid1 sda1[0] sdb1[1]
 
      8702093 blocks [2/2] [UU]
 
 
md1 : active raid1 sda2[0] sdb2[1]
 
      197920 blocks [2/2] [UU]
 
 
 
 
 
Volvemos a modificar el fichero ''/etc/mdadm/mdadm.conf'', tenemos que eliminar las lineas que habiamos añadido antes y sustituirlas por las que nos devuelve ahora la ejecucion del comando:
 
sudo mdadm --examine --scan
 
 
 
...
 
ARRAY /dev/md0 level=raid1 num-devices=2 UUI...
 
ARRAY /dev/md1 level=raid1 num-devices=2 UUI...
 
 
 
Debemos modificar de nuevo el grub para que la entrada que apunta todavia a ''/dev/sda1'' apunte a ''/dev/md0'' en el disco ''(hd0,0)''
 
sudo gedit /boot/grub/menu.lst
 
 
 
title        Ubuntu 8.04, kernel 2.6.24-17-generic
 
root        (hd1,0)
 
kernel        /boot/vmlinuz-2.6.24-17-generic root=/dev/md0 ro quiet splash
 
initrd        /boot/initrd.img-2.6.24-17-generic
 
quiet
 
 
title        Ubuntu 8.04, kernel 2.6.24-17-generic
 
root        (hd0,0)
 
kernel        /boot/vmlinuz-2.6.24-17-generic root=''/dev/md0'' ro quiet splash
 
initrd        /boot/initrd.img-2.6.24-17-generic
 
quiet
 
 
 
Con esto el sistema arrancara por defecto desde el disco hd1 y en el caso de que este disco falle deberemos indicarle manuelmente que arranque desde la otra particion.
 
Para que el sistema arranque automaticamente desde el segundo disco si falla el primero debemos añadir '''fallback''' justo debajo de '''default''' en el fichero ''/boot/grub/menu.lst''
 
...
 
default        0
 
fallback        1
 
...
 
 
 
O sea, que arranque por defecto de la entrada 0 (la primera del listado) y en caso de error que arranque de la entrada 1 (la segunda del listado).
 
 
 
Tambien hay que modificar la linea que aparece como kopt:
 
# kopt=root=/dev/md0 ro
 
 
 
Esta linea aparece comentada, no hay que descomentarla, al cargar grub la ignora, pero es necesaria para generar la configuracion de grub.
 
''NOTA: En esta misma linea podrias pasar parametros adicionales al kernel, por ejemplo: (# kopt=root=/dev/md0 ro noapic)''
 
 
 
Volvemos a actualizar el ramdisk:
 
sudo update-initramfs -u
 
 
 
Y finalmente reiniciamos:
 
sudo reboot
 
 
 
=== Comprobación Final ===
 
Ahora el sistema debe ser capaz de arrancar desde cualquiera de los dos discos aunque falle uno de ellos, puedes hacer pruebas desconectando uno de los discos para ver si todo sigue funcionando correctamente.
 
Si no quieres abrir el ordenador puedes simular un fallo de discos:
 
 
 
sudo mdadm --manage /dev/md0 --fail /dev/sdb1
 
sudo mdadm --manage /dev/md0 --remove /dev/sdb1
 
 
 
Reinicias y ahora el equipo debera arrancar con el RAID en modo degradado.
 
 
 
[[Categoría:Linux]]
 
[[Categoría:Docs]]
 

Ten en cuenta que todas las contribuciones a Wiki de BandaAncha.eu se consideran publicadas bajo la Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 (véase Wiki de BandaAncha.eu:Derechos de autor para más información). Si no deseas que las modifiquen sin limitaciones y las distribuyan libremente, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre. ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar | Ayuda de edición (se abre en una ventana nueva)