Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Linux: Cómo crear un RAID lógico en Linux Ubuntu 8.04 Hardy Heron
Linux


Explicamos paso a paso todos los comandos de Linux necesarios para crear un RAID lógico en Linux. Para este artículo hemos utilizado la distribución Linux Ubuntu, en su versión 8.04 Hardy Heron. Aunque este artículo es aplicable a casi todas las distribuciones de Linux (Fedora, Suse, Debian, etc). También explicamos qué es un RAID y los niveles existentes con un poco de teoría.



En primer lugar explicaremos qué es un RAID (Redundant Array of Independent Disks, conjunto redundante de discos independientes). RAID es un sistema un sistema de almacenamiento que usa múltiples discos duros entre los que distribuye o replica los datos. Con esto se consigue un nivel de redundancia alto. Con ello se consigue que en un sistema con RAID, cuando se rompe un disco duro, el sistema continúe funcionando.

En realidad habría que matizar lo anterior, pues dependiendo del tipo de RAID (nivel), los beneficios de utilizar este sistema frente a un único único disco pueden ser uno o varios: mayor integridad de los datos almacenados, mayor tolerancia a fallos, mayor rendimiento (throughput) y mayor capacidad.

En el nivel más simple, un RAID combina varios discos duros en una sola unidad lógica. Así, en lugar de ver varios discos duros diferentes, el sistema operativo ve uno solo.

A continuación mostramos los niveles de RAID estándar:

  • RAID 0 (volumen dividido): distribuye los datos equitativamente entre dos o más discos sin información de paridad que proporcione redundancia. El RAID 0, por lo tanto, no es redundante. El RAID 0 se usa normalmente para incrementar el rendimiento, aunque también puede utilizarse para crear uno o varios discos virtuales "grandes" a partir de varios discos físicos "pequeños". Un RAID 0 puede ser creado con discos de diferentes tamaños, pero el espacio de almacenamiento añadido al conjunto estará limitado al tamaño del disco más pequeño.
  • RAID 1 (Data Mirroring): un RAID 1 crea una copia exacta (o espejo) de un conjunto de datos en dos o más discos. Esto resulta útil cuando la disponibilidad en la lectura es más importante que la capacidad. Un conjunto RAID 1 sólo puede ser tan grande como el más pequeño de sus discos. Un RAID 1 clásico consiste en dos discos en espejo, lo que incrementa la fiabilidad respecto a un solo disco, pues para que el conjunto falle es necesario que lo hagan todos sus discos.
  • RAID 3: usa división a nivel de bytes con un disco de paridad dedicado. El RAID 3 se usa rara vez en la práctica. Uno de sus efectos secundarios es que normalmente no puede atender varias peticiones simultáneas, debido a que por definición cualquier simple bloque de datos se dividirá por todos los miembros del conjunto, residiendo la misma dirección dentro de cada uno de ellos. Así, cualquier operación de lectura o escritura exige activar todos los discos del conjunto.
  • RAID 4: usa división a nivel de bloques con un disco de paridad dedicado. El RAID 4 es parecido al RAID 3 excepto porque divide a nivel de bloques en lugar de a nivel de bytes. Esto permite que cada miembro del conjunto funcione independientemente cuando se solicita un único bloque. Si la controladora de disco lo permite, un conjunto RAID 4 puede servir varias peticiones de lectura simultáneamente. En principio también sería posible servir varias peticiones de escritura simultáneamente, pero al estar toda la información de paridad en un solo disco, éste se convertiría en el cuello de botella del conjunto.
  • RAID 5: usa división de datos a nivel de bloques distribuyendo la información de paridad entre todos los discos miembros del conjunto. El RAID 5 es muy usado para la redundancia, debido a su bajo coste de implementación. Generalmente, el RAID 5 se implementa con soporte hardware para el cálculo de la paridad.

Exiten muchos más niveles de RAID, pero hemos considerado describir los anteriores por ser los más habituales. Existen el RAID 6, el RAID 5E, RAID 6E, RAID anidados (RAID 0+1, RAID 1+0, ...), RAID 2, etc.

Para este artículo, por motivos evidentes, crearemos un RAID 1 lógico. Los RAID anteriores se montan siempre sobre discos duros físicos, pero puesto que Linux permite crear RAID lógicos hemos decidido mostrar esta interesante carácteristica.

