Migration vers un raid1 logiciel
February 3, 2008 1:51 pm Debian, Mdadm, RaidRecemment je me suis un peu penché sur le raid logiciel sous debian: mdadm.
J’ai été fortement seduit par cette solution (je detaillerai pourquoi dans un prochain billet) et j’ai donc voulu passer ma gate@home en raid1 logiciel.
Je vais donc detailler ici comment migrer son systeme vers un raid1 logiciel avec mdadm.
Un petit etait des lieux avant tout, voici ma configuration actuelle:
debian:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 2.8G 494M 2.2G 19% /
tmpfs 126M 0 126M 0% /lib/init/rw
udev 10M 52K 10M 1% /dev
tmpfs 126M 0 126M 0% /dev/shm
debian:~#
On vient bien ici que je n’ai qu’une partition principale / de 2.8Go. /dev/sda est donc mon disque dur actuel, avec une partition /dev/sda1.
Par chance je retrouve un disque dur de taille identique ce qui sera plus cool pour faire mes partitions et mon raid logiciel.
Considerons donc /dev/sda mon disque dur actuel et /dev/sdb mon nouveau disque dur.
/dev/sdb vient juste d’etre ajouté dans la machine:
debian:~# fdisk -l /dev/sdb
Disk /dev/sdb: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDisk /dev/sdb doesn’t contain a valid partition table
debian:~#
Commencons par installer mdadm:
- # apt-get install mdadm
Il faut a present modifier le type des partitions sur /dev/sda en effet nous avons actuellement:
debian:~# fdisk -l /dev/sda
Disk /dev/sda: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
/dev/sda1 * 1 367 2947896 83 Linux
/dev/sda2 368 391 192780 5 Extended
/dev/sda5 368 391 192748+ 82 Linux swap / Solaris
debian:~#
Utilisez fdisk ou cfdisk pour obtenir:
debian:~# fdisk -l /dev/sda
Disk /dev/sda: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
/dev/sda1 * 1 367 2947896 fd Linux raid autodetect
/dev/sda2 368 391 192780 5 Extended
/dev/sda5 368 391 192748+ 82 Linux swap / Solaris
debian:~#
Une fois cela fait, nous allons dupliquer les partitions de /dev/sda sur /dev/sdb:
- # sfdisk -d /dev/sda | sfdisk /dev/sdb
Vous devriez obtenir un affichage du style de celui ci:
……
Successfully wrote the new partition table
Re-reading the partition table …
…….
A present il va falloir utiliser mdadm pour creer le raid en indiquant /dev/sda comme manquant:
debian:~# mdadm –create /dev/md0 –level 1 –raid-devices=2 missing /dev/sdb1
mdadm: array /dev/md0 started.
debian:~#
Repetez cette operation pour chacune de vos partitions (dans mon cas je n’avais que /dev/sda1 au tout debut)
Creez le filesystem pour le raid:
- # mkfs.ext3 /dev/md0
A present montons le volume /Dev/md0 et copions son contenu:
- # mount /dev/md0 /mnt
- # cp -dpRx / /mnt
Faites ainsi pour chacun de vos partitions par exemple pour /var:
- # mount /dev/md1 /mnt/var
- # cp -dpRx / /mnt/var
Dans le cas de ce tutorial nous ne le ferons car nous avons tout dans une seule partitions.
Formatons la partition swap sur le nouveau disque dur sdb:
- # mkswap -v1 /dev/sdb5
Puis modifiez le fichier /mnt/etc.fstab pour qu’il ressemble a:
debian:~# cat /mnt/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/md0 / ext3 defaults,errors=remount-ro 0 1
/dev/sda5 none swap sw 0 0
/dev/sdb5 none swap sw 0 0
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
debian:~#
On notera le remplacement de /dev/sda1 par /dev/md0 et l’activation des deux partitions swap sda5 et sdb5
Editez egalement le fichier /mnt/boot/grub/menu.lst , voici a quoi ressemble dorenavant le mien:
…..
title Debian GNU/Linux, kernel 2.6.18-5-686
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/md0 md=0,/dev/sda1,/dev/sdb1 ro
initrd /boot/initrd.img-2.6.18-5-686
savedefaulttitle Debian GNU/Linux, kernel 2.6.18-5-686 (single-user mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/md0 md=0,/dev/sda1,/dev/sdb1 ro sin gle
initrd /boot/initrd.img-2.6.18-5-686
savedefault…..
Passons a grub:
grub-install /dev/sda
grub
grub: device (hd0) /dev/sdb
grub: root (hd0,0)
grub: setup (hd0)
grub: quit
Copions tout cela sur /dev/sda
debian:~# cp -dp /mnt/etc/fstab /etc/fstab
debian:~# cp -dp /mnt/boot/grub/menu.lst /boot/grub
Et on reboot!
Lors du reboot voici ce que l’on voit passer:
md: raid6 personality registered for level 6
md: raid5 personality registered for level 5
md: raid4 personality registered for level 4
md: raid10 personality registered for level 10
md: bind<sdb1>
raid1: raid set md0 active with 1 out of 2 mirrors
Attempting manual resume
Il nous faut donc ajouter /dev/sda1 a /dev/md0 :
debian:~# mdadm –add /dev/md0 /dev/sda1
mdadm: added /dev/sda1
debian:~#
Vous devriez voir cela dans votre dmesg au bout d’un ptit moment:
md: bind<sda1>
RAID1 conf printout:
— wd:1 rd:2
disk 0, wo:1, o:1, dev:sda1
disk 1, wo:0, o:1, dev:sdb1
md: syncing RAID array md0
md: minimum _guaranteed_ reconstruction speed: 1000 KB/sec/disc.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for reconstruction.
md: using 128k window, over a total of 2947776 blocks.
md: md0: sync done.
RAID1 conf printout:
— wd:2 rd:2
disk 0, wo:0, o:1, dev:sda1
disk 1, wo:0, o:1, dev:sdb1
On pretera attention : “md: md0: sync done.”
Et hop on reboot encore :p
Ceete fois ci on a:
raid1: raid set md0 active with 2 out of 2 mirrors
Mais on voit un petit message rouge pas tres gracieux:
Assembling MD Arrays … failed (no arrays found in config file or automatically)
Pour regler cela j’ai rajoute dans /etc/mdadm/mdadm.conf:
DEVICE /dev/sda*
DEVICE /dev/sdb*
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1
Et voila tout tourne bien :)
