Dans cette documentation nous allons voir ensemble comment créer un Pool ZFS en utilisant une baie iSCSI sur Proxmox VE.
Bien que l'infrastructure que j'ai montée pour cette documentation soit un "lab", nous allons faire en sorte de se rapprocher la plus possible de ce que l'on pourra mettre en "production".
Pour cela nous allons donc utiliser un accès "multipath" vers la baie iSCSI qui porte les LUNs et qui est dans mon cas un NAS Synology.
ZFS est un système de fichiers open source sous licence CDDL.
Les caractéristiques de ce système de fichiers sont sa très haute capacité de stockage, l'intégration de beaucoup de concepts que l'on trouve sur d'autres systèmes de fichiers, la gestion de volume. Wikipedia
L'environnement Proxmox que j'utilise pour faire cette documentation est un environneent virtuel.
C'est à dire que le Proxmox que je vais utiliser est une VM cependant la procédure reste identique avec un serveur physique.
Lorsque l'on parle de "RAID ZFS", on fait référence à une configuration du stockage qui utilise le système de fichier ZFS.
ZFS permettant la gestion des volumes, nous allons donc pouvoir l'utiliser pour créer des configuration RAID tout en gardant de la flexibilité.
ZFS permet d'utiliser plusieurs type de RAID, appelés "RAIDZ".
Ces différents RAID sont identiques aux RAID classiques que l'on connait mais ajoutent des caratéristiques supplémentaires propre au ZFS tels que par exemple la protection des données contre la corruption ou encore la possibilité de redimensionner les volumes de manière dynamique.

RAIDZ : Fonctinne comme un RAID-5 classique. Utilise une seule parité répartie sur les différents disques, assurant la tolérence de pannes. La configuration minimale est de 3 disques (un pour les données, un pour la parité et un pour les données supplémentaires).
RAIDZ2 : Fonctinne comme un RAID-6 classique. Utilise deux disques de parité permettant une tolérence de pannes de deux disques sans subir de perte de données. La configuration minimale est de 4 disques (deux pour les données et deux pour la parité).
RAIDZ3 : C'est une extension du RAIDZ2 permettant une meilleur tolérence de pannes. La configuration minimale est de 5 disques (deux pour les données et 3 pour la parité).
Chacun de ces RAIDZ possède les caractéristiques suivantes :
Le terme DRAID veut dire "Distributed RAID".
Ce type de RAID est spécialement conçu pour améliorer la redondance, la performance et la tolérence de pannes.

dRAID : Permet d'améliorer la réslience et les performances. Contrairement aux configurations RAID classiques où les disques sont organisés de manière linéaire, DRAID répartit les données et la parité sur tous les disques disponibles, permettant une récupération plus rapide en cas de défaillance d'un disque.
dRAID2 : Utilise plusieurs groupes de parité pour renforcer la tolérance aux pannes. Cela permet donc une meilleure répartition des données et un meilleur équilibrage de la charge sur les disques. Cependant cette configuration nécessitera plus de ressources nécessaires pour gérer la complexité de la parité supplémentaire.
dRAID3 : Ce RAID se focalise principalement sur la parité distribuée ainsi que sur la protection des données avec un niveau de redondance élevé. Utilisé principalement dans de grandes infrastructures où la capacité à tolérer la perte de plusieurs disques est essentielle.
Résumé des différences :
Evidemment, le serveur Proxmox et la baie iSCSi peuvent communiquer sur chacun des deux réseaux :


Se connecter en SSH au serveur Proxmox ou utiliser le Shell disponible dans l'interface Web.
Ajouter les paquets suivants : open-iscsi et multipath-tools.
apt update && apt install open-iscsi multipath-tools -y

nano /etc/iscsi/iscsid.conf
Nous allons configurer le démarrage automatique des connexions iSCSI sur le serveur en retirant le commentaire # de la ligne #node.startup = automatic. Commenter également la ligne node.startup = manual en ajoutant # en début de ligne.

Puis passer le Timeout de 120 secondes à 10 secondes en modifiant la ligne node.session.timeo.replacement_timeout

Enregistrer.
systemctl restart open-iscsi

iscsiadm -m discovery -t st -p IP_De_La_Baie
iscsiadm -m node --targetname "iqn.De.La.Baie" --portal "IP_De_La_Baie:3260" --login
iscsiadm -m node --targetname "iqn.2000-01.com.synology:NAS.Target-1.7ce6a5e7518" --portal "192.168.60.120:3260" --login

iscsiadm -m node --targetname "iqn.2000-01.com.synology:NAS.Target-1.7ce6a5e7518" --portal "192.168.70.120:3260" --login

iscsiadm -m node
/etc/multipath.confnano /etc/multipath.conf
defaults {
user_friendly_names yes
find_multipaths yes
features "1 queue_if_no_path"
path_grouping_policy failover
no_path_retry 100
}
ATTENTION : La configuration de ce fichier peut être beaucoup plus développée et détaillée cependant ces options suffiront pour les besoins de cette documentation.
multipathdsystemctl restart multipathd
multipath -l
Nous pouvons voir les 4 LUNs de 10Go créés sur le NAS pour cette documentation : mpatha, mpathb, mpathc, mpathd. Chacun étant accessible par deux chemins différents.
Maintenant que les 4 LUNs sont disponibiles et que le serveur Proxmox y accède, nous allons créer le ZFS à l'aide de la commande suivante :
zpool create NOM_DU_ZFS ZFS_TYPE Disk1 Disk2 Disk3 Disk4

Après avoir effectué la commande le RAID ZFS sera visible dans l'interface graphique de Proxmox.

En affichant les détails nous pouvons voir tous les disques sont "ONLINE" et sains.
