Copier les partitions
sfdisk -d /dev/sda | sfdisk /dev/sdb fdisk -l Disk /dev/sda: 73.2 GB, 73200476160 bytes 255 heads, 63 sectors/track, 8899 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 2 25 192780 fd Linux /dev/sda2 26 279 2040255 fd Linux swap / Solaris /dev/sda3 * 280 8899 69240150 fd Linux Disk /dev/sdb: 73.2 GB, 73200476160 bytes 255 heads, 63 sectors/track, 8899 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 2 25 192780 fd Linux /dev/sdb2 26 279 2040255 fd Linux swap / Solaris /dev/sdb3 * 280 8899 69240150 fd Linux
Modifier le type des partitions
fdisk /dev/sdb Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): fd Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): fd Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): fd Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
On doit obtenir :
fdisk -l /dev/sdb Disk /dev/sdb: 73.2 GB, 73200476160 bytes 255 heads, 63 sectors/track, 8899 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 2 25 192780 fd Linux raid autodetect /dev/sdb2 26 279 2040255 fd Linux raid autodetect /dev/sdb3 * 280 8899 69240150 fd Linux raid autodetect
Création des volumes RAID1
On crée les RAID1 sans /dev/sda :
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1 mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2 mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
Si les /dev/md* n'existe pas :
mknod -m 640 /dev/md0 b 9 0 mknod -m 640 /dev/md1 b 9 1 mknod -m 640 /dev/md2 b 9 2
La commande 'cat /proc/mdstat' doit nous donner 3 RAID dégradé :
cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md2 : active raid1 sdb3[1] 4594496 blocks [2/1] [_U] md1 : active raid1 sdb2[1] 497920 blocks [2/1] [_U] md0 : active raid1 sdb1[1] 144448 blocks [2/1] [_U] unused devices: <none>
Formater les volumes RAID
mke2fs -j /dev/md0 mkswap /dev/md1 mke2fs -j /dev/md2
Modification des fichiers système
/etc/mdadm.conf
cp /usr/share/doc/mdadm-2.5.4/mdadm.conf-example /etc/mdadm.conf mdadm --examine --scan >> /etc/mdadm.conf
Il doit maintenant y avoir à la fin du fichier les infos concernant les volumes RAID :
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=72d23d35:35d103e3:01b5209e:be9ff10a ARRAY /dev/md1 level=raid1 num-devices=2 UUID=a50c4299:9e19f9e4:01b5209e:be9ff10a ARRAY /dev/md2 level=raid1 num-devices=2 UUID=99fee3a5:ae381162:01b5209e:be9ff10a
/etc/fstab & /etc/mtab
On replace les /dev/sda* par les /dev/md* correspondant :
/dev/md2 / ext3 defaults 1 1 /dev/md0 /boot ext3 defaults 1 2 /dev/md1 swap swap defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/md2 / ext3 rw 0 0 none /proc proc rw 0 0 none /dev/pts devpts rw,gid=5,mode=620 0 0 /dev/md0 /boot ext3 rw 0 0 none /dev/shm tmpfs rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/boot/grub/grub.conf
default=0 fallback=1 timeout=5 hiddenmenu title CentOS (Default) root (hd1,0) kernel /vmlinuz ro root=/dev/md2 initrd /initrd-raid1 title CentOS (Default) root (hd0,0) kernel /vmlinuz ro root=/dev/sda3
La ligne 'initrd /initrd-raid1' est nécessaire si /dev/md2 n'est pas trouvé au démarrage. Si besoin du initrd, il faut le générer :
uname -a Linux mamachine.lan2wan.fr 2.6.18-prep #1 SMP Tue Mar 4 15:02:47 CET 2008 x86_64 x86_64 x86_64 GNU/Linux cd /boot mkinitrd --with=raid1 initrd-raid1 2.6.18-prep
Copie du système
mkdir /mnt/md0 mkdir /mnt/md2 mount /dev/md0 /mnt/md0 mount /dev/md2 /mnt/md2 cp -dpRx / /mnt/md2/ cd /boot cp -dpRx . /mnt/md0/
Mise à jour du chargeur de démarrage (GRUB)
grub root (hd0,0) setup (hd0) root (hd1,0) setup (hd1) quit
Ensuite on reboot.
Modification des partitions de /dev/sda
fdisk /dev/sda Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): fd Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): fd Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): fd Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. fdisk -l /dev/sda [...] /dev/sda1 2 25 192780 fd Linux raid autodetect /dev/sda2 26 279 2040255 fd Linux raid autodetect /dev/sda3 * 280 8899 69240150 fd Linux raid autodetect
Ajout des disques dans les RAIDs
mdadm --add /dev/md0 /dev/sda1 mdadm --add /dev/md1 /dev/sda2 mdadm --add /dev/md2 /dev/sda3
Si une erreur se produit (ex: /dev/sda3 ressource busy)
Modifier /boot/grub/grub.conf, remplacer hd1 par hd0
title CentOS (Default) root (hd0,0) kernel /vmlinuz ro root=/dev/md2 initrd /initrd-raid1
Rebooter.
'fuser -mv /dev/sda3' ne doit plus rien renvoyer.
Ensuite relancer 'mdadm –add /dev/md2 /dev/sda3'
Les raids vont se reconstruire :
cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sda3[2] sdb3[1] 4594496 blocks [2/1] [_U] [=====>...............] recovery = 29.7% (1367040/4594496) finish=0.6min speed=85440K/sec md1 : active raid1 sda2[0] sdb2[1] 497920 blocks [2/2] [UU] md0 : active raid1 sda1[0] sdb1[1] 144448 blocks [2/2] [UU] unused devices: <none>
Dernière modification GRUB
Modifier le '/boot/grub/grub.conf'
Permettra de démarrer si le premier disque est cassé :
default=0 fallback=1 timeout=5 hiddenmenu title CentOS (Default) root (hd0,0) kernel /vmlinuz ro root=/dev/md2 initrd /initrd-raid1 title CentOS (Default) root (hd1,0) kernel /vmlinuz ro root=/dev/md2 initrd /initrd-raid1
Normalement pas besoin, mais juste pour être sûr que grub est bien installé sur les 2 disques :
grub root (hd0,0) setup (hd0) root (hd1,0) setup (hd1) quit
Si lors de cette étape, une erreur du type 'Checking if “/boot/grub/stage1” exists… no' se produit, il faut réinstaller grub dans la partition '/boot' d'un des disques en RAID :
grub-install /dev/hdX
Ou 'hdX' est votre disque (à remplacer par hda voir sda)