Comment déporter le stockage de votre PC sur un NAS via iSCSI

Plus besoin de multiplier les HDD !
Comment déporter le stockage de votre PC sur un NAS via iSCSI

Lorsque l'on veut placer des données dans un NAS, le plus courant est d'utiliser un protocole de partage réseau, comme SMB/CIFS (via Samba). Mais cela ne couvre pas tous les besoins, n'est pas toujours la solution la plus adaptée. On peut ainsi opter pour iSCSI si on veut déporter un périphérique de stockage.

Les serveurs vendus comme des NAS permettent de stocker des données et les partager sur un réseau local, d'où leur nom : photos, musique, documents, vidéos, sauvegardes, etc. Nous vous avons d'ailleurs déjà expliqué comment configurer un tel appareil dans ce but.

Ce que l'on sait moins, c'est qu'ils peuvent également être utilisés comme des SAN tout-en-un, pouvant héberger des volumes de stockage déportés, que l'on peut connecter à n'importe quelle machine. Il n'y a alors plus qu'à les formater et ils sont utilisables comme un disque local. Pour cela, on utilise en général le protocole iSCSI, simple et peu coûteux.

iSCSI, késako ?

Ceux qui sont dans l'informatique depuis longtemps auront sans doute déjà entendu ce nom, ou celui de sa version « locale », SCSI (Small Computer System Interface). Créé à la fin des années 80 et très populaire dans les 20 ans qui suivirent, il a progressivement été remplacé (S-ATA, SAS, etc.), donnant naissance à de nombreux dérivés.

