[COMO] Instalar o pasar ubuntu en un RAID 0 por software de mdadm

Imagen de dario_napole
0 puntos

Este tutorial esta hecho obviando detalles basicos, por ende si eres novato no creo q lo entiendas, esto esta pensado para el usuario con un conosimiento avanzado de linux y aparte es estilo referencia ya q esto no es igual para todos los casos, por lo q yo explico mis pasos y ustedes deben adaptarlos a su maquina.

Bueno como todo, siempre hacer copia de respaldo de los datos importantes, en teoria, no se tendria q perder nada, pero siempre esta el error humano y la mala suerte.

RECOMIENDO hacer dos imagenes del disco de la instalacion original, en mi caso hice una imagen de SDA (osea con grub y todo) y otra de SDA1 (la particion sola para montarla) en el de 1TB (a mi me tardo como 1 hora y media en hacer las imagenes). Si hacen esto solo basta hacer el orden inverso para dejar el SO como si no se lo hubiese tocado.

dd if=/dev/sda of=/media/disk/imagenSDA.img bs=8M
dd if=/dev/sda1 of=/media/disk/imagenSDA1.img bs=8M

El swap lo tenia en sda2 pero preferi usar un archivo en ves de una particion, al final
(si ya se tiene una instalacion andando, y solo deseas pasarla a un RAID 0, saltar al paso 2)

Este tutorial esta basado en mi caso en el q poseia 3 discos, uno de 80GB (sda), otro de 320GB (sdc) y otro de 1TB (sdb), los 3 con interfase SATA1. Con Ubuntu 9,04 instalado en SDA1.
(no he probado con GRUB2 q viene en ubuntu 9.10, cuando sepa actualizo ACTUALIZADO LEAN ABAJO)

1)Instalacion del sistema operativo y programas necesarios

* Instalar ubuntu en un disco normal como siempre. ( si es q no se cuenta con una instalacion ya hecha)

* Luego de terminar de configurar todo, instalar el packete “mdadm”.

sudo apt-get install mdadm

Configuren el paquete Postfix como deban (sino saben elijan “Sin Configuracion”)
Listo, ya se tiene el sistema operativo preparado

2)Preparar y configurar los discos en RAID 0

* Con el mdadm se pueden hacer raids con las particiones, por lo q no es necesario utilisar todo el disco, aunque se puede si asi se lo desea.

* Reiniciar y bootear desde un live CD

* Instalar mdadm en el live CD

* Copiar, como root, a otro disco los archivos de SDA1, osea donde esta el SO (este lugar debe tener un formato del tipo de linux para mantener los permisos de root y el usuario sin alterarlos)

Yo en mi caso lo copie a la segunda particion del disco de 320GB q ya tenia preparada las particiones de antes (fijense el punto siguiente y cordinen aver en q orden les conviene mejor)

sudo cp -av /media/disk /media/disk-1

* Preparar las particiones a usar, en el disco donde tenemos instalado ubuntu, (en lo posible hacerlas del mismo tamaño para q el raid sea lo mas simetrico posible) dejando en SDA una pequeña particion EXT3 al principio de 1GB para los archivos de booteo.
Pueden usar el Gparted q viene en el LiveCD

Osea q tenemos el disco de 80GB SDA con 1 particion EXT3 de 1GB (recuerden ponerle el flag BOOT a la particion si no lo tiene) y 1 particion sin formato de 79GB. (para el RAID)

En el disco de 320GB hice 1 sin formato de 80GB (para el RAID) y 1 de 240GB en EXT3 (donde voy a dejar los backups)

En el disco de 1TB hice 1 sin formato de 80GB (para el RAID) y 1 de 1920GB en EXT4 (para mis documentos y archivos)
Tener cuidado de no borrar el MBR de SDA porque sino se borrara el grub, pueden hacer un back up del MBR con el “dd”, con copiar los primeros 8 megas alcanza

sudo dd if=/dev/sda of=/media/disk/imagenMBR.img bs=8M count=1

* Ahora a montar el raid. Con mdadm crearemos el RAID 0 para probarlo y configurar todo.
Antes q nada, desmonten todo, y actualizen las tablas de particiones por las dudas q haya quedado algo sin actualizar.

sudo hdparm -z /dev/sda /dev/sdb /dev/sdc

Luego preamos el RAID 0 con las particiones o dispositivos q preparamos

sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/sda2 /dev/sdb1 /dev/sdc1

/dev/md0 >>> Es el dispositico del raid
--level=0 >>> Es el tipo de raid, 0, 1, 4, 5, 10, 01
--raid-devices=3 >>> Cantidad de dispositivos
/dev/sda2 /dev/sdb1 /dev/sdc1 >>> Son las 3 particiones q yo usare. Si usan el disco entero en alguno seria /dev/sdc por ejemplo.

* Ahora podemos probar si supone alguna mejora en el rendimiento.

sudo hdparm -t /dev/sda /dev/sdb /dev/sdc /dev/md0

