Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapitre 24.  Online Storage Management

Il est souvent souhaitable d'ajouter, de supprimer, ou de redimensionner des périphériques de stockage pendant l'exécution du système d'exploitation, sans effectuer de redémarrage. Ce chapitre souligne les procédures pouvant être utilisées pour reconfigurer les périphériques de stockage sur les systèmes hôtes Red Hat Enterprise Linux 7 pendant l'exécution du système. Ce chapitre couvre les interconnexions du stockage Fibre Channel et iSCSI, d'autres types d'interconnexions pourront y être ajoutés ultérieurement.
Ce chapitre se concentre sur l'ajout, la suppression, la modification et la surveillance des périphériques de stockage. Il ne traite pas de protocoles Fibre Channel ou iSCSI en détail. Pour obtenir des informations supplémentaires sur ces protocoles, veuillez consulter d'autres documents.
Ce chapitre fait référence à divers objets sysfs. Red Hat tient à vous informer que les noms d'objets et la structure des répertoires sysfs pourraient faire l'objet de changements lors des publications de versions majeures de Red Hat Enterprise Linux. Ceci est dû au fait que le noyau Linux en amont ne fournit pas d'API interne stable. Pour obtenir des directives sur la manière de référencer les objets sysfs de manière transportable, veuillez vous reporter au document /usr/share/doc/kernel-doc-version/Documentation/sysfs-rules.txt dans l'arborescence source du noyau.

Avertissement

La reconfiguration du stockage en ligne doit être effectuée prudemment. Les échecs ou interruptions du système pendant ce processus peuvent provoquer des résultats inattendus. Red Hat vous recommande de réduire la charge du système autant que possible pendant les opérations de changement. Ceci réduira la possibilité d'erreurs d'E/S, de mémoire insuffisante, ou d'autres erreurs similaires pouvant se produire au milieu des changements de configuration. Les sections suivantes offrent des directives plus spécifiques à ce sujet.
De plus, Red Hat vous recommande d'enregistrer toutes vos données avant de reconfigurer le stockage en ligne.

24.1. Installation de la Cible

Red Hat Enterprise Linux 7 utilise la commande targetcli comme un front-end pour l’affichage, l'édition et l'enregistrement de la configuration de la cible Linux-IO sans avoir besoin de manipuler directement les fichiers de configuration de la cible du noyau. targetcli est une interface de ligne de commande qui permet à un administrateur d’exporter les ressources de stockage locales (soutenues par des fichiers, volumes, périphériques SCSI locaux ou disques RAM) vers des systèmes distants. Il a une disposition arborescente, qui comprend la saisie semi-automatique par tabulation intégrée et fournit une documentation en ligne et un support complet semi-automatique.

Note

La hiérarchie de targetcli ne correspond pas toujours à l'interface du noyau. C'est parce qu'elle est conçue pour être simplifiée le plus possible.

Important

Pour s'assurer que les changements faits par targetcli sont persistants, démarrer et activer le service cible :
~]# systemctl start target
~]# systemctl enable target

24.1.1. Installer et exécuter targetcli

Pour installer targetcli, exécuter :
# yum install targetcli
Démarrer le service cible :
# systemctl start target
Configurer la cible pour qu'elle démarre à l'amorçage de façon persistante :
# systemctl enable target
Pour commencer à utiliser targetcli, exécuter targetcli et obtenir une installation des trois interfaces, exécuter ls :
# targetcli
:
/> ls
o- /........................................[...]
  o- backstores.............................[...]
  | o- block.................[Storage Objects: 0]           
  | o- fileio................[Storage Objects: 0]       
  | o- pscsi.................[Storage Objects: 0]         
  | o- ramdisk...............[Storage Ojbects: 0]          
  o- iscsi...........................[Targets: 0]   
  o- loopback........................[Targets: 0]

Note

