Chapitre 24. Online Storage Management
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
24.1. Installation de la Cible
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
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
targetcli
sont persistants, démarrer et activer le service cible :
~]# systemctl start target ~]# systemctl enable target
24.1.1. Installer et exécuter targetcli
targetcli
, exécuter :
# yum install targetcli
# systemctl start target
# systemctl enable target
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
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
Note
- 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
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
24.1.4. Configuration d'un Portail iSCSI
Note
/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
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
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
/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)
targetcli
.
Important
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
/> /backstores/backstore-type/backstore-name
/> /iscsi/iqn-name/tpg/acls/ delete iqn-name
/> /iscsi delete iqn-name
24.1.9. Références targetcli
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
.