Le gestionnaire LVM au niveau du SAN
Afin d’illustrer ce que l’on vient de voir, mais, cette fois-ci au niveau de disques de type LUN, issus d’une baie de stockage, on prendra l’exemple du virtualiseur IBM Storage Volume Controler permettant de sélectionner les volumes découpés au sein de baies hétérogènes. On va ainsi découvrir les trois catégories d’opérations :
- Ajout de volume(s) depuis IBM Storage Volume Controler
- Agrandissement de volume(s) depuis IBM Storage Volume Controler
- Suppression de volume(s) depuis IBM Storage Volume Controler
Mais, généralement, par mesure de sécurité, les volumes des baies de stockage sont accessibles par différents chemins pilotés par les contrôleurs HBA (Host Bus Adapter). Ce mécanise de sécurisation des accès au LUN, s’appelle le multipath, il permet, en cas de panne de pouvoir toujours accéder aux données hébergées sur la LUN :
Depuis la version RHEL 6 (ou CentOS 6), la gestion du multipathing est directement intégrée au système d’exploitation. On peut donc dès le démarrage, activer au niveau du BIOS Emulex les différents chemins vus par les cartes HBA. Ainsi, au boot les différents paths seront tous vus.
REMARQUE : au niveau de GNU/Linux, le multipathing s’administre via le fichier /etc/multipath.conf, contrôlé par l’utilitaire mpathconf, qui permet d’ajouter, de modifier ou de retirer des chemins (voire des LUNs).
Le fichier de configuration se compose de sections permettant de gérer les différentes LUN sous forme de liste privilégiée (whitelist) ou à ignorer (blacklist). Les principales sections sont généralement les suivantes :
- Defaults
- Blacklist
- Blacklist_exceptions
- Multipaths
Lors de la manipulation des LUN, issus du Storage Virtualizer Controler, vis-à-vis du système d’exploitation, il s’agit de relever le n° d’identifiant de la LUN et de la reporter dans les sections [blacklists_exceptions] et [multipaths].
Exemple : pour une LUN ayant l’identifiant wwid "3600507680181057f4800000000000ed1" on devra déclarer dans le fichier multipath.conf les lignes suivantes :
Sommaire
I. Ajout d’une nouvelle LUN sur le système Linux
On va donc voir maintenant comment déclarer une nouvelle LUN au niveau du système d’exploitation GNU/Linux. Lorsque la LUN est initialisée sur le Storage Volume Controler, il faut alors reporter dans le fichier /etc/multipath.conf son identifiant wwid, comme décrit ci-dessus.
Ensuite, il faut initialiser la découverte de la nouvelle LUN, au niveau des contrôleurs disques du serveur :
# echo 1 > /sys/block/sdX/device/rescan
REMARQUE : sur Internet, on trouve des scripts permettant de remplacer la saisie manuelle de toutes ces commandes. Il en existe un : lun_scan.sh permettant l’initialisation de la LUN et sa découverte par le système.
(où x représente la position du périphérique sur le bus SCSI). Il faut donc exécuter cette commande autant de fois qu’il n’y a de chemins présentés. Ensuite, il faut recharger la configuration du daemon multipathd :
# systemctl reload multipathd
Afin de vérifier que la nouvelle LUN est bien présente maintenant sur le système, on peut exécuter la commande suivante :
# multipath –ll /dev/mapper/mpathb
A ce stade, on se retrouve dans la même situation que précédemment, concernant l’ajout d’un nouveau volume (ou d’une nouvelle partition), en mode “local“. On doit alors pouvoir créer un volume physique, puis un groupe de volumes et un ou plusieurs volumes logiques :
# pvcreate /dev/mapper/mpathb
# vgcreate vg01 /dev/mpapper/mpathb
# lvcreate –n lv-soft –l 100%FREE vg01
# mkfs –t ext4 /dev/vg01/lv-soft
Il ne reste plus alors qu’à modifier le fichier /etc/fstab pour rendre ce montage systématique lors de la phase de démarrage du système et de créer le point de montage et son système de fichiers associé :
# mkdir /soft
# mount /soft
II. Modification d’une LUN sur le système Linux
Afin de modifier la taille d’une LUN déjà existante sur le serveur, on doit le faire en premier lieu au niveau de l’interface graphique Storage Volume Controler, puis ensuite, sur le serveur lui-même.
Afin de permettre l’ajout de volumétrie (ou la réduction), il faut modifier le fichier rescan de /sys/block/sdx/device en forçant la valeur à 1 :
# echo 1 > /sys/block/sdX/device/rescan
Si chaque contrôleur possède quatre voies d’accès en mode multipath, il faudra effectuer cette commande huit fois sur les chemins ci-dessous :
On peut alors recharger la configuration du service multipathd en exécutant la commande suivante :
# systemctl reload multipathd
Une fois que la nouvelle volumétrie est activée, on peut alors étendre le volume physique, le volume logique et le système de fichiers:
# pvresize /dev/mapper/mpathb
# lvextend –l +100%FREE /dev/vg01/lv-soft
# resize2fs /dev/vg01/lv-soft
III. Suppression d’une LUN sur le système Linux
Avant de pouvoir supprimer une LUN, il est impératif de démonter le système de fichiers :
# umount /soft
REMARQUE : il faut alors modifier le fichier /etc/fstab afin de supprimer l’enregistrement du montage en question.
Ensuite, on peut supprimer le volume logique, suivi de son groupe de volumes (si celui-ci est vide de tout autre volume logique) et pour finir de son volume physique :
# lvremove /dev/vg01/lv-soft
# vgremove vg01
# pvremove /dev/mapper/mpathb
Pour finir, il faut aussi modifier le fichier /etc/multipath.conf et supprimer les occurrences de la LUN que l’on souhaite enlever :
Enfin, on peut alors recharger la configuration du service multipathd et s’assurer que la LUN a bien été supprimée :
# systemctl reload multipathd
# multipath –ll
Ce qui a été mis en œuvre, dans cet exemple, pour la baie de stockage Storage Volume Controler peut également s’appliquer à d’autres marques de baie de stockage ou à d’autres modèles de gestion. Le mécanisme de multipathing est parfaitement transportable à d’autres architectures et permet de sécuriser les chemins d’accès aux différents volumes présentés par le virtualiseur tout en s’appuyant sur le modèle LVM.