Recherche de site Web

Comment configurer le serveur iSCSI (cible) et le client (initiateur) sur Debian 9


Dans le monde des centres de données, les réseaux de stockage (SAN) de grande capacité sont devenus la norme minimale. Alors que les fournisseurs de cloud et la virtualisation continuent également d’avoir un impact considérable sur le monde technologique, le besoin d’encore plus d’espace de stockage SAN est devenu évident.

La plupart du matériel SAN est composé d'un contrôleur minimaliste (ou d'un ensemble de contrôleurs) et d'un vaste ensemble de disques haute capacité, tous configurés pour prendre en charge de grandes quantités de données disponibles et intègres.

Beaucoup de ces produits spécialisés sont fabriqués par de grands fournisseurs tels que Netapp, Dell Equalogic, HP Storageworks ou EMC et sont assortis d'étiquettes de prix que seules les plus grandes entreprises peuvent se permettre.

En réalité, ces périphériques ne sont rien de plus que de grandes baies de disques durs dotées d'un contrôleur fournissant l'espace de ces disques durs aux clients en réseau. De nombreuses technologies ont existé au fil des années et offrent cette fonctionnalité ou des fonctionnalités similaires à un prix nettement inférieur.

La distribution Debian GNU/Linux fournit des packages qui permettent à un système Debian de servir de périphérique de stockage SAN au niveau de l'entreprise pour une fraction du coût ! Cela permet à tout le monde, qu'il s'agisse d'utilisateurs domestiques de base ou de grands centres de données, de bénéficier des avantages du stockage SAN sans avoir à dépenser une fortune pour une solution propriétaire d'un fournisseur.

Cet article examinera comment un système Debian 9 (Stretch) peut être configuré pour exploiter l'espace disque à l'aide d'un système connu sous le nom d'Internet Small Computer Systems Interface ou iSCSI en abrégé. iSCSI est une norme basée sur le Protocole Internet (IP) permettant de fournir un stockage en bloc (disque dur) à d'autres systèmes. iSCSI fonctionne dans un modèle client-serveur mais utilise des noms différents pour distinguer le client du serveur.

Dans la terminologie iSCSI, le serveur qui distribue l'« espace disque » est appelé iSCSI « Cible » et le système qui demande L'utilisation de l'espace disque est connue sous le nom d'« initiateur » iSCSI. En d’autres termes, un « Initiateur » demande un stockage en bloc à une « Cible ».

Configuration de l'environnement

Ce guide présentera une configuration de base impliquant un simple serveur iSCSI (cible) et un client (initiateur) tous deux exécutant Debian 9 (Stretch).


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

Le réseau peut être visualisé comme ci-dessous :

Configuration de la cible iSCSI Debian

Dans le monde iSCSI, la cible est considérée comme l'hôte qui contient les périphériques de stockage à utiliser par l'initiateur.

Dans cet article, le serveur avec l'adresse IP 192.168.56.101 est utilisé comme cible. Toutes les configurations seront effectuées sur cet hôte pour cette section.

La première étape est l'installation des packages nécessaires pour permettre au système Debian de servir les cibles iSCSI. Ce progiciel est connu sous le nom de Target Framework (TGT).

L'autre élément utilisé pour ce guide est les outils de Gestion des volumes logiques (LVM) en tant que Volumes logiques (LV.) sera utilisé comme support de stockage pour la cible iSCSI.

Les deux packages peuvent être installés avec les commandes suivantes.


apt-get update
apt-get install tgt lvm2

Une fois les packages installés, LVM sera utilisé pour préparer les disques durs sur la cible à utiliser comme iSCSI LUN. La première commande est utilisée pour préparer les disques à inclure dans une configuration LVM. Assurez-vous de modifier la commande selon les besoins pour différents scénarios !


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

Une fois les disques préparés avec la commande « pvcreate » ci-dessus, il est temps de créer un groupe de volumes à partir de ces disques particuliers. Le groupe de volumes est requis afin de créer les volumes logiques qui serviront ultérieurement de stockage iSCSI.

Pour créer un groupe de volumes, la commande « vgcreate » est nécessaire.


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

Notez dans le résultat ci-dessus que le système répond que le Groupe de volumes a été créé, mais c'est toujours une bonne idée de vérifier comme vu ci-dessus avec la commande « vgs ». La capacité de ce groupe de volumes n'est que de 9,99 Go. Bien qu’il s’agisse d’un groupe de volumes particulièrement petit, le processus serait le même pour les disques de plus grande capacité !

L'étape suivante est la création du volume logique qui fera office de disque pour le client iSCSI (initiateur). Pour cet exemple, l'intégralité du groupe de volumes sera utilisé mais ce n'est pas nécessaire.

