Diferencia entre revisiones de «RAID y LVM en Linux»

De Wiki de BandaAncha.eu
Saltar a: navegación, buscar
(Instalar las herramientas necesarias)
(RAID1 en un sistema ya instalado)
 
(No se muestran 12 ediciones intermedias de 8 usuarios)
Línea 1: Línea 1:
 +
{| class="wikitable" align="right" cellpadding="4"
 +
|+ '''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:
Línea 5: Línea 17:
 
* '''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.
  
9IqV2I flHsdt83Nncfooi61t
+
=== Instalar las herramientas necesarias ===
 +
sudo apt-get install mdadm
 +
sudo apt-get install lvm2
  
 
=== Tabla de particiones inicial===
 
=== Tabla de particiones inicial===
Línea 15: Línea 29:
 
  /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) 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
+
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.
  
 
----
 
----
Línea 30: Línea 44:
 
  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''' sera el nombre del RAID que estamos creando''
+
'''''--create /dev/md0''' será el nombre del RAID que estamos creando''
  
'''''--level=1''' le indicamos que tipo de RAID estamos creando, en este caso RAID1''
+
'''''--level=1''' le indicamos qué tipo de RAID estamos creando, en este caso RAID1''
  
'''''--raid-devices=2''' el numero de dispositivos que forman el RAID''
+
'''''--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''
 
'''''/dev/sda3 /dev/sdb1...''' la lista de dispositivos que forma parte del RAID''
Línea 102: Línea 116:
  
 
== RAID1 en un sistema ya instalado ==
 
== RAID1 en un sistema ya instalado ==
Este apartado te servirá para convertir un sistema instalado en un solo disco en un RAID1.
+
Este apartado te servirá para convertir un sistema instalado en un solo disco en un RAID1.
Tendra tanto el directorio / como la swap en espejo, por lo que si falla uno de los discos el sistema seguira funcionando sin problemas.
+
Tendrá tanto el directorio / como la swap en espejo, por lo que si falla uno de los discos el sistema seguirá funcionando sin problemas.
  
Esta realizado a partir de [http://www.howtoforge.com/software-raid1-grub-boot-debian-etch este manual (en inglés)]
+
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)
+
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, 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''
+
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/md0 --level=1 --raid-disks=2 missing /dev/sdb1
 
  sudo mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
 
  sudo mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
  
Ahora formateamos los RAID que acabamos de crear
+
Ahora formateamos los RAID que acabamos de crear:
 
  sudo mkfs.jfs /dev/md0
 
  sudo mkfs.jfs /dev/md0
 
  sudo mkswap /dev/md1
 
  sudo mkswap /dev/md1
Línea 120: Línea 134:
 
  mdadm --examine --scan
 
  mdadm --examine --scan
  
Que nos devuelve informacion de nuestro RAID, estas lineas las deberemos añadir al final del fichero mdadm.conf
+
Que nos devuelve información de nuestro RAID:
sudo gedit /etc/mdadm/mdadm.conf
 
  
 
  ...
 
  ...
Línea 127: Línea 140:
 
  ARRAY /dev/md1 level=raid1 num-devices=2 UUI...
 
  ARRAY /dev/md1 level=raid1 num-devices=2 UUI...
  
Y los montamos, primero creamos el punto de montaje:
+
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/md0
 
  sudo mkdir /mnt/md1
 
  sudo mkdir /mnt/md1
Línea 134: Línea 150:
 
  sudo mount /dev/md1 /mnt/md1
 
  sudo mount /dev/md1 /mnt/md1
  
Ahora modificamos el archivo ''/etc/fstab'' para que nos monte estas particiones como RAIZ y SWAP
+
Ahora modificamos el archivo ''/etc/fstab'' para que nos monte estas particiones como RAIZ y SWAP.
Modificamos estas lineas:
+
Cambiamos estas líneas:
 
  /dev/sda1    /              jfs        defaults,errors=remount-ro    0      1
 
  /dev/sda1    /              jfs        defaults,errors=remount-ro    0      1
 
  /dev/sda2    none            swap        sw                      0      0
 
  /dev/sda2    none            swap        sw                      0      0