Lógicamente no es recomendable utilizar un RAID 1 lógico por software para un sistema en producción del que queramos obtener una alta disponibilidad y redundancia, pues un RAID lógico está creado sobre el mismo disco duro físico, con lo cual, si éste falla, fallará todo el RAID.

En primer lugar abriremos una ventana de Terminal en Linux Ubuntu, desde el menú "Aplicaciones" - "Accesorios" - "Terminal", escibiremos el siguiente comando (para trabajar con el superusuario root):

sudo su

(nos pedirá la contraseña del superusuario root)

Crearemos un fichero de tamaño 100MB en / llamado "fs1", será el que simulará el disco físico 1, para ello utilizaremos el siguiente comando:

dd if=/dev/zero of=/fs1 bs=4k count=25000

Crearemos el segundo fichero de tamaño 100MB en / llamado "fs2", será el que simulará el disco físico 2, para ello utilizaremos el siguiente comando:

dd if=/dev/zero of=/fs1 bs=4k count=25000

Ejecuntando el siguiente comando podremos ver los dos ficheros creados:

ls /fs* -lah

A continuación asignaremos a estos ficheros sendas particiones, para que Linux los trate como discos duros. Para realizar esta acción ejecutaremos los siguientes comandos Linux:

losetup /dev/loop0 /fs1

losetup /dev/loop1 /fs2

A continuación utilizaremos el comando "mdadm", aunque previamente habrá que instalarlo, pues no suele venir instalado por defecto en Linux Ubuntu 8.04 Hardy Heron. Para instalarlo ejecutaremos el siguiente comando (será necesario disponer de conexión a Internet):

apt-get install mdadm

[Pulse aquí para ver el resultado de este comando]

Tras la instalación podremos ejecutarlo, lo que conseguiremos con este comando es crear el RAID 1 propiamente dicho, este comando utilizará las dos particiones creadas anteriormente sobre los dos ficheros:

mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/loop0 /dev/loop1

El siguiente paso será establecer el sistema de ficheros para el RAID 1 creado, para ello ejecutaremos el comando:

mkfs -t ext3 /dev/md0

[Pulse aquí para ver el resultado de este comando]

En este caso hemos utilizado ext3, que es el sistema de ficheros utilizado habitualmente por Linux.

Por último, para que el dispositivo creado sea accesible y utilizable por el sistema operativo Linux, deberemos montarlo, para ello ejecutaremos los siguientes comandos Linux:

cd /mnt

(para posicionarnos en la carpeta donde se encuentran las unidades montadas) [Más información]

mkdir raid

(creamos la carpeta "raid", donde montaremos el RAID 1) [Más información]

mount -t ext3 /dev/md0 /mnt/raid

De esta forma habremos creado un dispositivo en la ruta /dev/md0, montado en /mnt/raid que es un disco duro virtual en RAID 1 montado sobre dos particiones que a su vez están montadas sobre dos ficheros. Con lo cual es todo virtual.

Lógicamente, para poder ser usado por el usario actual de Linux Ubuntu, será necesario darle los permisos adecuados, para ello ejecutaremos el siguiente comando Linux:

chmod a+rwx /mnt/raid

Ejecutando el siguiente comando podremos ver la nueva unidad creada:

mount

[Pulse aquí para ver el resultado de este comando]

Con esto ya podremos utilizar nuestro RAID 1, por ejemplo abriendo desde "Lugares" - "Equipo" y copiando cualquier cosa a nuestro nuevo RAID 1 creado. Por ejemplo, copiaremos el fichero firefox-3.0rc1-tar.bz2 que tenemos en el escritorio:

Ventana del explorador de ficheros de Linux Ubuntu 8.04:

A nuestra nueva unidad:

Ventana del explorador de ficheros de Linux Ubuntu 8.04 - Nuestra unidad RAID 1

Para comprobar que efectivamente se ha hecho la replicación en espejo se podría desmontar el RAID, hasta dejar las dos particiones que lo componen. Una vez hecho esto habría que hacer un ls en ambas particiones y comprobar que las dos contienen el mismo fichero.

ANEXO

Os mostramos el resultado de la ejecución de todos los comandos Linux anteriores (en la ventana de terminal):

alonso@pcubuntu:~$ sudo su
[sudo] password for alonso:


