Mdadm

De Wiki de Nelly & Richard
Sauter à la navigation Sauter à la recherche

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

  1. man mdadm
  2. mdadm --help
  3. 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

  1. Installation
  2. Initialisation du fichier principale de grub : /etc/grub/grub.cfg
  3. 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.