Línea 144: Línea 160:
  
  
Tambien tenemos que modificar el fichero ''/etc/mtab'', hacemos lo mismo, sustituimos dentro del fichero ''/dev/sda1'' por ''/dev/md0''
+
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 arraque el sistema desde la particion RAID:
+
Editamos el menu del grub para que arranque el sistema desde la partición RAID:
 
  sudo gedit /boot/grub/menu.lst
 
  sudo gedit /boot/grub/menu.lst
  
Línea 266: Línea 282:
  
 
[[Categoría:Linux]]
 
[[Categoría:Linux]]
 +
[[Categoría:Docs]]

Revisión actual del 20:12 4 dic 2015

Sobre este documento
Tipo Manual (How To)
Categoria Linux
Plataforma All GNU/Linux
Dificultad TuxTuxTuxTux

En esta guía vamos a explicar como configurar un RAID y un LVM para un sistema GNU/Linux. 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.
  • 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.

Instalar las herramientas necesarias[editar]

sudo apt-get install mdadm
sudo apt-get install lvm2

Tabla de particiones inicial[editar]

/dev/sda1 /               jfs    10GB  ---> Sistema Operativo
/dev/sda2 none            swap   1GB   ---> Swap
/dev/sda3 /media/hda3     jfs    15GB  ---> RAID
/dev/sda4 /media/hda4     jfs    125GB ---> LVM
/dev/sdb1 /media/hdc1     jfs    15GB  ---> RAID
/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 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.


RAID[editar]

Antes de empezar debemos colocar a las particiones que van a formar parte del RAID el flag fd (linux raid auto). Esto se puede hacer desde fdisk o desde gparted. Las 2 particiones que van a formar nuestro RAID deben ser del mismo tamaño. Para crear el RAID las particiones tienen que estar desmontadas:

umount /dev/sda3
umount /dev/sdb1

Luego creamos el RAID en /dev/md0

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)

sudo mkfs.jfs /dev/md0
sudo mkdir /media/Personal
sudo mount /dev/md0 /media/Personal

Con esto ya tendríamos el RAID funcionando, solo queda modificar el fichero /etc/fstab para que no monte las particiones /media/hda3 y /media/hdc1 y nos monte la partición /media/Personal


LVM[editar]

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:

umount /dev/sda4
umount /dev/sdb2

Con el comando pvcreate marcamos los volúmenes para meterlos en el LVM:

sudo pvcreate /dev/sda4
sudo pvcreate /dev/sdb2

Y después creamos el VG (Grupo de Volúmenes) al que hemos llamado lvm

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. 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

sudo vgdisplay lvm

Antes de crear el LV debemos cargar el modulo Device mapper driver:

sudo modprobe dm-mod 

Ahora creamos el LV:

sudo lvcreate -n Datos -l 100%VG  lvm

-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 Esta opción nos permitiría especificar el tamaño en Kb, Mb, Gb del LV, por ejemplo -L250G (crea un LV de 250GB)

Por ultimo formateamos, montamos y listo (el LV lo crea en la ruta /dev/lvm):

sudo mkfs.jfs /dev/lvm/Datos
sudo mkdir /media/Datos
sudo mount /dev/lvm/Datos /media/Datos

También seria necesario modificar el fichero /etc/fstab para que no monte las particiones /media/hda4 y /media/hdc2 y nos monte la partición /media/Datos

Aumentar el LVM[editar]

Si añadimos mas discos al LVM podemos extender de tamaño todos los volúmenes lógicos que tengamos creados, primero creamos el nuevo dispositivo que va a añadirse al LVM (recuerda que debe tener el flag 8e):

sudo pvcreate /dev/dispositivo_a_añadir

Ahora añadimos este disco al VG, con lo que ya disponemos de mas espacio para repartir entre los volúmenes lógicos (/dev/lvm/Datos)

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

lvextend -L+20G /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[editar]

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 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[editar]

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.