root@pcubuntu:/home/alonso# dd if=/dev/zero of=/fs1 bs=4k count=25000
25000+0 registros de entrada
25000+0 registros de salida
102400000 bytes (102 MB) copiados, 0,303857 s, 337 MB/s


root@pcubuntu:/home/alonso# ls /fs1 -lah
-rw-r--r-- 1 root root 98M 2008-05-27 22:37 /fs1


root@pcubuntu:/home/alonso# dd if=/dev/zero of=/fs2 bs=4k count=25000
25000+0 registros de entrada
25000+0 registros de salida
102400000 bytes (102 MB) copiados, 0,327057 s, 313 MB/s


root@pcubuntu:/home/alonso# ls /fs2 -lah
-rw-r--r-- 1 root root 98M 2008-05-27 22:38 /fs2


root@pcubuntu:/home/alonso# losetup /dev/loop0 /fs1


root@pcubuntu:/home/alonso# losetup /dev/loop1 /fs2


root@pcubuntu:/home/alonso# apt-get install mdadm
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Paquetes recomendados
mail-transport-agent
Se instalarán los siguientes paquetes NUEVOS:
mdadm
0 actualizados, 1 se instalarán, 0 para eliminar y 31 no actualizados.
Necesito descargar 224kB de archivos.
Se utilizarán 639kB de espacio de disco adicional después de desempaquetar.
Des:1 http://es.archive.ubuntu.com hardy/main mdadm 2.6.3+200709292116+4450e59-3ubuntu3 [224kB]
Descargados 224kB en 0s (317kB/s)
Preconfigurando paquetes ...
Seleccionando el paquete mdadm previamente no seleccionado.
(Leyendo la base de datos ...
125437 ficheros y directorios instalados actualmente.)
Desempaquetando mdadm (de .../mdadm_2.6.3+200709292116+4450e59-3ubuntu3_i386.deb) ...
Configurando mdadm (2.6.3+200709292116+4450e59-3ubuntu3) ...
Generating array device nodes... done.
Generating mdadm.conf... done.
Removing any system startup links for /etc/init.d/mdadm-raid ...
update-initramfs: deferring update (trigger activated)
* Starting MD monitoring service mdadm --monitor [ OK ]

Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.24-17-generic

root@pcubuntu:/home/alonso# mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/loop0 /dev/loop1
mdadm: array /dev/md0 started.


root@pcubuntu:/home/alonso# mkfs -t ext3 /dev/md0
mke2fs 1.40.8 (13-Mar-2008)
Etiqueta del sistema de ficheros=
Tipo de SO: Linux
Tamaño del bloque=1024 (bitácora=0)
Tamaño del fragmento=1024 (bitácora=0)
25064 nodos i, 99904 bloques
4995 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=1
Número máximo de bloques en el sistema de archivos=67371008
13 bloque de grupos
8192 bloques por grupo, 8192 fragmentos por grupo
1928 nodos i por grupo
Respaldo del superbloque guardado en los bloques:
8193, 24577, 40961, 57345, 73729

Escribiendo las tablas de nodos-i: se finaliza
Creando el fichero de transacciones (4096 bloques): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Este sistema de ficheros se revisará automáticamente cada 21 montajes o
180 dias, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.


root@pcubuntu:/home/alonso# cd /mnt


root@pcubuntu:/mnt# mkdir raid


root@pcubuntu:/mnt# mount -t ext3 /dev/md0 /mnt/raid


root@pcubuntu:/mnt# mount
/dev/sda2 on / type ext3 (rw,relatime,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
/sys on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
lrm on /lib/modules/2.6.24-17-generic/volatile type tmpfs (rw)
securityfs on /sys/kernel/security type securityfs (rw)
gvfs-fuse-daemon on /home/alonso/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=alonso)
/dev/md0 on /mnt/raid type ext3 (rw)


root@pcubuntu:/mnt# chmod a+rwx /mnt/raid


root@pcubuntu:/mnt#

 

Tecnologías utilizadas para realizar este artículo:

 

Agradecimientos:

Este artículo no hubiera sido posible sin la ayuda de Antonio RS (AntonioM), que aportó sus amplios conocimientos sobre los RAID en Linux.


Anuncios


Enviado el Miércoles, 28 mayo a las 01:14:33 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A