Nos mostrara una comparacion de las velocidades de los discos normales y del dispositivo en raid 0.
Si por alguna casualidad no supone una mejora considerable de velocidad prueben distintas combinaciones de discos hasta encontrar la mejor combinacion.

* Ahora le damos formato al raid

sudo mkfs.ext3 /dev/md0

* Una ves finalize, la montamos en algun sitio y volvemos a copiar los archivos originales, ahora, al raid. Siempre manteniendo los parmisos.

sudo mount /dev/md0 /media/disk/raid
sudo cp -av /media/disk/disk/* /media/disk/raid

* Despues montamos SDA1 (osea la particion de 1GB para el /boot) y copiamos solo la carpeta boot ahi

sudo cp -av /media/disk/disk/boot/ /media/disk-1

* Despues en ese boot q acabamos de copiar (desde ahora solo me referire a este), abrimos /boot/grub/menu.lst como root y editamos para q cargue los archivos desde la nueva particion de 1GB

title		Ubuntu 9.04, kernel 2.6.28-11-generic
uuid		06d734fb-3191-4cfe-a75d-765ff038a9b5
kernel		/boot/vmlinuz-2.6.28-11-generic root=UUID=06d734fb-3191-4cfe-a75d-765ff038a9b5 ro quiet splash 
initrd		/boot/initrd.img-2.6.28-11-generic
quiet

title		Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid		06d734fb-3191-4cfe-a75d-765ff038a9b5
kernel		/boot/vmlinuz-2.6.28-11-generic root=UUID=06d734fb-3191-4cfe-a75d-765ff038a9b5 ro  single
initrd		/boot/initrd.img-2.6.28-11-generic

title		Ubuntu 9.04, memtest86+
uuid		06d734fb-3191-4cfe-a75d-765ff038a9b5
kernel		/boot/memtest86+.bin
quiet

Reemplazamos lo marcado por sus nuevos valores. El UUID de SDA1 la pueden sacar de la carpeta /dev/disk/by-uuid/ ahi veran varios archivos con numeros y letras de nombres, q son enlaces simbolicos. Fijense cada uno a donde apunta (fijense en "propiedades", y el q apunte a sda1 (o su disco donde ta boot) es el correcto, copien el nombre y reemplazen. En cuanto a root=xxxxxx tienen q poner root=/dev/md0

Les tendria q quedar asi:

title		Ubuntu 9.04, kernel 2.6.28-11-generic
uuid		1012c312-6fe0-4281-8f99-38f02e1c5b18
kernel		/boot/vmlinuz-2.6.28-11-generic root=/dev/md0 ro quiet splash 
initrd		/boot/initrd.img-2.6.28-11-generic
quiet

title		Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid		1012c312-6fe0-4281-8f99-38f02e1c5b18
kernel		/boot/vmlinuz-2.6.28-11-generic root=/dev/md0 ro  single
initrd		/boot/initrd.img-2.6.28-11-generic

title		Ubuntu 9.04, memtest86+
uuid		1012c312-6fe0-4281-8f99-38f02e1c5b18
kernel		/boot/memtest86+.bin
quiet

* Ahora editamos como root /etc/fstab (q esta en el disco raid obvio) y reemplazamos el punto de montage de / por md0, y agregamos el punto de montage de /boot, mas un bind para q quede compatible

# /dev/md0 - RAID0 de sda2,sdb1,sdc1
/dev/md0                                  /             ext3    relatime,errors=remount-ro 0 1

# /boot - Boot para md0 = sda1
UUID=1012c312-6fe0-4281-8f99-38f02e1c5b18  /boot	        ext3    relatime,errors=remount-ro 0 1
/boot/boot                                /boot         none    bind 0 0

Recuerden q 1012c312-6fe0-4281-8f99-38f02e1c5b18 es el UUID de SDA1, para q lo monte ahi sin importar como lo detecte.
Fijense de q ext3 sea el formato q eligieron, sino pongan el necesario.

3)Editando el kernel para q cargue desde el RAID

* vamos a /boot y buscamos la imagen ram de nuestro kernel, en mi caso /boot/initrd.img-2,6,28-11-generic (q es el kernel viejo del 9.04. y hacemos una copia en algun lado.
Luego le cambiamos el nombre por initrd.gz y lo descomprimimos con gunzip, nos queda initrd ahora para simplificar copio los comandos. (antes q nada CD a la carpeta q contiene initrd.gz

mkdir tmp
cd tmp/
cpio -id < ../initrd

Nos tendria q quedar la carpeta tmp con los archivos q estan junto con el kernel. Dentro de temp, vamos a etc/mdadm/mdadm.conf y lo editamos. En la consola escribimos

sudo mdadm –examine --scan

Y copiamos la info de MD0 al final de mdadm.conf. En donde dice DEVICE borramos partition y escribimos “/dev/sda2 /dev/sdb1 /dev/sdc1” (osea eparados por espacios). Y a lo ultimo le agregamos tambien “devices=/dev/sda2,/dev/sdb1,/dev/sdc1” (osea separado por comas) como muestra abajo.

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE /dev/sda2 /dev/sdb1 /dev/sdc1

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST 

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays

# This file was auto-generated on Sun, 03 May 2009 20:36:53 -0300
# by mkconf $Id$
ARRAY /dev/md0 level=raid0 num-devices=3 metadata=00.90 UUID=e1fbf1e6:da616113:e368bf24:bd0fce41 devices=/dev/sda2,/dev/sdb1,/dev/sdc1

* Una ves guardado, volvemos a la consola la carpeta tmp y corremos

find . | cpio --create --format='newc' > ../newinitrd

Tedrimos q tenes newinitrd en la carpeta anterior, lo comprimimos en gz con gzip y le cambiamos la estenxion de gz a img

* Ahora reemplazamos el archivo viejo con el modificado, cambienle el nombre al viejo por las dudas para no borrarlo y pongan el nuevo.

* El archivo mdadm.conf q pusimos en el kernel tambien copienlo a /etc/mdadm/ para q no desaparesca cuando monte / el kernel

* Ahora desmontamos todo y reiniciamos. Si no reinicia bien entonces hace falta repasar algun paso. Sino de ultima volvemos a copiar la imagen entara de SDA y queda como antes

Estos fueron mis resultados. La velocidad de MD0 Me varia entre 120-188 MB/s lo q me parece vastante bueno ^_^
La mayoria de las cosas me cargan BASTANTE mas rapido q antes, aunque linux me tarda lo mismo, ya q lo q gano de tiempo con la velocidad, lo pierdo con el tiempo q mdadm tarda en preparar los discos y y arrancar el raid.

http://img190.imageshack.us/img190/1880/pantallazovel.png

Recomendación:

- Siempre guadar una copia de mdadm.conf ya q si actualizamos el kernel tendremos q volver a modificar el archivo de configuracion dentro del initrd del nuevo kernel (yo probe en el virtual box y mantubo la configuracion) y reconfigurar el /boot/grub/menu.list

Actualizacion:

El otro dia instale 9.10 y no tube el mas minimo drama de nada. Es mas, fue mas facil instalar en un raid0 q pasarlo, depaso queda bien configurado y no hay q reconfigurar cuando se actualiza algo. Bueno, paso a contar como hice...

Lo primero q note es q lo detecto de una al raid pero no lo supo montar o arrancar, supongo q porque esta hecho con mdadm o algo asi, ni idea....

1) Primero copie el mdadm.conf del 9.04 a un lugar seguro y reinicie con el livecdde 9.10
2) ya en el livecd, instale mdadm desde synaptics y copie el mdadm.conf mio con la conf de mi raid a /etc/mdadm/ y ejecute:

sudo mdadm -A -s

Eso me armo e inicio el raid mio /dev/md0 y ahora si pude montarlo desde Equipo. (Hice backup del disco y de /dev/sda1 (donde ta /boot) con cp -av por las dudas y prosegui...

3)Abri el instalador y en particiones y etc, seleccione Manual, y en la posiguiente aparte de SDA, SDB y SDC y sus particiones figuraba tambien /dev/md0, asi q puse md0 cono EXT4 montada en / y sda1 montada como /boot. Y tambien actualizar el grub q taba en sda (osea hd0). Ponemos instalar y esperamos. Cuando termine pongan "seguir probando" para no reiniciar.

4) una ves termina de instalar abrimos una consola y ponemos:

sudo su

una ves como root hacemos chroot

cd ~
mkdir ~/temp
sudo mount /dev/md0 ~/temp
mount -o bind /proc ~/temp/proc
mount -o bind /dev ~/temp/dev
mount -o bind /dev/pts ~/temp/dev/pts
mount -o bind /sys ~/temp/sys 
chroot ~/temp /bin/bash

tendriamos q quedar en la consola de root denuevo, pero ahora con ~/temp como / para el bash.

5) ahora en la consola ponemos:

synaptic

y cuando se abre el synaptics vamos a repositorio y tildamos los repos de universe y los restricted. y recargamos la lista de paquetes.
Ahora buscamos el paquete "mdadm" q depende de postfix. Lo ponemos para instalar y aplicamos.
Nos va a salir la config del postfix en el medio de la instalacion, si no saben q poner pongan sin configurar y listo.
Ya pueden cerrar el synaptics y en la consola de chroot pongan para salir

exit chroot exit

Esto tendria q sacarlos del chroot y del logueo como root
Ahora en la consola de nuevo como usuario "ubuntu" (del liveCD) copiamos nuestro archivo de conf del mdadm a donde ta montado el root del ubuntu recien instalado

sudo cp /nuestro/mdadm.conf ~/temp/etc/mdadm/mdadm.conf

y despues el mdadm.conf tambien lo agregamos a la initrd del ubuntu recien isntalado (fijense arriba como se hace)

Despues de esto reiniciamos y nos tendria q cargar todo ^_^