Configurer le RAID et la gestion de son espace mémoire (LVM)
Nous allons ici construire l'espace de stockage de données utilisateur qui se trouve sur un RAID 5 logiciel, partitionner avec des Volumes Logiques (LV).
1 - Construire le RAID 5
A ce stade il nous faut monter le RAID 5 logiciel avec ses 3+1 disques durs de 1To. Cet article vous détaille les étapes à suivre et même un peu plus. En voici les commandes principales :
# mdadm --create /dev/md0 --level=raid5 \
--raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 \
--pare-devices=1 /dev/sde1 # mkfs.ext4 /dev/md127
Là vous avez votre RAID 'md127' prêt à l'emploi (à la création, le md0 s'est transformé en un /dev/md/0_0 qui est un lien sur /dev/md127 ?!). On pourrait sans plus de complication le 'monter' directement sur un /home_user par exemple et faire pointer le 'home' de chaque nouvel utilisateur sur ce répertoire. Mais pourquoi faire simple lorsque l'on peut faire compliquer, hein, je vous le demande ?
Comme je veux attribuer des espaces de stockage différents selon mes utilisateurs, et avoir des espaces de stockage commun comme /Archives /Media /Famille, je souhaite 'contraindre' ses espaces afin qu'ils ne 'bouffent' pas tout l'espace disponible (même si avec 2To et 3 utilisateurs je pense avoir de la marge, mais bon, on ne se refait pas !). Pour cela je vais utiliser les Volumes Logiques qui offrent beaucoup plus de souplesse en terme d'allocation dynamique d'espace mémoire que de simples partitions.
Allons-y !
2 - Allouer des Volumes Logique (LV) aux utilisateurs
Oui, il est possible d'utiliser des LV sur un RAID, la preuve nous allons le faire !
Pour ce qui est de la création de ces Volumes Logiques (LV) je vous renvoie sur cette page qui détaille les étapes à suivre et un peu plus.
Je vous en rappelle les principales commandes :
# fdisk /dev/md127
Ceci afin de créer une partition sur notre RAID de type 'Linux LV' (code 8E).
Nous avons maintenant un /dev/md127p1. On crée le PV (Volume Physique) puis le VG (Volume Groupe), comme ceci :
# pvcreate /dev/md127p1 Physical volume "/dev/md127p1" successfully created # vgcreate vg_user_data /dev/md127p1 Volume group "vg_user_data" successfully createdNous allons maintenant créer les LV aux dimensions voulues, soit :
- lv_user{1,2} de 5Go #Hé oui, je leur installe un beau serveur sécurisé, mais mes users préfèrent stocker soit sur leur micro (ce qui n'est pas 'secure', mais bon chacun fait comme il veut), soit sur le répertoire commun lv_famille.
- lv_user3 de 200Go #Là vous devinez de qui il s'agit ;-)
- lv_famille de 200Go #C'est le répertoire commun, qui contient notamment les photos familiales
- lv_media de 500Go #Là aussi, il s'agit d'un espace partagé, et si je l'ai différencié, c'est simplement pour gérer mes sauvegardes. Jusqu'à présent, les 4 espaces de stockage définis précédemment seront sauvegardés régulièrement car les données sont sensibles (ex photos), pour cet espace la contrainte n'est pas la même, car j'y mettrai des films et de la musique et comme ce ne sont que des rip de mes CD \ DVD ...
- lv_archives de 200Go #Comme le précédent, espace partagé et besoin de sauvegarde faible, car je suis un grand conservateur et je garde même ce qui n'a plus cours (comme par exemple des images iso de vieilles distributions). Donc un espace de stockage avec peu de mouvement et qui s'il venait à crasher ne me perturberait pas de trop.
Les lv_user{1-3} auront (presque) une structure classique d'un /home/user{1-3} avec ses dossiers Document, Images, Musique, Vidéos, Téléchargement, même si normalement ils n'auront pas accès à une session graphique sur la machine serveur.
Ils seront montés sur /home/user{1-3}
Par contre les lv_famille, lv_media et lv_archives seront montés comme simple répertoire sous /mnt/{famille, media, archives}
Le process de création d'un LV est le même pour tous, je ne vous montre que pour lv_archives :
# lvcreate -n lv_archives -L 200Go vg_user_data Logical volume "lv_archives" created
Voilà votre Volume Logique (LV) est créé et on peut l'utiliser comme une simple partition, c.a.d qu'on peut le "formater" :
# mkfs -t ext4 /dev/vg_user_data/lv_archives ....
et le monter :
# mount /dev/vg_user_data/lv_archives /mnt/archives
N'oubliez pas avant le 'mount' de créer le répertoire /mnt/archives si ce n'est déjà fait :
# mkdir /mnt/archives
3 - Monter les LV en dur (fstab)
Maintenant, on ne va pas s'amuser à monter manuellement tous nos espaces utilisateurs et tous nos espaces de stockage après chaque redémarrage de notre machine. Non, on va l'inscrire en dur pour que cela se fasse automatiquement lors du démarrage de la machine. Pour cela il existe un fichier, le '/etc/fstab'.
Les lignes que nous écrirons dans ce fichier (avec l'éditeur que vous voulez : vi ou emacs) ressembleront à celles-ci :
# Entrées des montages des users /dev/vg_user_data/lv_user1 /home/user1 ext4 relatime 1 2 ... # Entrées des montages des espaces de stockage /dev/vg_user_data/lv_archives /mnt/archives ext4 relatime 1 2 ...
Nota : fstab utilise maintenant l'UUID qui repère une partition non par son chemin (/dev/sdx) mais par un numéro de 32 chiffres hexadécimaux. Un 'lvdisplay' vous affiche l'UUID de chaque LV, mais ce n'est pas la peine de le mettre dans fstab car il ne sera pas reconnu (à priori cela ne marche que pour des vraies partitions)
A ce stade, nous avons défini nos différents espaces mémoire (utilisateurs et stockage commun); ces espaces sont montés automatiquement au démarrage de la machine; il nous reste à les attribuer aux utilisateurs avec les bons droits.
4 - Problème(s) connu(s)
4.1 - Au redémarrage du serveur, les LV ne se "montent" pas
Curieusement au redémarrage (reboot) du serveur, il arrive fréquemment (mais pas tout le temps !?) que mes LV de stockage ne soient pas montés, alors que ceux où est installé le système le sont (heureusement d'ailleurs, sinon l'OS serait planté).
Pour contourner ce problème (en effet je ne l'ai pas résolu) voir Comment activer et monter automatiquement des Volumes Logiques (LV) ?