Comment partager les volumes ZFS via ISCSI

Comment partager les volumes ZFS via ISCSI

Les volumes ZFS sont des périphériques de stockage en blocs qui fonctionnent comme tout autre périphérique de stockage (disque dur / ssd). Vous pouvez créer des tables de partition, créer de nouvelles partitions, formater ces partitions, créer des systèmes de fichiers et les monter sur votre ordinateur.

Vous pouvez également partager des volumes ZFS via le protocole ISCSI et y accéder à partir d'ordinateurs distants.

Dans cet article, je vais vous montrer comment partager les volumes ZFS via ISCSI et y accéder à partir d'ordinateurs distants. J'utiliserai l'ubuntu 20.04 Système d'exploitation LTS pour la démonstration. Cependant, les étapes indiquées dans cet article devraient également fonctionner sur d'autres distributions Linux avec certains ajustements.

Commençons.

Table des matières:

  1. Diagramme de réseau
  2. Installation de TGT sur le serveur ISCSI
  3. Installation d'ISCSI ouvert sur le client ISCSI
  4. Création d'une piscine ZFS
  5. Création de volumes ZFS
  6. Créer des cibles ISCSI
  7. Ajout de volumes ZFS aux cibles ISCSI
  8. Configuration de l'authentification ISCSI (Facultatif)
  9. Génération de configuration du serveur ISCSI
  10. Accéder aux volumes ZFS partagés via ISCSI
  11. Montant automatiquement les volumes ZFS partagés via ISCSI
  12. Conclusion
  13. Les références

Diagramme de réseau:

Dans cet article, je vais mettre en place deux Ubuntu 20.04 Ordinateurs LTS: iscsi-server et iscsi-client. Je vais installer ZFS et le logiciel Server ISCSI sur le Ordinateur ISCSI-Server et le configurer pour partager les volumes ZFS via ISCSI.

Je vais installer le Logiciel client ISCSI sur le ordinateur iscsi-client et le configurer pour accéder aux volumes ZFS exportés à partir du Ordinateur ISCSI-Server via ISCSI.

L'ensemble de la configuration est visualisé dans la figure ci-dessous:

Installation de TGT sur le serveur ISCSI:

Dans cette section, je vais vous montrer comment installer le package de serveur ISCSI TGT sur l'ordinateur ISCSI-Server.

Tout d'abord, mettez à jour le cache du référentiel de package APT comme suit:

$ sudo apt mise à jour

Ensuite, installez le package TGT sur l'ordinateur ISCSI-Server avec la commande suivante:

$ sudo apt install tgt -y

Si vous n'avez pas déjà installé ZFS sur l'ordinateur ISCSI-Server, vous pouvez l'installer avec la commande suivante:

$ sudo apt installer zfsutils-linux -y

Installation de l'Open-ISCSI sur le client ISCSI:

Dans cette section, je vais vous montrer comment installer le Package client ISCSI Open-ISCSI sur le iscsi-client ordinateur.

Tout d'abord, mettez à jour le cache du référentiel de package APT avec la commande suivante:

$ sudo apt mise à jour

Ensuite, installez le Package à ISCSI ouvert sur le ordinateur iscsi-client avec la commande suivante:

$ sudo apt install open-issi -y

Création d'une piscine ZFS:

Pour la démonstration, je vais créer une piscine ZFS, Pool1, sur le iscsi-server ordinateur en utilisant le stockage VDB et VDC dispositifs:

$ sudo lsblk -e7 -d

Créez un pool ZFS, Pool1, en utilisant les périphériques de stockage VDB et VDC dans la configuration du miroir comme suit:

$ sudo zpool Create -f Pool1 Mirror VDB VDC

Une nouvelle piscine ZFS, Pool1, doit être créée sur l'ordinateur ISCSI-Server.

$ sudo zfs

Création de volumes ZFS:

Dans cette section, je vais vous montrer comment créer des volumes ZFS Vol1 et Vol2 sur le Piscine ZFS, piscine1, afin que vous puissiez les exporter via ISCSI.

Pour créer un volume ZFS Vol1 de taille 1 Go sur le pool ZFS, pool1, exécutez la commande suivante:

$ sudo ZFS Créer -V 1G Pool1 / Vol1

Pour créer un volume ZFS Vol2 de taille 2 Go sur le pool ZFS, pool1, exécutez la commande suivante:

$ sudo ZFS Create -V 2G Pool1 / Vol2

Les volumes ZFS Vol1 et Vol2 doivent être créés dans la piscine ZFS, pool1.

$ sudo zfs

Création des cibles ISCSI:

Une cible ISCSI est comme un conteneur nommé. Vous pouvez y mettre un ou plusieurs volumes ZFS. Lorsque vous accédez à une cible à partir d'autres ordinateurs, tous les volumes ZFS que vous avez placés dans ce conteneur seront montés.

Les noms cibles ISCSI ont un format standard:

iqn.-.:

Ici:

- L'année au format à 4 chiffres. je.e. 2021, 2018

- Le mois numérique au format à 2 chiffres. Devrait être dans la gamme 01-12. je.e. 01 (pour janvier), 08 (pour août), 12 (décembre)

- Le nom de domaine entièrement qualifié en format inverse. je.e. iscsi.linuxhint.com devrait être écrit comme com.linuxhint.iscsi.

- Cela peut être quelque chose d'unique dans votre configuration. Pour la configuration des petites maisons et du bureau, vous pouvez utiliser le nom du pool ZFS et le nom du volume (je.e., piscine 1.Vol1, pool1.vol2) ou le nom du département / de la succursale (je.e., ingénierie.PC1, compte.PC2, ingénierie.US-1, compte.Royaume-Uni-2) des clients qui utiliseront ces volumes partagés. Cela devrait être assez unique. Dans une grande entreprise, vous pouvez utiliser un UUID unique pour chaque cible.

Dans cette section, je vais vous montrer comment créer Deux cibles ISCSI: IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1 et iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol2. Dans la section suivante, je vais vous montrer comment ajouter des volumes ZFS à ces cibles.

Pour créer un ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1 et définissez un ID de 1 pour la cible, exécutez la commande suivante:

$ sudo tgtadm --lld iscsi --op new - mode cible --tid 1 --targetname iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol1

De la même manière, exécutez la commande suivante pour créer un ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2 et définir un ID de 2 pour la cible:

$ sudo tgtadm --lld iscsi --op new - mode cible --tid 2 --targetname iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol2

Pour répertorier toutes les cibles que vous avez créées, exécutez la commande suivante:

$ sudo tgtadm --lld iscsi --op show - mode cible

Les cibles que vous avez créées devraient être répertoriées, comme vous pouvez le voir dans la capture d'écran ci-dessous:

Ajout de volumes ZFS aux cibles ISCSI:

Les volumes ZFS que vous ajouterez à une cible sont appelés LUNS (Unités logiques).

Comme mentionné précédemment, vous pouvez ajouter un ou plusieurs volumes ZFS dans une cible ISCSI. Mais, si vous le faites, lorsque vous accédez à la cible depuis d'autres ordinateurs, tous les volumes ZFS que vous avez ajoutés à cette cible seront montés. Donc, si vous voulez autoriser l'accès à un seul Volume ZFS par cible ISCSI, Ajoutez un seul volume ZFS à une cible ISCSI.

Dans cette section, je montre comment ajouter les volumes ZFS Vol1 et Vol2 aux cibles iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 et IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2, respectivement.

Chacun de LUNS dans une cible ISCSI a un identifiant à partir de 0. Alors, le premier Lun s'appelle Lun 0. Ensuite, le second Lun s'appelle Lun 1, tandis que le Le troisième lun s'appelle Lun 2, et ainsi de suite.