Dans Red Hat Enterprise Linux 7.0, exécuter une commande targetcli du bash (par exemple, targetcli iscsi/ create) ne fonctionnait pas, ni ne donnait de code d'erreur. Cela a été corrigé dans Red Hat Enterprise Linux 7.1 qui fournit un code d'erreur, ce qui en facilite l'utilisation avec les scripts shell.

24.1.2. Créer un Backstore

Les backstores prennent en charge le support de différentes méthodes de stockage de données d'un LUN exporté sur une machine locale. Créer un objet de stockage définit les ressources qui seront utilisées par le backstore.

Note

Dans Red Hat Enterprise Linux 6, le terme 'backing-store' est utilisé pour parler des mappages créés. Cependant, pour éviter la confusion entre les différentes façons dont les 'backstores' peuvent être utilisés, dans Red Hat Enterprise Linux 7 le terme 'storage objects' fait référence aux mappages créés et 'backstores' est utilisé pour décrire les différents types de périphériqes de sauvegarde.
Les périphériques de backstore LIO pris en charge sont les suivants :
FILEIO (Stockage par sauvegarde de fichiers de Linux)
Les objets de stockage FILEIO peuvent soit supporter l'opération write_back ou write_thru. L'opération write_back active le cache du système de fichiers local. Cela améliore la performance mais réduit le risque de perte de données. Il est conseillé d'utiliser la commande write_back=false afin de désactiver write_back au bénéfice de write_thru.
Pour créer un objet de stockage fileio, exécuter la commande /backstores/fileio create file_name file_location file_size write_back=false. Exemple :
/> /backstores/fileio create file1 /tmp/disk1.img 200M write_back=false
Created fileio file1 with size 209715200
BLOCK (périphériques BLOCK Linux)
Le pilote de blocs permet l'utilisation de n'importe quel périphérique en bloc situé dans /sys/block à utiliser dans LIO. Inclut les périphériques physiques comme les HDDs, SSDs, CDs, DVDs) et les périphériques logiques comme les logiciels ou matériels de volumes RAID, ou les volumes LVM.

Note

Les backstores BLOCK fournissent généralement la meilleure performance.
Pour créer un backstore BLOCK par le périphérique block /dev/sdb, utiliser la commande suivante :
/> /backstores/block create name=block_backend dev=/dev/sdb
Generating a wwn serial.
Created block storage object block_backend using /dev/sdb.
PSCSI (périphériques Linux pass-through SCSI)
Tout objet de stockage qui supporte Direct Pass Through des commandes SCSI sans émulation SCSI, avec un périphérique SCSI sous-jacent qui apparaît avec lsscsi dans /proc/scsi/scsi (comme un disque dur SAS) peut être configuré en tant que backstore. SCSI-3 et versions supérieures sont pris en charge dans ce sous-système.

Avertissement

PSCSI doit être uniquement utilisé par les utilisateurs avancés. Les commandes avancées de SCSI comme ALUA (Aysmmetric Logical Unit Assignment) ou Persistant Reservations (utilisées par VMware ESX et vSphere) ne sont généralement pas implémentées dans le firmware et peuvent provoquer des dysfonctionnements ou des pannes. En cas de doute, utilisez BLOCK pour les intallations en production à la place.
Pour créer un backstore PSCSI de périphérique physique SCSI, unpériphérique TYPE_ROM utilisant /dev/sr0 dans ce exemple, exécutez :
/> backstores/pscsi/ create name=pscsi_backend dev=/dev/sr0
Generating a wwn serial.
Created pscsi storage object pscsi_backend using /dev/sr0
Memory Copy RAM disk (Linux RAMDISK_MCP)
Les disques Memory Copy RAM (ramdisk) vous donnent des disques de RAM avec émulation SCSI et des mappages de mémoire séparés qui utilisent les mappages en copiant la mémoire des initiateurs. Cela vous donne une capacité sur plusieurs sessions et c'est particulièrement utile pour un stockage en massse volatile à but de production.
Pour créer 1Go Disque RAM Backstore, exécuter la commande suivante :
/> backstores/ramdisk/ create name=rd_backend size=1GB
Generating a wwn serial.
Created rd_mcp ramdisk rd_backend with size 1GB.

