====== Exploration de iSCSI sur PC BSD et FreeNAS ======
Une documentation très concise du handbook FreeBSD est disponible ici.
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-iscsi.html
===== Configuration du serveur sur FreeNAS. =====
En terminologie iscsi on nomme l'espace de stockage, **TARGET** (une cible), les utilisateurs de cet espace sont les **INITIATORS**.
On peut soit utiliser le wizard plutôt bien fait pour renseigner les données nécessaires aux initiators pour se connecter dessus. On peut aussi se fier à des tutoriaux sur YouTUBE.
https://www.youtube.com/watch?v=p97Yg7u8fSk
https://www.youtube.com/watch?v=nhME_CbZrQs
==== Notre cas d'étude ====
=== Configuration générale de la cible ===
^Nom|iqn.2015-06.fr.acc, pas d'authentification|
^Portail|1 (écoute 192.168.10.4:3260)|
=== Initiateurs autorisés ===
^ID du groupe|2 tous les initiateurs, tous les réseaux|
^accès autorisé|ID de groupe 1 utilisateur : dc|
=== Information est optionnelle ===
^Cibles|target1, freenas0|
^:::|nasdcatarget, freenas1|
===== Configuration de l'initiateur (côté client) =====
La configuration se trouve dans le fichier /etc/iscsi.conf
# /etc/iscsi.conf
# TargetName=iqn.2015-06.fr.acc:nasdcatarget
# TargetAddress=192.168.10.4:3260,2
#
nas_DCA{
targetaddress = freenas.acc.fr
targetname = iqn.2015-06.fr.acc:nasdcatarget
}
Cette configuration permet de monter le device iscsi au démarrage. Ensuite on inclura le montage dans la table fstab.
Outil de contrôle et de connexion pour l'initiateur
#sudo iscsictl -L #liste les cible possibles et celles qui sont ajoutées avec leur virtual device associé.
[dc@vertigo] ~% sudo iscsictl -L
Target name Target portal State
iqn.2015-06.fr.acc:nasdcatarget freenas.acc.fr Connected: da1
# sudo iscsictl -An nas_DCA # ajoute et connecte la cible
# sudo iscsictl -Aa #ajoute et connecte toutes les sessions mentionnées dans le fichier de configuration /etc/iscsi.conf
# sudo iscsictl -Rn nas_DCA # retire la session
Nous constatons dans le listage des sessions iscsi que le nom du périphérique (vdev) apparaît. Dans ce cas nous savons que /dev/da1 (disque entier) est le special file qui va servir lors de la commande de création du système de fichier (formatage pour les utilisateurs de MS-DOS). Une fois créé le système de fichier pourra être monté. Cependant comme le special file peut varier selon l'ordre de branchement des périphériques amovibles, il est nécessaire de mettre un nom logique qui sera mis en relation avec le special file actuel lors de la création du devfs au démarrage du système. La création de ce nom logique est la labellisation du périphérique de stockage.
Attention la labellisation du special file n'est pas nécessaire dans le cas où le système de fichier est de type ZFS.
==== Sur la machine de l'initiator ====
=== Montage du périphérique iSCSI ===
Dans le gestionnaire de fenêtre de PCBSD un utilitaire permet de monter ou de démonter des périphériques amovibles. Il s'agit d'une applet située dans la barre de tâches. Une liste des périphériques amovibles est affichée et des boutons permettent de monter/démonter les volumes et de les monter dès qu'ils sont branchés à l'ordinateur.
=== Labelisation d'un périphérique de stockage avec un nom permanent ===
Il est possible de mettre un nom logique sur un périphérique de stockage ayant un special file dans le système de fichier devfs. Par exemple soit un système de fichier créé de type UFS pour le special file /dev/da3, le nom donné sera « home » qui sera permanent. Le nom « home » apparaitra le devfs comme « /dev/ufs/home ».
Pour réaliser l'opération il faut lancer la commande.
tunefs -L home /dev/da3
https://www.freebsd.org/doc/handbook/geom-glabel.html
=== Cas d'utilisation ===
Au démarrage du système, les options suivantes sont lues dans le fichier de configuration /etc/rc.conf :
iscsid_enable="YES" # activation du daemon iscsid
iscsictl_enable="YES" # activation de l'outil de contrôle du daemon
iscsictl_flags="-Aa" # l'option -Aa est passée à iscsictl c'est à dire toutes les cibles contenues dans iscsi.conf sont ajoutées
L'applet peut désormais proposer "nas" comme périphérique amovible à monter. Cette applet permet aussi de naviguer dans l'espace de stockage et donner son utilisation.
## /etc/iscsi.conf
# TargetName=iqn.2015-06.fr.acc:nasdcatarget
# TargetAddress=192.168.10.4:3260,2
#
nas_DCA{
targetaddress = freenas.acc.fr
targetname = iqn.2015-06.fr.acc:nasdcatarget
}
Dans notre cas nas est un pool ZFS créé avec la commande
# zpool create nas /dev/da1
la commande zpool status
retournera :
[dc@vertigo] ~% zpool status
pool: nas
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
nas ONLINE 0 0 0
da1 ONLINE 0 0 0
errors: No known data errors
La commande mount retournera :
[dc@vertigo] /etc% mount
...
nas on /media/nas (zfs, local, nfsv4acls)
...
dans le cas de zfs il n'est pas nécessaire d'utiliser la commande tunefs pour labeller le périphérique da1 en nas. Pour zfs, da1 est un vdev (virtual device) pour les autres système de fichiers c'est un special file.
Un vdev est un périphérique de stockage qui peut être soit un disque complet, soit une partition, soit un fichier, soit une entité RAID, soit un miroir ...
===== Conclusion =====
à la fin de cette exploration, il est possible d'exploiter un espace de stockage réservé sur un NAS. On doit créer un répertoire avec les bonnes permissions afin de permettre à ses propriétaires de l'utiliser en lecture écriture. Les ACLs sont utilisables.