Par défaut, Lun 0 de chaque iscsi La cible sera occupée par un contrôleur ISCSI, comme indiqué dans la capture d'écran ci-dessous. Donc, vous devrez utiliser Lun 1, Lun 2, Et ainsi de suite pour ajouter vos volumes ZFS aux cibles ISCSI.

$ sudo tgtadm --lld iscsi --op show - mode cible

Pour ajouter le Volume ZFS Vol1 du ZFS Pool Pool1 comme LUN 1 à l'ID cible 1 (iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol1), exécutez la commande suivante:

$ sudo tgtadm --lld iscsi --op new - mode logicyunit --tid 1 --lun 1 --backing-store / dev / pool1 / vol1

Pour ajouter le Volume ZFS Vol2 du Pool ZFS, piscine1, comme Lun 1 à l'ID cible 2 (iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol2), exécutez la commande suivante:

$ sudo tgtadm --lld iscsi --op new - mode logicyunit --tid 2 --lun 1 --backing-store / dev / pool1 / vol2

Le Volume ZFS Vol1 doit être ajouté au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 comme Lun 1, comme marqué dans la capture d'écran ci-dessous:

$ sudo tgtadm --lld iscsi --op show - mode cible

Le Volume ZFS Vol2 doit être ajouté au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 comme Lun 1, comme marqué dans la capture d'écran ci-dessous:

Configuration de l'authentification ISCSI (facultative):

Dans cette section, je vais vous montrer comment activer l'authentification de base du nom d'utilisateur et du mot de passe pour le ISCSI cible IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1 et iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol2.

Vous pouvez volontiers ignorer cette section si vous ne souhaitez pas activer l'authentification pour vos cibles ISCSI.

Tout d'abord, créez un nouveau Utilisateur ISCSI Linuxhint1 avec un mot de passe factice 123456 (vous devrez le changer plus tard) avec la commande suivante:

$ sudo tgtadm --lld iscsi --op new - mode compte --User Linuxhint1 - Password 123456

De la même manière, créez un autre utilisateur ISCSI LinuxHint2 avec un mot de passe factice 456789 (vous devrez le changer plus tard) avec la commande suivante:

$ sudo tgtadm --lld iscsi --op nouveau - compte - (user Linuxhint2 - Password 456789

utilisateurs ISCSI Linuxhint1 et LinuxHint2 devrait être créé, comme vous pouvez le voir dans la capture d'écran ci-dessous:

$ sudo tgtadm --ld iscsi --op show - compte-mode

Pour permettre uniquement à l'accès utilisateur LinuxHint1 à la ISCSI Target ID 1 (IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1) à partir des clients ISCSI distants, exécutez la commande suivante:

$ sudo tgtadm --lld iscsi --op bind - compte du compte --Tid 1 --User Linuxhint1

De la même manière, pour permettre le Utilisateur LinuxHint2 accès au ISCSI Target ID 2 (IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2) à partir des clients ISCSI distants, exécutez la commande suivante:

$ sudo tgtadm --lld iscsi --op bind - compte du compte --Tid 2 --User Linuxhint2

Le Compte utilisateur LinuxHint1 doit être ajouté à ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1, Comme vous pouvez le voir dans la capture d'écran ci-dessous:

$ sudo tgtadm --lld iscsi --op show - mode cible

Le Compte d'utilisateur LinuxHint2 devrait également être ajouté à ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2, Comme vous pouvez le voir dans la capture d'écran ci-dessous:

Génération de la configuration du serveur ISCSI:

Dans cette section, je vais vous montrer comment générer un fichier de configuration pour le serveur ISCSI afin que les modifications que vous avez apportées soient persistantes et survivre au système de système.

Tout d'abord, permettez l'accès au ISCSI Target ID 1 (IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1) à partir de tout client ISCSI comme suit:

$ sudo tgtadm --lld iscsi --op bind - mode cible --tid 1 - initiateur-address

De la même manière, permettez l'accès au ISCSI Target ID 2 (IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2) à partir de tout client ISCSI comme suit:

$ sudo tgtadm --lld iscsi --op bind - mode cible --tid 2 - initiateur-address

Maintenant, videz la configuration actuelle du serveur ISCSI dans le fichier de configuration du serveur ISCSI / etc / tgt / cibles.confli comme suit:

$ sudo tgt-admin - Dump | Sudo Tee / etc / tgt / cibles.confli

La configuration actuelle du serveur ISCSI doit être enregistrée dans le / etc / tgt / cibles.confli déposer.

Le mot de passe de l'utilisateur ne sera pas enregistré. Donc, vous devrez remplacer S'il vous plaît_correct_the_password chaîne avec le mot de passe utilisateur dans le / etc / tgt / cibles.fichier de confr.

Ouvrez le fichier de configuration du serveur ISCSI / etc / tgt / cibles.confli avec l'éditeur de texte Nano comme suit:

$ sudo nano / etc / tgt / cibles.confli

Remplacer les cordes S'il vous plaît_correct_the_password avec le mot de passe utilisateur respectif ici:

Pour le Utilisateur LinuxHint1, Je vais définir le mot de passe secret1, et pour le Utilisateur LinuxHint2, Je vais définir le mot de passe secret2 comme marqué dans la capture d'écran ci-dessous.

Une fois que vous avez terminé, appuyez sur + X suivi de y et Pour sauver le / etc / tgt / cibles.fichier de confr:

Pour que les modifications prennent effet, redémarrez Ordinateur ISCSI-Server:

$ sudo redémarrer

Une fois la Bottes d'ordinateur ISCSI-Server, Le serveur ISCSI devrait fonctionner Port 3260, Comme affiché dans la capture d'écran ci-dessous:

$ sudo ss -tlpn

Accéder aux volumes ZFS partagés via ISCSI:

Une fois que vous avez réglé le serveur ISCSI sur le Ordinateur ISCSI-Server, vous pouvez accéder au Volumes ZFS Vol1 et Vol2 via ISCSI sur l'ordinateur ISCSI-Client.

Pour accéder au cibles ISCSI du Ordinateur ISCSI-Server, vous devez connaître l'adresse IP du Ordinateur ISCSI-Server. Dans mon cas, l'adresse IP de mon Ordinateur ISCSI-Server est 192.168.122.98. Ce sera différent pour vous. Alors, assurez-vous de le remplacer par le vôtre à partir de maintenant.

$ hostname -i

Pour découvrir toutes les cibles iscsi du iscsi-server (adresse IP 192.168.122.98), Exécutez la commande suivante:

$ sudo iscsiadm - Mode Discovery - Type Sendtargets - Portal 192.168.122.98

Comme vous pouvez le voir, le ISCSI cible IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 et IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2 sont répertoriés.

Si vous n'avez pas configuré d'authentification, vous devriez pouvoir accéder à la ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 - Login

De la même manière, vous pouvez accéder au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.vol2 -login

Si vous avez activé l'authentification pour le ISCSI cible IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 et IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2, Vous devriez recevoir un message d'échec d'autorisation comme marqué dans la capture d'écran ci-dessous.

Pour connecter avec succès aux cibles ISCSI compatibles à l'authentification, définissez la méthode d'authentification, le nom d'utilisateur et le mot de passe pour chaque cible ISCSI compatible avec l'authentification.

Vous pouvez définir la méthode d'authentification du ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 à Chap avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 - OP Update --name Node.session.authentification.AuthMethod - Value Chap

Vous pouvez définir le nom d'utilisateur de connexion du ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 à Linuxhint1 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 - OP Update --name Node.session.authentification.Nom d'utilisateur - Valeur Linuxhint1

Vous pouvez définir le mot de passe de connexion du ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 à Secret1 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 - OP Update --name Node.session.authentification.Mot de passe - VALUE SECRET1

Une fois que vous avez terminé la configuration de la méthode d'authentification, du nom d'utilisateur de connexion et du mot de passe pour le ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1, vous devriez être en mesure de vous connecter avec succès au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 - Login

Une fois que vous vous êtes connecté avec succès au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1, Un nouveau SCSI Disk SDA doit être attaché au ordinateur iscsi-client. Remarque, cela peut être différent dans votre cas:

$ sudo dmesg | grep -i attaché

Comme vous pouvez le voir, un nouveau périphérique de stockage SDA de taille 1 Go est ajouté au iscsi-client ordinateur. C'est le volume ZFS Vol1 que vous avez partagé via ISCSI:

$ sudo lsblk -e7 -d

De la même manière, définissez la méthode d'authentification du ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 à Chap avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 - Op Update - Name Node.session.authentification.AuthMethod - Value Chap

Définissez le nom d'utilisateur de connexion du ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 à Linuxhint2 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 - Op Update - Name Node.session.authentification.Nom d'utilisateur - VALUE LINUXHINT2

Définissez le mot de passe de connexion du ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 à Secret2 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 - Op Update - Name Node.session.authentification.Mot de passe - VALUE SECRET2

Connectez-vous au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2 avec la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 - Login

Vous devriez être en mesure de vous connecter avec succès au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2:

Une fois que vous vous êtes connecté avec succès au ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol2, Un nouveau SCSI Disk SDB doit être attaché au ordinateur iscsi-client. Remarque, cela peut être différent dans votre cas.

$ sudo dmesg | grep -i attaché

Comme vous pouvez le voir, un nouveau dispositif de stockage SDB de taille 2 Go est ajouté au ordinateur iscsi-client. C'est le Volume Vol2 ZFS que vous avez partagé via ISCSI:

$ sudo lsblk -e7 -d

Montant automatiquement les volumes ZFS partagés via ISCSI:

Pour vous connecter automatiquement à une cible ISCSI, vous devrez définir le nœud.Propriété de démarrage de l'iSCSI cible vers automatique.

Pour définir le nœud.propriété startup de la ISCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.vol1 Pour automatique, exécutez la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol1 - OP Update --name Node.Startup - Valeur automatique

Pour définir le nœud.Propriété de démarrage de l'iSCSI Target IQN.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 à automatique, Exécutez la commande suivante:

$ sudo iscsiadm - noeud-mode - TargetName iqn.2021-08.com.linuxhint.ISCSI: Pool1.Vol2 - Op Update - Name Node.Startup - Valeur automatique

Enfin, activez le Service Systemd en Open-ISCSI de sorte qu'il démarre automatiquement au démarrage avec la commande suivante:

$ sudo systemctl Activer l'Open-Issi

Pour que les changements prennent effet, redémarrez le ordinateur iscsi-client avec la commande suivante:

$ sudo redémarrer

Une fois la Bottes d'ordinateur iscsi-client, tu devrais voir le Dispositifs de stockage SDA et SDB sur le ordinateur iscsi-client comme marqué dans la capture d'écran ci-dessous:

$ sudo lsblk -e7 -d

Conclusion:

Dans cet article, je vous ai montré comment créer des volumes ZFS et les partager via ISCSI. De plus, je vous ai montré comment configurer l'authentification pour les cibles ISCSI. Je vous ai montré comment vous connecter aux cibles ISCSI à distance et accéder aux volumes ZFS partagés.

Les références:

[1] Ubuntu ManPage: TGTADM - Utilitaire d'administration cible Linux SCSI

[2] Ubuntu Manpage: TGT-ADMIN - TOLL LINUX SCSI Target

[3] Ubuntu Manpage: ISCSIADM - Utilitaire d'administration Open-ISCSI

[4] Service - ISCSI | Ubuntu

[5] Conventions de dénomination ISCSI