24.1.3. Créer une Cible iSCSI

Créer une Cible iSCSI :

Procédure 24.1. Créer une Cible iSCSI

  1. Exécuter targetcli.
  2. Rendez-vous sur le chemin de configuration iSCSI :
    /> iscsi/

    Note

    La commande cd est également acceptée pour les changements de répertoires, ainsi que pour indiquer le chemin vers lequel se déplacer.
  3. Créer une cible iSCSI en utilisant un nom de cible par défaut.
    /iscsi> create 
    Created target 
    iqn.2003-01.org.linux-iscsi.hostname.x8664:sn.78b473f296ff
    Created TPG1
    Ou bien créer une cible iSCSI en utilisant un nom spécifique.
    /iscsi > create iqn.2006-04.com.example:444
    Created target iqn.2006-04.com.example:444
    Created TPG1
  4. Vérifier que la cible nouvellement créée soit visible quand les cibles sont répertoriées par la commande ls.
    /iscsi > ls
    o- iscsi.......................................[1 Target]
        o- iqn.2006-04.com.example:444................[1 TPG] 
            o- tpg1...........................[enabled, auth]
                o- acls...............................[0 ACL]
                o- luns...............................[0 LUN]
                o- portals.........................[0 Portal]

Note

À partir de Red Hat Enterprise Linux 7.1, quand une cible est créée, un portail par défaut est créé également.

24.1.4. Configuration d'un Portail iSCSI

Pour configurer un portail iSCSI, on doit tout d'abord créer une cible iSCSI et l'associer à un TPG. Pour obtenir des instrucitons sur la façon de procéder, consulter Section 24.1.3, « Créer une Cible iSCSI ».

Note

À partir de Red Hat Enterprise Linux 7.1, quand une cible iSCSI est créée, un portail par défaut est créé également. Ce portail est défini pour écouter toutes les adresses IP avec le numéro de port par défaut (c-a-d 0.0.0.0:3260). Pour supprimer ceci, et n'ajouter que des portails spécifiques, utiliser /iscsi/iqn-name/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260, puis créer un nouveau portail avec les informations requises.

Procédure 24.2. Créer un portail iSCSI

  1. Se rendre dans le TPG.
    /iscsi> iqn.2006-04.example:444/tpg1/
  2. Il y a deux façons de créer un portail : créer un portail par défaut, ou créer un portail spécifiant quelle adresse IP écouter.
    Créer un portail par défaut qui utilise le port par défaut 3260 et qui permet à la cible d'écouter sur toutes les adresses IP de ce port.
    /iscsi/iqn.20...mple:444/tpg1> portals/ create
    Using default IP port 3260
    Binding to INADDR_Any (0.0.0.0)
    Created network portal 0.0.0.0:3260
    Pour créer un portail spécifiant sur quelle adresse IP écouter, exécuter la commande suivante.
    /iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137
    Using default IP port 3260
    Created network portal 192.168.122.137:3260
  3. Vérifier que le portail nouvellement créé soit visible par la commande ls.
    /iscsi/iqn.20...mple:444/tpg1> ls
    o- tpg.................................. [enambled, auth]  
        o- acls ......................................[0 ACL]
        o- luns ......................................[0 LUN]
        o- portals ................................[1 Portal]
            o- 192.168.122.137:3260......................[OK]

24.1.5. Configurer les LUN

Pour configurer les LUN, vous devez tout d'abord créer des objets de stockage. Voir Section 24.1.2, « Créer un Backstore » pour plus d'informations.