iSCSI en est un, pensé pour exécuter les commandes de ce standard sur un réseau IP (d'où le « i », pour Internet). Il permet de déporter un périphérique de stockage dans un serveur. Il s'agit d'une solution de type Block Storage, qui est donc à mettre en œuvre au sein d'un SAN (Storage Area Network). Des notions détaillées dans un précédent article.

Pour expliquer cela plus simplement : c'est comme si vous ajoutiez un HDD/SSD à votre ordinateur, mais plutôt qu'il ne soit relié avec un câble S-ATA ou USB, il l'est à travers le réseau local. Vous le voyez néanmoins comme un périphérique de stockage normal, que vous devez formater et où vous allez placer des données. 

Une solution efficace en termes de latence et de débit, permettant de mettre un chiffrement côté client, ce qui peut avoir ses avantages. Le tout en continuant à gérer les sauvegardes et instantannés côté serveur. Bien entendu, les performances dépendront de la qualité de votre réseau. Privilégiez donc une connexion filaire, à 1 Gb/s ou plus.

Si iSCSI est souvent utilisé dans le cadre de plateformes virtualisées comme manière de centraliser un stockage déporté, c'est simple à mettre en place pour un usage des plus basiques. Voyons ce qu'il en est sur un DS3018xs de Synology, ce qui sera identique à d'autres modèles de la marque ou d'Asustor et QNAP par exemple.

Stockage iSCSI SMB
SMB/CIFS ou iSCSI : deux méthodes différentes pour stocker des donnés sur un serveur

LUN, initiateur, cible, IQN et CHAP

Pour cette série d'essais, nous partirons du principe que vous disposez d'un NAS configuré et que vous avez déjà quelques notions de base concernant le fonctionnement d'un réseau local. Mais iSCSI a ses propres termes qu'il faut apprendre à comprendre avant de commencer, rien de bien compliqué : 

  • Initiateur : C'est le client, qui initie les commandes SCSI à exécuter
  • LUN : Logical Unit Number, identifiant d'un espace de stockage déporté
  • Cible (Target) : C'est le serveur, qui recevra les commandes à exécuter
  • IQN : iSCSI Qualified Name, adresse de la cible iSCSI

Dans le cadre d'un NAS comme nous allons le pratiquer ici, il est possible de créer une ou plusieurs cibles, pouvant elle-même contenir un ou plusieurs LUN. On dit alors que ces LUN sont « mappés » à une cible. L'initiateur est, lui, en général une application permettant de se connecter aux LUN.

Il est tout à fait possible que plusieurs initiateurs se connectent à une cible en même temps. Il s'agit du MultiPath I/O (MPIO), qui doit être activé tant pour le serveur que le client et supporté par le système de fichiers utilisé. C'est notamment possible avec ESXi de VMWare. Mais aussi des serveurs Windows qui gèrent également le Multiple Connections per Session (MC/S). Des solutions surtout utilisées pour des besoins professionnels.

L'IQN est composé de la sorte :

iqn.date.autorité:identifiant

La RFC 3720 précise que l'autorité doit être référencée comme un nom de domaine inversé devant être lié à la cible. L'identifiant peut être une suite de plusieurs éléments séparés d'un point. La date, elle, doit être au format yyyy-mm et correspondre à une période pendant laquelle l'autorité détenait le nom de domaine. Plus exactement le premier mois où elle l'a possédé au 1er jour du mois à 00:01 GMT. 

Dans la pratique, et sur un réseau local, vous pouvez utiliser un peu ce que vous voulez. Voici un exemple type d'IQN généré par notre NAS Synology :

iqn.2000-01.com.synology:ds3018xs.Target-1.2486547234

Pour notre premier exemple du jour, nous utiliserons :

iqn.2020-05.local.nas:fichiers-de.test

Enfin, notez qu'iSCSI dispose de sa propre méthode d'authentification, assurant que seuls certains initiateurs peuvent se connecter à une cible : CHAP  (Challenge Handshake Authentication Protocol). La vérification peut être mutuelle ou non. Si oui, la cible doit également s'identifier auprès de l'iniateur.

Création d'une cible, avec ou sans CHAP

L'application iSCSI Manager est installée par défaut au sein des NAS de Synology. Elle propose un tableau de bord, une liste de vos cibles, LUN, un log (journal) et des paramètres. Il n'est pas nécessaire d'y toucher, nous ne les détaillerons pas ici. On trouve également une gestion des snapshots (instantanés).

Ce dernier point est d'importance, car il permet de capturer (via Replication Service) des images régulières des données des LUN pour les restaurer en cas de problème. Le client connecté n'ayant accès qu'au contenu du LUN, il ne peut modifier les autres données du serveur, ce qui est pratique pour se prémunir d'attaques de type ransomware. Vous pouvez également effectuer des sauvegardes via Synology HyperBackup, ou son équivalent chez les autres constructeurs de NAS. 

Dans la section dédiée aux cibles, cliquez sur Créer. Un IQN sera généré par défaut, ainsi qu'un nom que vous pouvez modifier à votre guise. Si vous voulez disposer d'une authentification via CHAP, vous pouvez indiquer un nom d'utilisateur et un mot de passe (de 12 à 16 caractères).

Ils seront nécessaires à l'initiateur pour se connecter.

iSCSI Création Target Synology

Une fois la cible créée vous aurez accès à des paramètres complémentaires : mapper des LUN, définir quels initiateurs peuvent se connecter ou non, quels sont les connexion réseau pouvant être utilisées, etc. Vous pouvez par exemple utiliser un port à 10 Gb/s pour vos accès iSCSI et garder ceux à 1 Gb/s pour des besoins plus courants.  

Mappage d'un LUN

L'interface vous propose ensuite de créer un LUN, d'en mapper un existant ou de procéder plus tard. Dans notre cas, nous choisissons la première option. Il faut là aussi choisir un nom à cet espace de stockage.

N'oubliez pas que plusieurs LUN peuvent être mappés sur une même cible, trouvez donc une dénomination qui convient à l'usage visé. Choisissez le volume sur lequel vous voulez créer votre LUN, sa capacité, le type d'allocation d'espace. Le Thick provisioning est sélectionné par défaut, car plus performant, celui que nous utiliserons.

Pour faire simple : tout l'espace demandé est préalloué au LUN même s'il ne contient pas de données. Le Thin Provisionning permet à l'inverse d'effectuer cette allocation au fur et à mesure. C'est plus flexible (et nécessaire pour les instantanés), mais aussi moins performant et plus risqué : si vous allouez 10 Go à dix LUN sur un espace de 50 Go, dès que cette limite sera dépassée... vous aurez un problème.

Les options avancées permettent de gérer ces cas, elles sont détaillées par ici

iSCSI LUN SynologyiSCSI LUN Synology
Il faudra trouver un meilleur nom à notre LUN pour s'y retrouver facilement

Une fois le LUN créé, vous aurez accès à des paramètres et fonctionnalités complémentaires. Vous pouvez ainsi cloner un LUN, gérer sa réplication et ses instantanés (snapshots) etc. 

Connexion à une cible depuis l'initiateur iSCSI de Windows

Windows est livré par défaut avec un initiateur iSCSI. Il suffit de se rendre dans le menu Démarrer, taper « iSCSI » et l'interface de l'application (iscsicpl.exe) apparait. 

Son utilisation est assez simple : tapez l'adresse IP de votre NAS dans le champ « Cible » et toutes les cibles iSCSI qu'il contient devraient s'afficher. Il vous suffit de choisir laquelle connecter. Dans l'onglet Découverte, vous pourrez décider si vous voulez que l'IP soit mise de côté pour plus tard, considérée comme un portail connu.

Cet initiateur contient de nombreux paramètres : de l'initiateur (nom, CHAP, etc.) ou des cibles pour la connexion (authentification par exemple). Vous pourrez également y indiquer un serveur RADIUS. Une fois la cible connectée, elle apparaîtra comme un espace de stockage à formater.

Vous pourrez le faire avec l'outil de gestion des disques de l'application Gestion de l'ordinateur (clic droit sur Ce PC dans l'Explorateur de fichiers, puis Gérer). 