Le volume logique sera créé à l'aide de la commande 'lvcreate'.


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

La commande « lvcreate » ci-dessus peut paraître un peu déroutante à première vue, mais la décomposition est la suivante :

  • lvcreate – Commande utilisée pour créer le volume logique.
  • -l 100%FREE – Créez le volume logique en utilisant tout l'espace libre du groupe de volumes.
  • -n tecmint_lun1 – Le nom du volume logique à créer.
  • tecmint_iscsi – Le nom du groupe de volumes dans lequel créer le volume logique.

Une fois le volume logique créé, il est temps de créer le véritable LUN (Logical Unit Number). Le LUN sera le périphérique de stockage auquel l'initiateur se connectera et utilisera ultérieurement.

La création d'un LUN est très simple et ne nécessite que quelques étapes. La première étape sera la création du fichier de configuration. Ce fichier résidera dans le répertoire « /etc/tgt/conf.d » et pour cet article, il sera appelé « TecMint_iscsi.conf ».

Pour créer ce fichier, utilisez un éditeur de texte.


nano /etc/tgt/conf.d/TecMint_iscsi.conf

Dans ce fichier, toutes les informations de configuration nécessaires pour ce LUN seront configurées. De nombreuses options peuvent être placées dans ce fichier, mais pour l'instant, un LUN de base avec un Challenge Handshake Authentication Protocol (CHAP) mutuel être configuré.

La définition du LUN existera entre deux instructions « cible ». Pour plus de paramètres pouvant figurer dans l'instruction target, consultez la page de manuel du fichier « targets.conf » en émettant « man 5 target.conf ».


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

Il se passe beaucoup de choses ci-dessus. Une explication rapide peut être utile à la plupart.

  • La première ligne commence la configuration iSCSI LUN particulière. Dans ce cas, le LUN étiqueté « iqn.2018-02.linux-console.net:lun1 ». La partie « iqn » indique qu'il s'agira d'un nom qualifié iSCSI. Le « 2018-02 » est une combinaison de dates choisie arbitrairement. « linux-console.net » est le domaine auquel appartient ce LUN particulier. Enfin, « lun1 » est utilisé comme nom pour cette cible particulière.
  • La deuxième ligne ci-dessus illustre un commentaire. Des commentaires peuvent exister dans les fichiers de configuration cible et doivent être précédés du symbole « # ».
  • La troisième ligne correspond à l'endroit où se trouve l'espace de stockage réel qui sera utilisé par l'initiateur. Dans ce cas, le support de stockage sera le volume logique créé précédemment dans le guide.
  • La quatrième ligne est l'adresse IP attendue de l'initiateur. Bien qu’il ne s’agisse pas d’un élément de configuration obligatoire, cela peut contribuer à accroître la sécurité.
  • La cinquième ligne est le nom d'utilisateur/mot de passe entrant. Tout comme l'adresse de l'initiateur ci-dessus, ce paramètre n'est pas obligatoire non plus mais peut aider à sécuriser le LUN. Étant donné que ce guide couvre également le CHAP mutuel iSCSI, ce paramètre est obligatoire. Cette ligne indique le nom d'utilisateur et le mot de passe que la cible attendra de l'initiateur pour se connecter à ce LUN.
  • La sixième ligne est le nom d'utilisateur/mot de passe que la cible fournira à l'initiateur pour permettre l'authentification CHAP mutuelle. Normalement, ce paramètre n'est pas obligatoire, mais cet article couvre l'authentification CHAP mutuelle, ce paramètre est donc obligatoire.
  • La dernière ligne est l'instruction finale de la définition cible. Faites attention à la barre oblique de fermeture devant le mot-clé cible !

Une fois les configurations appropriées pour le LUN saisies, enregistrez les modifications et quittez l'éditeur de texte. Si vous utilisez nano, appuyez sur ctrl+o pour enregistrer, puis appuyez sur ctrl+x pour quitter nano.

Une fois le fichier de configuration créé, le service tgt doit être redémarré afin que tgt connaisse les nouvelles cibles et la configuration associée.

Cela peut être fait avec l'une des commandes suivantes et dépend du système d'initialisation utilisé.


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

Une fois tgt redémarré, il est important de vérifier que la cible iSCSI est rendue disponible conformément au fichier de configuration créé.

Cela peut être accompli avec la commande « tgtadm ».


tgtadm --mode target --op show   (This will show all targets)

Ceci conclut la configuration de la cible. La section suivante traitera de la configuration de l'initiateur.

Configuration de l'initiateur Debian iSCSI