Procédure 24.3. Configurer les LUN

  1. Créer des LUN d'objets de stockage déjà créés.
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/ramdisk1
    Created LUN 0.
    
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/block/block1
    Created LUN 1.
    
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/fileio/file1
    Created LUN 2.
  2. Afficher les changements.
    /iscsi/iqn.20...mple:444/tpg1> ls
    o- tpg.................................. [enambled, auth]
        o- acls ......................................[0 ACL]
        o- luns .....................................[3 LUNs]
        |  o- lun0.........................[ramdisk/ramdisk1]
        |  o- lun1.................[block/block1 (/dev/vdb1)]
        |  o- lun2...................[fileio/file1 (/foo.img)]
        o- portals ................................[1 Portal]
            o- 192.168.122.137:3260......................[OK]

    Note

    Nous vous rappelons que le nom LUN par défaut démarre par 0, et non 1, ce qui était le cas avec tgtd dans Red Hat Enterprise Linux 6.

Important

Par défaut, les LUN sont créés en permissions lecture-seule uniquement. Si un nouveau LUN est ajouté une fois que les ACL ont été créés, ce LUN sera mappé automatiquement à tous les ACL disponibles. Cela peut créer un risque pour la sécurité. Utiliser la procédure suivante pour créer un LUN en lecture-seule.

