Mise en place du RAID1 et LVM chez OVH

Bonjour,

Cela faisait quelques temps que je voulais publier un article sur le RAID.

J’avais déjà du y toucher il y a plus d’un an, lorsque plusieurs disques durs sont tombés en panne sur mes serveurs, afin de refaire une architecture de données plus safe.

Venant d’acquérir une nouvelle machine récemment, je vais sauter sur l’occasion pour vous présenter la mise en place du raid.

Mise en situation

J’ai loué un nouveau serveur EG 2011-Hybrid dans le but de virtualiser des VMs (machines virtuelles) dessus avec Proxmox/OpenVZ.
Le choix de l’hybrid est simple, j’ai besoin d’un serveur SQL haute performance qui tourne sous MySQL et pour optimiser son fonctionnement, les base de données se trouvent sur des disques SSD.
Mais j’ai aussi besoin d’espace de stockage pour tout le reste, d’où le choix “Hybrid”.

Comme pour toute distribution GNU/Linux, nous allons avoir 2 points de montage principaux :

  • la racine : /
  • le swap

Utilisant Proxmox, il faut ajouter un point de montage pour le fonctionnement de OpenVZ :

  • /var/lib/vz
  • /var/lib/vz/private qui contient les disques de chaque VMs, nous le configurerons plus tard dans l’article.

Nous allons donc placer la racine et le swap sur le SSD et conserver un espace libre pour installer MySQL par la suite.
Les données des autres VMs seront sur les disques SATA.

Malheureusement OVH ne propose pas de partitionner les disques SATA, nous allons donc dans un premier temps placer /var/lib/vz sur le SSD puis nous le supprimerons.

Les deux disques SSD constitueront un premier volume RAID1 et les deux disques SATA constitueront un deuxième volume RAID1.
Ceci afin de conserver toutes les données en miroir en cas de panne d’un disque.

Nous utiliserons LVM pour gérer l’espace du volume RAID SATA et pour l’espace autre que le swap et la racine sur le volume RAID SSD.
Cela permet de créer aisément des volumes logiques (comparable à des partitions) et de faciliter leur gestion.

Une fois le serveur réinstallé on passe à la suite.

Mise en place du RAID1

Normalement les disques SSD sont configurés tels que prévus, nous allons donc, dans cette partie, nous occuper uniquement des disques SATA.

Il va falloir repérer quels sont les volumes raids existants, afin de ne pas créer un volume du même nom.

Pour cela, utilisez la commande : cat /proc/mdstat

Cela retourne quelque chose comme ça :

1
2
3
4
5
6
7
8
# cat /proc/mdstat Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md5 : active raid1 sda5[0] sdb5[1]
24742016 blocks [2/2] [UU]
md1 : active raid1 sda1[0] sdb1[1]
10238912 blocks [2/2] [UU]
unused devices: <none>

Nous voyons que les volumes md5 et md1 sont existants.
Nous allons donc créer un volume md2 qui contiendra les disques SATA.

Ici les disques SATA s’intitulent sdc et sdd.

Note: Un fdisk -l vous permet de lister les disques et de voir le nom des disques.

Voici la commande pour créer le volume en RAID1 :

1
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdc /dev/sdd'

Nous précisions le nom du volume, le niveau de RAID, le nombre de disques et le nom des disques.

Une fois fait, nous allons formater le volume en ext3 avec :

1
mkfs.ext3 /dev/md2

La commande mdadm –detail /dev/md2 vous permet de vérifier l’état du volume RAID.

En cas de panne sur sdd, on peut le déclarer comme défaillant, ajouter un disque sde, puis retirer sdd :

1
mdadm /dev/md2 --fail /dev/sdd mdadm /dev/md2 --add /dev/sde mdadm /dev/md2 --remove /dev/sdd

Nous avons maintenant des volume RAID entièrement fonctionnels.

Mise en place du LVM

Avant tout il faut comprendre un petit peu le LVM et son fonctionnement.
LVM manipule 3 sorte de volumes :

  • les PV ou physical volumes qui correspondent aux partitions du disque dur physique;
  • les VG ou volume groups qui sont des groupes de PV, soit des disques virtuels;
  • les LV ou logical volumes sont les subdivisions des VG, soit des partitions virtuelles.

La partition montée sur /var/lib/vz étant dans le LVM, nous avons déjà un LV, un VG et un PV.

Nous allons déclarer le volume RAID que nous venons de créer comme PV.

1
pvcreate /dev/md2

Vérifions la liste des PV avec :

1
pvdisplay -C

Note: l’option -C allège l’affichage, celle-ci n’est pas nécessaire.

Créons ensuite le VG vg_sata associé aux disques SATA :

1
vgcreate vg_sata /dev/md2

Là encore, nous pouvons lister les VG avec :

1
vgdisplay -C

Nous allons maintenant nous occuper de nos LV.

Commençons par créer le LV qui accueillera /var/lib/vz sur les disques SATA.

1
lvcreate -n lv_vz -L 10G vg_sata

Nous allons aussi créer un LV pour les snapshots et un LV pour les disques virtuels des différentes VMs.

1
2
lvcreate -n lv_vzdump -L 50G vg_sata
lvcreate -n lv_vzdisks -L 1500G vg_sata

Une fois créés, les LV sont représentés par des fichiers situés dans /dev/mapper.

On formate tout ça :

1
2
3
mkfs.ext3 /dev/mapper/vg_sata-lv_vz
mkfs.ext3 /dev/mapper/vg_sata-lv_vzdump
mkfs.ext3 /dev/mapper/vg_sata-lv_vzdisks

Nos volumes sont prêts, nous allons maintenant voir comment les monter et déplacer le volume qui est sur le SSD vers le SATA.

Montage des LV

Le plus simple est d’éditer le fichier /etc/fstab afin de conserver le montage à chaque redémarrage.
Votre fichier doit ressembler à ça :

/etc/fstab
1
2
3
4
5
6
7
<file system> <mount point> <type> <options> <dump> <pass>
/dev/md1 / ext3 errors=remount-ro 0 1
/dev/vg1/lv1 /var/lib/vz ext3 defaults 1 2
/dev/sda2 swap swap defaults 0 0
/dev/sdb2 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0

Il faut le modifier comme ça :

/etc/fstab
1
2
3
4
5
6
7
8
9
<file system> <mount point> <type> <options> <dump> <pass>
/dev/md1 / ext3 errors=remount-ro 0 1
/dev/vg_sata/lv_vz /var/lib/vz ext3 defaults 1 2
/dev/vg_sata/lv_vzdisks /var/lib/vz/private ext3 defaults 1 2
/dev/vg_sata/lv_vzdump /var/lib/vz/vzdump ext3 defaults 1 2
/dev/sda2 swap swap defaults 0 0
/dev/sdb2 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0

Remonter toutes les partitions avec :

1
mount -a

On va ensuite remonter l’ancienne partition /var/lib/vz :

1
mount /dev/vg1/lv1 /mnt

On copie tout vers notre nouvelle partition :

1
cp -Rf /mnt/* /var/lib/vz

On démonte la partition :

1
umount /var/lib/vz

On supprime ensuite le LV devenu inutile :

1
lvremove /dev/vg1/lv1

Et voilà, vos disques SATA sont prêt, votre système fonctionne parfaitement.

Si vous avez bien suivi, il vous reste la moitié de votre volume SSD qui est vide, à vous de faire vous même vos LV.

Merci de poster en commentaire vos remarques et questions.