L'étape suivante de l'utilisation de la cible iSCSI précédemment configurée est la configuration de l'initiateur iSCSI.

Un autre système Debian 9 sera utilisé comme initiateur dans cet article, mais tout système pouvant utiliser le protocole iSCSI peut se connecter à la cible précédemment configurée ; cela pourrait inclure des hyperviseurs comme XenServer/ESXi ou d'autres distributions comme Red Hat, Debian ou Ubuntu.

La première étape de ce processus pour cet initiateur Debian est l'installation des paquets appropriés pour iSCSI.


apt-get update
apt-get install open-iscsi

Une fois qu'apt a terminé la configuration des packages open-iscsi, la configuration de l'initiateur iSCSI peut commencer. La première étape consistera à communiquer avec la cible pour préparer les informations de configuration initiales de la cible.


iscsiadm -m discovery -t st -p 192.168.56.101

Lorsque cette commande s'exécute, elle répondra avec le nom du lun configuré précédemment pour cet hôte particulier. La commande ci-dessus générera également deux fichiers pour les informations LUN nouvellement découvertes.

Maintenant, le fichier créé pour ce nœud devra avoir les informations CHAP configurées pour que cette cible iSCSI soit réellement accessible par l'initiateur.

Techniquement, ces informations peuvent être configurées pour l'ensemble du système, mais dans le cas où un hôte se connecte à différents LUN avec des informations d'identification différentes, placer ces informations d'identification dans le fichier de configuration de nœud spécifique peut atténuer tout problème.

Le fichier de configuration du nœud existera dans le répertoire « /etc/iscsi/nodes/ » et aura un répertoire par LUN disponible. Dans le cas de cet article (notez que les chemins changeront si les noms/adresses IP sont modifiés).


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Pour travailler avec ce fichier, n'importe quel éditeur de texte peut être utilisé.


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

Dans ce fichier, il y aura plusieurs options déjà configurées pour la cible respective qui ont été déterminées lors de l'exécution de la commande « iscsiadm » précédemment.

Étant donné que cette configuration Debian cible/initiateur particulière utilise le CHAP mutuel, quelques options supplémentaires doivent être modifiées et ajoutées à ce fichier, puis une connexion à la cible iSCSI effectué.

Les modifications apportées à ce fichier sont :


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

Les options ci-dessus permettront à cette cible de s'authentifier auprès de l'initiateur ainsi que de permettre à l'initiateur de s'authentifier auprès de la cible .

Il existe une autre option dans ce fichier particulier qui devra peut-être être modifiée en fonction des préférences de l'administrateur : il s'agit du paramètre « node.startup ».

Si vous suivez ce guide, l'option « node.startup » sera définie sur « manuel » à ce stade. Cela n’est peut-être pas souhaité. Si l'administrateur souhaite que la cible iSCSI soit connectée au démarrage du système, remplacez « manuel » par « automatique» :


node.startup = automatic

Une fois les modifications ci-dessus effectuées, enregistrez le fichier et quittez. À ce stade, le service initiateur open-iscsi doit être redémarré afin de lire ces nouvelles modifications et de se connecter à la cible iSCSI.

Cela peut être accompli avec l'une des commandes suivantes en fonction du système d'initialisation utilisé.


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

Notez dans la case verte ci-dessus que l'initiateur iSCSI a pu se connecter à la cible. Pour confirmer davantage que la cible iSCSI est effectivement disponible pour l'initiateur, nous pouvons vérifier dans le système les lecteurs de disque supplémentaires disponibles à l'aide de l'option 'lsblk ' et en vérifiant la sortie pour les lecteurs supplémentaires.


lsblk

L'autre commande qui peut être utilisée sur l'initiateur pour confirmer une connexion à la cible est « iscsiadm » en tant que telle :


iscsiadm -m session

Le dernier endroit pour confirmer une connexion serait sur la cible elle-même en utilisant la commande « tgtadm » pour répertorier toutes les connexions iSCSI.


tgtadm --mode conn --op show --tid 1

À partir de ce point, le périphérique iSCSI nouvellement connecté peut être utilisé de la même manière que n'importe quel disque normalement connecté ! Le partitionnement, la création de systèmes de fichiers, le montage et/ou le montage persistant peuvent tous être gérés normalement.

Une grande prudence à prendre en compte avec les périphériques iSCSI est que si la cible iSCSI contient des systèmes de fichiers importants qui sont nécessaires au démarrage de l'initiateur, assurez-vous d'utiliser l'entrée '_netdev' dans le fichier '/etc/fstab' pour garantir que le périphérique iSCSI est connecté avant que le système continue de démarrer !