Procédure 24.4. Créer un LUN en lecture-seule

  1. Pour créer un LUN avec les permissions lecture-seule, exécuter la commande suivante pour commencer :
    /> set global auto_add_mapped_luns=false
    Parameter auto_add_mapped_luns is now 'false'.
    Cela évite l'auto-mappage des LUN en ACL existants, ce qui permet le mappage manuel des LUN.
  2. Puis, créer manuellement le LUN par la commande iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/ create mapped_lun=next_sequential_LUN_number tpg_lun_or_backstore=backstore write_protect=1.
    /> iscsi/iqn.2015-06.com.redhat:target/tpg1/acls/iqn.2015-06.com.redhat:initiator/ create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1
    Created LUN 1.
    Created Mapped LUN 1.
    /> ls
    o- / ...................................................... [...]
      o- backstores ........................................... [...]
      <snip>
      o- iscsi ......................................... [Targets: 1]
      | o- iqn.2015-06.com.redhat:target .................. [TPGs: 1]
      |   o- tpg1 ............................ [no-gen-acls, no-auth]
      |     o- acls ....................................... [ACLs: 2]
      |     | o- iqn.2015-06.com.redhat:initiator .. [Mapped LUNs: 2]
      |     | | o- mapped_lun0 .............. [lun0 block/disk1 (rw)]
      |     | | o- mapped_lun1 .............. [lun1 block/disk2 (ro)]
      |     o- luns ....................................... [LUNs: 2]
      |     | o- lun0 ...................... [block/disk1 (/dev/vdb)]
      |     | o- lun1 ...................... [block/disk2 (/dev/vdc)]
      <snip>
    La ligne mapped_lun1 a maintenant (ro) à la fin (à la différence de mapped_lun0's (rw)) ce qui indique « read-only » (lecture-seule).

24.1.6. Configurez les ACL

Créer une ACL pour chaque initiateur qui doivent se connecter. Ceci applique l’authentification lorsque cet initiateur se connecte, permettant seulement aux LUN d’être exposés à chaque initiateur. Chaque initator a généralement un accès exclusif à un LUN. Les cibles et les initiateurs ont un nom identifiant unique. Le nom unique de l’initiateur doit être connu pour pouvoir configurer les ACL. Pour les initiateurs open-iscsi, cela se trouve dans /etc/iscsi/initiatorname.iscsi.

Procédure 24.5. Configurez les ACL

  1. Déplacez-vous dans le répertoire acls.
    /iscsi/iqn.20...mple:444/tpg1> acls/
  2. Créer un ACL. Vous pouvez soit utliser le nom d'initiateur qui se trouve dans /etc/iscsi/initiatorname.iscsi sur l'initiateur, ou si vous utilisez un nom facile à retenir, voir Section 24.2, « Créer un initiateur iSCSI » pour vous assurer que l'ACL corresponde à l'initiateur. Ainsi :
    /iscsi/iqn.20...444/tpg1/acls> create iqn.2006-04.com.example.foo:888
    Created Node ACL for iqn.2006-04.com.example.foo:888
    Created mapped LUN 2.
    Created mapped LUN 1.
    Created mapped LUN 0.

    Note

    Le comportement de l'exemple ci-dessus dépend de la configuration qui aura été utilisée. Dans ce cas, le paramètre global auto_add_mapped_luns sera utilisé. Cela fait correspondre les LUN aux ACL créés automatiquement.
  3. Afficher les changements.
    /iscsi/iqn.20...444/tpg1/acls> ls
    o- acls .................................................[1 ACL]
        o- iqn.2006-04.com.example.foo:888 ....[3 Mapped LUNs, auth]
            o- mapped_lun0 .............[lun0 ramdisk/ramdisk1 (rw)]
            o- mapped_lun1 .................[lun1 block/block1 (rw)]
            o- mapped_lun2 .................[lun2 fileio/file1 (rw)]

24.1.7. Installation de l'une cible Fibre Channel over Ethernet (FCoE)

En plus de monter des LUN sur FCoE comme décrit dans Section 24.4, « Configurer une interface FCoE (« Fibre-Channel Over Ethernet ») », l'exportation de LUN vers d'autres ordinateurs sur FCoE est également prise en charge avec l'aide de la commande targetcli.

Important

Avant de continuer, veuillez consulter Section 24.4, « Configurer une interface FCoE (« Fibre-Channel Over Ethernet ») » et vérifier que le paramétrage FCoE de base est bien terminé, et que fcoeadm -i affiche les interfaces FCoE configurées.

Procédure 24.6. Configurer un cible FCoE

  1. Configurer une cible FCoE requiert l'installation du package targetcli et de ses dépendances. Voir Section 24.1, « Installation de la Cible » pour obtenir plus d'informations sur les bases de targetcli et son installation.
  2. Créer une instance de cible FCoE sur une interface FCoE.
    /> tcm_fc/ create 00:11:22:33:44:55:66:77
    Si des interfaces FCoE sont présentes sur le système, la complétion par la touche de tabulation après la saisie de create répertoriera les interfaces disponibles. Si ce n'est pas le cas, assurez-vous que fcoeadm -i affiche bien des interfaces actives.
  3. Mettre en correspondance d'un « backstore » avec une instance cible.

    Exemple 24.1. Exemple de mise en correspondance d'un « backstore » avec l'instance cible.

    /> tcm_fc/00:11:22:33:44:55:66:77
    /> luns/ create /backstores/fileio/example2
  4. Autoriser l'accès au LUN à partir d'un initiateur FCoE.
    /> acls/ create 00:99:88:77:66:55:44:33
    Le LUN devrait désormais être accessible à cet initiateur.
  5. Pour rendre les changements persistants à travers les démarrages, utiliser la commande saveconfig et tapez yes lorsqu'on vous y invite, sinon la configuration sera perdue au second démarrage.
  6. Quittez targetcli en saisissant exit ou ctrl+D.

24.1.8. Supprimer les objets par la commande targetcli

Pour supprimer un backstore, utiliser la commande :
/> /backstores/backstore-type/backstore-name
Pour supprimer certaines parties de la cible iSCSI, comme un ACL, utiliser la commande suivante :
/> /iscsi/iqn-name/tpg/acls/ delete iqn-name
Pour suppprimer la cible dans son ensemble, y compris les ACL, les LUN et les portails, utiliser la commande suivante :
/> /iscsi delete iqn-name

24.1.9. Références targetcli

Pour plus d'informations sur targetcli, référez-vous aux ressources suivantes :
man targetcli
La page man targetcli inclut un exemple.
Linux SCSI Target Wiki
Screencast par Andy Grover

Note

Chargé le 28 février 2012. Le nom du service a changé. Il est passé de targetcli à target.