Initiateur iSCSI Windows 10
Vous pouvez vous connecter directement à une cible ou cliquer sur Terminer pour accéder à ses propriétés

Connexion à une cible depuis l'initiateur iSCSI de Debian/Ubuntu

Si vous êtes sous Linux, il faudra le plus souvent installer l'initiateur iSCSI. Reportez-vous donc à la documentation de votre distribution. Sur Debian et ses dérivés tels qu'Ubuntu ou Rasbpian (que nous avons utilisé dans notre cas depuis un Raspberry Pi), cela donne :

sudo apt install open-iscsi
sudo service iscsi start

La procédure est la même que sous Windows, mais en ligne de commandes plutôt que via une interface graphique. Il faut donc là encore lister les cibles (en adaptant à votre adresse IP :

sudo iscsiadm -m discovery -t sendtargets -p 192.168.1.168

Vous pouvez vous y connecter :

sudo iscsiadm -m node -T iqn.2020-05.local.nas:fichiers-de.test --login

Vérifier la connexion avec la commande suivante :

sudo iscsiadm -m session

Et que le volume distant est accessible : 

sudo fdisk -l

Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: iSCSI Storage
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

Vous déconnecter :

sudo iscsiadm -m node -T iqn.2020-05.local.nas:fichiers-de.test --logout

Vous pouvez alors formater le volume, monter ses partitions et l'utiliser là encore comme s'il était présent au sein de la machine. Les paramètres de l'initiateur se trouvent dans un fichier à éditer :

sudo nano /etc/iscsi/iscsid.conf 

Vous pouvez par exemple demander le démarrage automatique des connexions :

node.startup = automatic

Mais aussi les paramètres CHAP, les délais d'attente, etc. Notez que certaines distributions permettent même une installation sur une cible iSCSI, nous en reparlerons dans un prochain article.

  • Introduction
  • iSCSI, késako ?
  • LUN, initiateur, cible, IQN et CHAP
  • Création d'une cible, avec ou sans CHAP
  • Mappage d'un LUN
  • Connexion à une cible depuis l'initiateur iSCSI de Windows
  • Connexion à une cible depuis l'initiateur iSCSI de Debian/Ubuntu
S'abonner à partir de 3,75 €

2000 - 2021 INpact MediaGroup - SARL de presse, membre du SPIIL. N° de CPPAP 0326 Z 92244.

Marque déposée. Tous droits réservés. Mentions légales et contact