Mdadm
Sommaire
introduction
Le raid software bien que moins performant, permet de mettre en place à moindre coût du RAID
Site officiel de mdadm
mise en place
Nous allons créer ici un miroir avec deux disques de 160Go formatés en ext3
un peu d'aide
- man mdadm
- mdadm --help
- mdadm <action> --help
creation
- Créer une partition de type FD Linux raid autodetect de la taille du miroir désirée via fdisk.
- Création du mirroir (RAID1 sur 2 disques)
root@pc:~# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]1
information
- Le device RAID
root@pc:~# mdadm --misc --detail /dev/md0 root@pc:~# mdadm --misc -D /dev/md0
- Un disque faisant partie d'une array :
root@pc:~# mdadm --misc -E /dev/sda1
- file /proc/mdstat
root@pc:~# cat /proc/mdstat
démarrage et arrêt
Plusieurs solutions sont possibles celle de l'UUID me paraît idéale.
root@pc:~# mdadm --assemble --uuid=de662d69:db88c403:744d5c74:553b9adc /dev/md0 root@pc:~# mdadm --assemble --scan
Arrêt :
root@pc:~# mdadm --manage --stop /dev/md0
changement d'un disque
root@pc:~# mdadm --add /dev/sdc1
ajout d'un disque dans l'array
- Vous pouvez avoir à augmenter la taille de votre RAID, cet fonction est valable pour le RAID niveau 1/4/5/6 uniquement.
root@pc:~# mdadm --add /dev/sdc1
- Votre disque est ajouté mais en tant que disque de spare, il vous faut augmenter le nombre de disque dans votre array. (C'est long le reshape)
root@pc:~# mdadm -G -n 3 /dev/md0
- Si vous avez un PV (lvm2) sur /dev/md0 + un type de partition Linux raid autodetect (fd) pour /dev/sd[a-c]1 :
root@pc:~# pvresize /dev/md0
- Check du lv après démontage du lv
root@pc:~# fsck -fp /dev/VGtest/LV1
- puis lvextend pour l'augmentation du lv
root@pc:~# lvextend -L +150G /dev/VGtest/LV1
- Je suis parti sur un système de fichiers ext4
root@pc:~# resize2fs /dev/VGtest/LV1
destruction
Si jamais vous deviez utiliser à nouveaux vos disques de manières plus conventionnel, il faudra stopper le miroir puis lancer la commande :
root@pc:~# mdadm --misc --zero-superblock /dev/sd[ab]1
automatisation
fichier /etc/mdadm/mdadm.conf
Ajouter une ligne du type afin de monter de manière automatique le RAID :
#ARRAY /dev/md0 level=raid1 devices=/dev/sda,/dev/sdb # ou #ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de662d69:db88c403:744d5c74:553b9adc
Elle peut-être obtenue grâce à :
root@pc:~# mdadm -D --scan >> /etc/mdadm/mdadm.conf ou /etc/mdadm.conf
L'arrêt le démarrage du RAID peut se faire à l'aide du script de démarrage :
root@pc:~# /etc/init.d/mdadm-raid start
Installation sous ArchLinux
Maintenant nous allons voir l'installation du système complet en RAID1 software via mdadm toujours.
Archlinux
J'utilise depuis maintenant 2 ans Arch linux une distribution simple qui ne nécessite pas de faire une installation tous les six mois qui n'impose pas une ribambelle de software à l'installation et qui demande un peu de connaissance du monde linux, ici je ne décrirai uniquement la partie qui concerne l'installation du RAID, LVM et grub2.
Pour un RAID niveau 5 ou 10 il vous faudra faire une partition séparée en RAID niveau 1 ou une partition simple.
préparation pré-installation
Avant de lancer le setup de archlinux on a deux ou trois manipulations à faire.
prompt syslinux
Au menu isolinux vous pouvez modifier les options à passer au noyau
/boot/i686/vmlinuz26 initrd=/boot/i686/archiso.img archisolabel=201005 tmpfs_size=75% locale=fr_FR.UTF-8 keymap=fr
ou
/boot/x86_64/vmlinuz26 initrd=/boot/x86_64/archiso.img archisolabel=201005 tmpfs_size=75% locale=fr_FR.UTF-8 keymap=fr
chargement des modules
Chargement du module device-mapper (LVM)
root@pc:~# modprobe dm-mod
Chargement du module multiple devices (RAID)
root@pc:~# modprobe md-mod
patitionnement
- On crée les partitions à la taille désiré pour que le jour on l'on rachète un HDD même légèrement plus petit on puisse le réintégrer au miroir.
- Pour cela avec fdisk ou cfdisk il faut créer une partition de type FD Linux raid autodetect
mdadm
- Il faut que les metadata de l'array soit en version 0.90
root@pc:~# mdadm /dev/md0 --create --metadata=0.90 -l1 -n2 /dev/sd[ab]1 root@pc:~# mdadm -D /dev/md0
- Si vous construisez un RAID5, RAID6 ou RAID10 et étant donné que vous ferez une partition séparée pour le /boot l'option --metadata=0.90 n'est pas nécessaire.
LVM
- Incluons /dev/md0 comme volume physique
root@pc:~# pvcreate /dev/md0
- Nous allons créer un groupe de volumes nommé vgonraid
root@pc:~# vgcreate vgonraid /dev/md0
- Créons 2, 3, ... volumes logiques, je pars sur une installation vraiment basique (root, swap)
root@pc:~# lvcreate -n root -L 1,6G vgonraid root@pc:~# lvcreate -n swap -L 400M vgonraid
installation
- Lançons le setup en suivant les instructions...
- Au moment du partitionnement sélectionnez directement l'assignation d'un système de fichier au partitions existantes.
- Ne pas installer grub
fichiers de configuration
- bien renseigner le resolv.conf
- mettre à yes dans le fichier /etc/rc.conf la variable USE_LVM
- dans le fichier /etc/mkinitcpio.conf la ligne HOOKS est du type
HOOKS=(base udev autodetect pata scsi sata mdadm lvm2 filesystems)
- Suivant votre système à vous d'optimiser les routines, quoiqu'il en soit mettez mdadm lvm2 avant filesystems.
post-installation
- on s'installe dans notre nouveau système
root@pc:~# mount -o bind /dev/ /mnt/dev root@pc:~# mount -t proc none /mnt/proc root@pc:~# mount -t sysfs none /mnt/sysfs root@pc:~# chroot /mnt # j'imagine que vous utilisez bash
mdadm : file /etc/mdadm.conf
root@pc:~# mdadm -D --scan >> /etc/mdadm.conf
- régénérer l'initial ramdisk
root@machine:~# mkinitcpio -p kernel26
installation grub2
- Installation
- Initialisation du fichier principale de grub : /etc/grub/grub.cfg
- Installation de GRUB2 sur /dev/sda et /dev/sdb
root@pc-chroot:~# pacman -Sy grub2 root@pc-chroot:~# grub-mkdevicemap root@pc-chroot:~# grub-mkconfig -o /boot/grub/grub.cfg root@pc-chroot:~# grub-install --no-floppy --modules="raid" /dev/sda root@pc-chroot:~# grub-install --no-floppy --modules="raid" /dev/sdb
configuration : /etc/default/grub
- On peut ajouter un delai pour permettre à l'initial ramdisk de découvrir la racine qui est sur le LV en ajoutant lvmwait=/dev/md0 aux options du noyau.
- Il faudra modifier la valeur de la variable GRUB_CMDLINE_LINUX_DEFAULT pour que le changement soit prise en compte à chaque regénération du fichier grub.cfg.