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
ouwrite_thru
. L'opérationwrite_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 commandewrite_back=false
afin de désactiverwrite_back
au bénéfice dewrite_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ériqueTYPE_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
- Exécuter
targetcli
. - Rendez-vous sur le chemin de configuration iSCSI :
/> iscsi/
Note
La commandecd
est également acceptée pour les changements de répertoires, ainsi que pour indiquer le chemin vers lequel se déplacer. - 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
- 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
- Se rendre dans le TPG.
/iscsi> iqn.2006-04.example:444/tpg1/
- 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
- 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
- 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.
- 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 avectgtd
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
- 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. - 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
- Déplacez-vous dans le répertoire acls.
/iscsi/iqn.20...mple:444/tpg1> acls/
- 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 globalauto_add_mapped_luns
sera utilisé. Cela fait correspondre les LUN aux ACL créés automatiquement. - 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
- 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 detargetcli
et son installation. - 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 decreate
répertoriera les interfaces disponibles. Si ce n'est pas le cas, assurez-vous quefcoeadm -i
affiche bien des interfaces actives. - 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
- 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. - Pour rendre les changements persistants à travers les démarrages, utiliser la commande
saveconfig
et tapezyes
lorsqu'on vous y invite, sinon la configuration sera perdue au second démarrage. - Quittez
targetcli
en saisissantexit
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é detargetcli
àtarget
.