====== Disk SATA en RAID ======
Je me suis trés fortement inspiré du lien ci-dessous\\ Lien:
http://xtronics.com/reference/SATA-RAID-debian-for-2.6.html
Mais il y a aussi:
http://marc.theaimsgroup.com/?l=linux-raid&m=108571782912454&w=2
Pour Lenny : http://about-gnulinux.info/dotclear/index.php?post/2009/01/18/Migrer-votre-syst%C3%A8me-debian-actuel-sur-un-systeme-en-RAID1
Actuellement, il n'est __parfois__ pas possible de configurer un RAID fonctionnel avec des disks SATA au moment de l'installation de **debian**: y a un bug !!!!!!!
Donc, il faut installer le RAID
aprés l'installation.
===== Installation de Debian =====
On installe **Debian** en prevoyant qu'on va faire du RAID. Ca me parait mieux ainsi.\\ On suppose qu'on veut faire du **RAID 1** et qu'on a donc de 2 disks: **sda** et **sdb**\\ Le partitionnage des disks:\\ **sda:**
Partition Primaire: sda1: /boot ext3 256 MB
Partition Logique: sda5: swap 3 GB (pour 1 GB de RAM)
Partition Logique: sda6: / ext3 le reste du disk
**sdb:**
Même decoupage, mais le systeme de fichier en 'Linux raid autodetect'
Il peut être utile de marquer les partitions **sda1** et **sdb1** comme bootable.
Ce qui donne a peu pres:
Disk /dev/sdb: 81.9 GB, 81964302336 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 31 248976 fd Linux raid autodetect
/dev/sdb2 32 9964 79786822+ 5 Extended
/dev/sdb5 32 396 2931831 fd Linux raid autodetect
/dev/sdb6 397 9964 76854928+ fd Linux raid autodetect
Une fois l'installation terminé...
Note: on peut partionner autrement... tout dans une seule partition, ca doit etre possible.
===== mdadm =====
===== Au prealable: =====
Si on veut editer les partitions avant d'installer le RAID, il faut utiliser **cfdisk**:
# cfdisk /dev/sdb
Non tester: Si on veut copier les partitions existantes d'un disk sur un autre:
# sfdisk -d /dev/sda | sfdisk /dev/sdb
===== Partition sdb =====
Donc a demarré le nouveau systeme et on a un disk **sda** operationnel et sans RAID, et un disk **sdb** non fonctionnel mais preparer pour le RAID.
Installer les outils:
# apt-get install wajig
# wajig install mdadm
# wajig install rsync
**wajig** fait **apt-get install ...** mais avec un je ne sais quoi de mieux...?
a verifier: En fait, je crois qu'on pourrait faire la même chose sans **wajig**, mais le probleme c'est que **apt-get install mdadm** met immediatement en place le RAID alors que ce n'est pas ce qu'on souhaite a ce moment là. (Peut être faut-il partitionner le disk aprés l'installation de **mdadm**)
A installer aussi:
# apt-get install initrd-tools
Sinon, on pourra pas utiliser **mkinitrd** plus tard...
==== Creer les volumes RAID: ====
# mdadm -Cv /dev/md0 -l1 -n2 missing /dev/sdb1
# mdadm -Cv /dev/md1 -l1 -n2 missing /dev/sdb5
# mdadm -Cv /dev/md2 -l1 -n2 missing /dev/sdb6
Ce qui est equivalent a (pour la 1er ligne):
# mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdb1
Cela a créé 3 RAID 1 dégradé ( **/boot** **swap** et **/**) avec un disk manquant.
#cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[1]
979840 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
192640 blocks [2/1] [_U]
md2 : active raid1 sdb6[1]
159661888 blocks [2/1] [_U]
unused devices:
==== Creer les systemes de fichiers et les mounter ====
# mkfs.ext3 /dev/md0
# mkfs.ext3 /dev/md2
# mkswap /dev/md1
En **ext3** ou autres d'ailleurs... mais ce sera en **ext3**.
Pour nos manipulation ultérieur, on prépare des choses:
# mkdir /mntroot
# mkdir/mntboot
# mount /dev/md2 /mntroot
# mount /dev/md0 /mntboot
==== Preparer **initrd** ====
=== etch ou moins ===
**initrd** est le ce qui chargé au moment du boot dans un (temporaire) **R**am **D**isk.
Pour les disks SATA, soyons attentif a ça: editer le fichier **/etc/mkinitrd/mkinitrd.conf** et modifier:
MODULES=most
en
###MODULES=most
MODULES=dep
et
ROOT=probe
en
###ROOT=probe
ROOT="/dev/md2 ext3"
Et maintenant, examinons le repetoire **/boot** (ou **uname -r**) pour savoir comment nommé les fichiers:
# uname -r
2.6.17-2-686
# ls /boot -la
...
-rw-r--r-- 1 root root 4629674 2006-11-16 13:52 initrd.img-2.6.17-2-686
...
Donc on fait: maintenant:
# mkinitrd -o /boot/initrd.img-2.6.17-2-686-md 2.6.17-2-686
=== Lenny ===
Que faire ? "mkinitrd" n'existe pas.
Il semble que l'equivalent soit: "mkinitramfs"
Et donc, il faut faire:
# mkinitramfs -o /boot/new-initrd
Comme dit ici: http://about-gnulinux.info/dotclear/index.php?post/2009/01/18/Migrer-votre-syst%C3%A8me-debian-actuel-sur-un-systeme-en-RAID1
Je ne puis confirmer.
==== Editer **/boot/grub/menu.lst** : ====
A partir la copie d'un modele: (Par exemple)
title Debian GNU/Linux, kernel 2.6.17-2-686
root (hd0,0)
kernel /vmlinuz-2.6.17-2-686 root=/dev/sda6 ro
initrd /initrd.img-2.6.17-2-686
savedefault
boot
On fait les modifications suivante:
title Debian GNU/Linux, kernel 2.6.17-2-686-md Disk1
root (hd0,0)
kernel /vmlinuz-2.6.17-2-686 root=/dev/md2 ro
initrd /initrd.img-2.6.17-686-md
savedefault
boot
Et a partir de ce nouveau block faire une copie et apporter les modifications suivantes:
title Debian GNU/Linux, kernel 2.6.17-2-686-md Disk2
root (hd1,0)
kernel /vmlinuz-2.6.17-2-686 root=/dev/md2 ro
initrd /initrd.img-2.6.17-686-md
savedefault
boot
==== (Re)generer un fichier **/etc/mdadm/mdadm.conf** : ====
Editer **/etc/mdadm/mdadm.conf** et avoir pour seule ligne dans le fichier:
DEVICE /dev/sda* /dev/sdb*
Ensuite faire:
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
==== Tout copier sur le disk RAID dégradé ====
# rsync -auHxv --exclude=/proc/* --exclude=/sys/* --exclude=/boot/* --exclude=/mntboot --exclude=/mntroot/ /* /mntroot/
# mkdir /mntroot/proc /mntroot/boot /mntroot/sys
# chmod 555 /mntroot/proc
# rsync -auHx /boot/ /mntboot/
==== Faire des modifications dans **/mntroot/etc/fstab**: ====
Les changements sont en bleu:
/etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/md2 / ext3 defaults,errors=remount-ro 0 1
/dev/md0 /boot ext3 defaults 0 2
/dev/md1 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
==== Reboot ! ====
On devrait pouvoir booter sur le RAID **... Disk1**, sinon, on peut encore faire un autre choix.
Si tout va bien, on continue.
==== Attacher le disk original... ====
D'abord, on change les types des partitions de **sda** en **Linux raid autodetect** (FD)
# cfdisk /dev/sda
... changer le type des partitions en **FD**
Puis on attache:
# mdadm /dev/md0 -a /dev/sda1
# mdadm /dev/md1 -a /dev/sda5
# mdadm /dev/md2 -a /dev/sda6
Verifions que ca marche (exemple):
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
192640 blocks [2/2] [UU]
md1 : active raid1 sda5[0] sdb5[1]
979840 blocks [2/2] [UU]
md2 : active raid1 sda6[2] sdb6[1]
159661888 blocks [2/1] [_U]
[===>.................] recovery = 17.9% (28697920/159661888) finish=56.4min speed=38656K/sec
unused devices:
Et aprés quelques longues minutes:
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[1]
192640 blocks [2/2] [UU]
md1 : active raid1 sda5[0] sdb5[1]
979840 blocks [2/2] [UU]
md2 : active raid1 sda6[2] sdb6[1]
159661888 blocks [2/2] [UU]
unused devices:
==== Regenerer initrd ====
Oui, il faut aboslument faire ca apres que le RAID est OK, sinon, il sera toujours degradé et recontruit a chaque mise a jour du noyau.
# mkinitrd -o /boot/initrd.img-2.6.17-2-686-md 2.6.17-2-686
==== Regenerer **/etc/mdadm/mdadm.conf** : ====
Editer **/etc/mdadm/mdadm.conf** et avoir pour seul ligne de texte:
DEVICE /dev/sda* /dev/sdb*
Et puis faire:
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Au final on a un fichier qui ressemble a ça:
DEVICE /dev/sda* /dev/sdb* ARRAY /dev/md0 level=raid1 num-devices=2 UUID=4d58ade4:dd80faa9:19f447f8:23d355e3
devices=/dev/sda1,/dev/sdb1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=3f1bdce2:c55460b0:9262fd47:3c94b6ab
devices=/dev/sda5,/dev/sdb5
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=7dfd7fcb:d65245d6:f9da98db:f670d7b6
devices=/dev/sdb6,/dev/sda6
==== Configurer **grub** pour booter sur les 2 disks ====
Install the MBR on the second disk
# grub --device-map=/boot/grub/device.map
>> root (hd0,0)
>> setup (hd0)
>> root (hd1,0)
>> setup (hd1)
>> quit
Faire en sorte que grub designe MD comme periphérique root. (Attention, le simple '#' n'est pas un commentaire !!!!)\\ Editer **/boot/grub/menu.lst** et transformer:
# kopt=root=/dev/sda6 ro
en
# kopt=root=/dev/md2 ro
Re-configurer le daemon mdadm:
# dpkg-reconfigure mdadm
Et je crois que cette opération regenere encore un **initrd** plus clean, avec le nom original (c'est a dire sans **-md** a la fin)
==== Reboot et nettoyage ====
Rebooter pour voir si tout va bien...
Faire une copie de sauvegarde de **menu.lst**:
# cp /boot/grub/menu.lst /boot/grub/menu.lst-old
Puis faire:
# update-grub
Cela regenere un fichier **menu.lst** propre. Mais les choix pour booter sur le **initrd...md** a disparu. Par securite et a partir de **menu.lst-old**, remettre les choix **...Disk1** et **...Disk2** ceci fait: rebooter.
Si tout va bien, alors on peut refaire un **update-grub** et effacer les images **initrd...md** et toutes references a ce fichier: sinon, on peut encore rebooter en choissisant **...Disk1**.