Migration vers un raid1 logiciel

1:51 pm Debian, Mdadm, Raid

Recemment 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 bytes

Disk /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 bytes

Device 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 bytes

Device 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
savedefault

title 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 :)

Leave a Comment

Your comment

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.