Utiliser une interface privée sur chacun des machines virtuelles
Nous allons commencer par créer un groupe RPN v2 dans l’interface Online afin d’y ajouter les serveurs.
Chacune des machines doit être dans le même VLAN afin qu’elles puissent communiquer ensemble. Ici l’identifiant du VLAN est 2001, vous pouvez choisir ce que vous voulez.
Au passage nous ajoutons la compatibilité avec le RPN v1, car le SAN n’est pas compatible v2.
Configurer une interface privée sur la VM pour accéder au SAN
Maintenant que nous avons configuré les pré-requis dans l’interface Online, nous allons définir une interface réseau privée sur nos VM.
La passerelle nous offre une plage d’IP que nous allons pouvoir utiliser indifféremment dans Proxmox.
La première étape consiste à créer ou éditer une interface privée. On en profite pour activer les jumbo frame en passant le MTU à 9000.
N’oubliez pas d’appliquer la configuration.
On va ensuite créer une interface virtuelle sur la VM avec également un MTU de 9000.
Au niveau IPv4 il faut choisir une adresse dans le range qui vous a été attribué avec la passerelle. La partie bridge ports doit elle reprendre d’un côté le nom de l’interface réseau source et de l’autre le VLAN id (visible dans la capture précédente avec les groupes RPN).
Reste à appliquer afin que les changements se reflètent dans le fichier /etc/network/interfaces
.
Sur le serveur on peut vérifier la configuration de l’interface :
ip a show vmbr1
On voit que l’interface réseau a bien pris l’adresse IP privée indiquée.
11: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state UP group default qlen 1000
link/ether 00:24:ec:f2:c1:fa brd ff:ff:ff:ff:ff:ff
inet 10.88.85.4/24 scope global vmbr1
valid_lft forever preferred_lft forever
inet6 fe80::224:ecff:fef2:c1fa/64 scope link
valid_lft forever preferred_lft forever
Toutefois dans l’interface d’Online nous devons explicitement autoriser le serveur et son adresse privée au niveau du SAN, autrement il sera impossible de d’y connecter.
Pour arriver au résultat suivant :
Ajout du disque iSCSI dans Proxmox
Si on regarde où se trouve notre SAN, on constate qu’il est dans un sous réseau 10.90.x.y
.
host san-dc2-11.rpn.online.net
san-dc2-11.rpn.online.net is an alias for rpn-storage-dc2-11.rpn.online.net.
rpn-storage-dc2-11.rpn.online.net has address 10.90.254.98
Notre adresse ip privée étant en 10.88
nous allons donc devoir lui expliquer comment accéder au SAN, pour cela nous ajoutons une route permettant d’accéder au SAN en utilisant la passerelle.
ip route add 10.88.0.0/13 via 10.88.85.1
Sur le noeud on va ensuite installer le paquet open-iscsi
puis configurer le fichier /etc/iscsi/iscsid.conf
avec les valeurs suivantes (extraites de la documentation) :
node.conn[0].timeo.noop_out_interval = 0
node.conn[0].timeo.noop_out_timeout = 0
node.session.timeo.replacement_timeout = 15
node.startup = automatic
node.conn[0].iscsi.HeaderDigest = CRC32C,None
node.conn[0].iscsi.DataDigest = CRC32C,None
Nous utilisons des valeurs différentes pour le replacement_timeout
, lié au fait que nous allons utiliser du multipath.
Configuration du multipath
Le protocole iSCSI est normalement à utiliser avec un seul hôte, c’est à dire qu’il est conçu pour être monté par une seule machine à la fois. Vous aurez d’ailleurs une alerte dans Online dès lors que vous configurerez plusieurs machines pouvant accèder au service.
Le multipath permet d’accèder au disque depuis plusieurs chemins différents, ce qui offre à la fois de la redondance et une amélioration des performances.
Après avoir installé le paquet multipath-tools
nous allons nous authentifier sur le SAN concerné depuis un hôte :
iscsiadm -m node -T iqn.2013-01.net.online:1aokoes065of --login
On peut maintenant voir notre disque :
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 5T 0 disk
`-sda1 8:1 0 5T 0 part
Chez moi il est monté sur /dev/sda
. On va récupérer l’identifiant du disque :
/lib/udev/scsi_id -g -u -d /dev/sda
qui nous donne l’information suivante :
149455400000000004637e3f9f5329104459d80b7be1ac5f3
Puis nous allons configurer le fichier /etc/multipath.conf
de la sorte :
defaults {
polling_interval 2
path_selector "round-robin 0"
path_grouping_policy multibus
uid_attribute ID_SERIAL
rr_min_io 100
failback immediate
no_path_retry queue
user_friendly_names yes
}
blacklist {
wwid .*
}
blacklist_exceptions {
wwid "149455400000000004637e3f9f5329104459d80b7be1ac5f3"
}
J’ai repris les réglages par défaut pour la première section. Pour la partie blacklist
et blacklist_exceptions
l’idée est de n’autoriser que ce disque en multipath et de bloquer tous les autres par défaut.
On redémarre le service après l’avoir configuré.
systemctl restart multipath-tools.service
Puis nous allons ajouter le disque concerné au multipath.
/sbin/multipath -a 149455400000000004637e3f9f5329104459d80b7be1ac5f3
On vérifie que tout fonctionne bien.
/sbin/multipath -ll
On voit bien notre disque :
mpatha (149455400000000004637e3f9f5329104459d80b7be1ac5f3) dm-0 IET,VIRTUAL-DISK
size=5.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
`- 8:0:0:0 sda 8:0 active ready running
Découpage du disque physique en disques logiques
On va tout d’abord créer le volume physique.
/sbin/pvcreate --metadatasize 250k -y -ff /dev/sda1
et un volume group pour accueillir plusieurs volumes logiques :
/sbin/vgcreate storage01 /dev/sda1
On peut ensuite commencer à créer des stockages logiques au sein du volume group :
/sbin/lvcreate -L 500G -n 01 storage01
/sbin/lvcreate -L 500G -n 02 storage01
/sbin/lvcreate -L 500G -n 03 storage01
On retrouve nos volumes logiques :
/sbin/lvscan
avec la liste suivante :
ACTIVE '/dev/storage01/01' [500.00 GiB] inherit
ACTIVE '/dev/storage01/02' [500.00 GiB] inherit
ACTIVE '/dev/storage01/03' [500.00 GiB] inherit
Il reste ensuite à les monter et les formatter pour les utiliser.
Ajout du stockage dans Proxmox
Proxmox gère également l’ajout d’un LVM et la création d’un volume group depuis l’interface. Toutefois je j’ai pas l’impression qu’on puisse créer des volumes logiques avec des tailles différentes.
Si vous souhaitez utiliser un volume logique reprenant l’ensemble de votre disque, vous pouvez le faire dans la partie Datacenter > Storage
.
On commence par ajouter notre stockage. On peut au besoin le limiter à certains noeuds. Dès lors que vous mettrez l’adresse du portal la target devrait être proposée, si ce n’est pas le cas je vous propose quelques commandes dans la section suivante pour débugger.
Une fois créé :
Commandes utiles
Si vous êtes bloqués dans l’interface Proxmox lorsque vous essayez d’ajouter le SAN, vous pouvez tenter une découverte des targets directement depuis le serveur :
iscsiadm -m discovery -t sendtargets -p san-dc2-11.rpn.online.net
Nous donne le résultat suivant :
10.90.254.98:3260,1 iqn.2013-01.net.online:1aokoes065of
Conclusion
Nous avons vu comment créer des volumes logiques distincts basés sur un disque SAN au travers du protocol iSCSI.
Si cela fonctionne bien, gardez en tête que le fonctionnement de ces disques sera malgré tout assez (voir très) lent. Si la solution se prête bien à des fichiers dont les accès sont peu fréquents (backup par exemple) elle n’est donc pas recommandée pour des fichiers système.
Notre objectif inavoué était d’ailleurs d’utiliser ces disques dans Longhorn, ce qui pourra faire l’objet d’un article ultérieur.
L’équipe Ouidou.