Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
08 décembre 2016

iSCSI storages           Systèmes de fichier


tgtadm

tgtadm

Utilitaire d'administration de target SCSI

OPTIONS

-C, --control-port ‹port› Port de connexion à tgtd
-v, --blocksize ‹size› Spécifie la taille de block sur laquelle opérer
-Y, --device-type ‹type› En créant un LUN, spécifie le type de périphérique à créer. Défaut: disk

        disk Émule un périphérique disque
        tape Émule un lecteur cassette
        ssc alias de tape
        changer Émule un périphérique changeur
        pt type passthrough pour exporter un périphérique /dev/sg

-E, --bstype ‹type› En créant un LUN, spécifie le type de stockage à utiliser:

        rdwr Utiliser l'E/S normal.
        aio Mode E/S asynchrone
        rbd Utilise un périphérique block RADOS Ceph
        sg type spécial pour les périphériques passthrough
        ssc Type spécial pour l'émulation tape

--lld ‹driver› --op new --mode target --tid ‹id› --targetname ‹name› ajoute un nouveau target
--lld ‹driver› --op delete --mode target --tid ‹id› Supprime le target ‹id›.
--lld ‹driver› --op delete --force --mode target --tid ‹id› Force la suppression du target ‹id›
--lld ‹driver› --op show --mode target Affiche toutes les target
--lld ‹driver› --op show --mode target --tid ‹id› Affiche les paramètres du target ‹id›
--lld ‹driver› --op new --mode logicalunit --tid ‹id› --lun ‹lun› --backing-store ‹path› --bsopts=‹backing store options› Ajoute un lun au target ‹id›. ‹path› doit être des périphériques block ou des fichiers ou une image RBD. lun0 est réservé par un périphérique spécial automatiquement créé
--lld ‹driver› --op delete --mode logicalunit --tid ‹id› --lun ‹lun› Supprime le LUN qu'un target ‹id› possède
--lld ‹driver› --op bind --mode target --tid ‹id› --initiator-address ‹address› Ajoute l'adresse à la liste d'accès au target ‹id›. Les initiators avec l'adresse peuvent accéder au target. ALL autorise l'accès à tous les initiators
--lld ‹driver› --op bind --mode target --tid ‹id› --initiator-name ‹name› Ajoute le nom de l'initiator à la liste d'accès du target ‹id›. Les initiators avec ces noms peuvent y accéder
--lld ‹driver› --op unbind --mode target --tid ‹id› --initiator-address ‹address› Supprime l'adresse d'une liste d'accès du target
--lld ‹driver› --op unbind --mode target --tid ‹id› --initiator-name ‹name› Supprime le nom de l'initiator de la liste d'accès du target
--lld ‹driver› --op update --mode target --tid ‹id› --name=‹parameter› --value=‹value› Définis/change la valeur d'un ou plusieurs paramètres de target
--lld ‹driver› --op update --mode logicalunit --tid ‹id› --lun ‹id› --params parameter=value‹,...› Définis/change la valeur d'un ou plusieurs paramètres LUN
--lld ‹driver› --op start --mode lld Démarre le lld spécifié sans redémarrer le processus tgtd.

Paramètres LUN

   Ces paramètres sont seulement applicables avec "--mode logicalunit"

vendor_id=‹string› Définis le Vendor Identification reporté par un LUN dans une donnée INQURY
product_id=‹string› Définis le Product Identification reporté par un LUN dans une donnée INQURY
product_rev=‹string› Définis le Product Revision reporté par un LUN dans une donnée INQURY
removable=‹ 0|1 › Peut être utilisé pour changer le paramètre par défaut pour le flag removable.
sense_format=‹ 0|1 › Contrôle le format du sens des données que le périphérique retourne. 0 = classique, 1 = descripteur Support
online=‹ 0|1 › Contrôle si le périphérique est en ligne ou non
mode_page=‹byte-string› Définis les pages de mode spécifique pour le périphérique et le contenu de page de mode.
readonly=‹ 0|1 › Définis le flag read-only d'un LUN
thin_provisioning=‹ 0|1 › Contrôle le provisionning pour le LUN. Ne s'applique qu'aux périphérique disk. Uniquement pour les LUN stockés dans des systèmes de fichier qui supportent FALLOC_FL_PUNCH_HOLE

Paramètres LUN SMC

   Ces paramètres ne s'appliquent qu'aux lun qui sont de type "changer".

element_type=‹ 1|2|3|4 › Contrôle le type d'élément d'un slot dans le jukebox/vtl.

        1 Medium Transport
        2 Storage Element
        3 Import/Export Element
        4 Data Transfer device (CD drive, tape drive, MO drive etc)

address=‹ 1-65535 › Utilisé pour créer/opérer sur un slot particulier
start_address=‹ 1-65535 ›,quantity=‹ 1--65535 › Utilisé pour créer/opérer sur une plage de slots.
sides=‹ 1|2 › Spécifie si le média a 1 ou 2 faces pour maintenir les données.
clear_slot=‹ 1 › Effacer un élément de stockage et supprimer tout média présent. Une fois terminé, le stockage est marqué vide.
barcode=‹string› Utilisé pour assigner un code barre à un élément. max 10 caractères
volume_tag=‹string› Permet d'assigner un tag à un volume. max 32 caractères
media_home=‹string› Spécifie un répertoire où le média virtuel pour les éléments périphérique dvd/tape sont stockés

Périphériques passthrough

   En plus de l'émulation de périphérique TGTD supporte également d'utilisation de périphériques sg sur l'hôte et l'export via un type de périphérique spécial passthrough

--bstype=sg Spécifie qu'un périphérique SG est utilisé
--device-type=pt Spécifie que le type passthrough est utilisé
--backing-store=‹/dev/sg4› Spécifie quel périphérique exporter via TGTD
--bsoflags={direct|sync} Spécifie des flags supplémentaire lors de la création d'un LUN à utiliser en ouvrant le fichier. O_DIRECT est spécifié par 'direct' et 0_SYNC par 'sync'

Hash d'en-tête et de données

   Les hash d'en-tête ed de donées peuvent être définis dans un paramètre par target. TGTD supporte 2 modes. None et CRC32C. Quand le hash est à None, tgtd négocie pour ne pas utiliser les hash, et quand CRC32C est définis, tgtd force la connection à utiliser un hash

Pour voir les paramètres courant pour le hashage
tgtadm --op show --mode target --tid 1
Pour définis le hash d'en-tête à CRC32C
tgtadm --op update --mode target --tid 1 -n HeaderDigest -v CRC32C
Pour le désactiver pour les données
tgtadm --op update --mode target --tid 1 -n DataDigest -v None

Authentification CHAP

   L'authentification CHAP est supportée pour exiger une authentification avant qu'un initiator soit autorisé à se logger et accéder aux périphériques. La passphrase est définie au niveau target. Pour créer une authentification CHAP, il faut créer un compte avec son mot de passe, puis lier le compte à un ou plusieurs target

Créer un utilisateur et le lier au target 1
tgtadm --lld iscsi --op new --mode account --user ronnie --password password
tgtadm --lld iscsi --op bind --mode account --tid 1 --user ronnie
Lister tous les comptes qui ont été créés
tgtadm --lld iscsi --op show --mode account
Aficher si un target nécessite une authentification
tgtadm --lld iscsi --op show --mode target

Sondes NOP-OUT

   tgtd peut envoyer des sondes NOP-OUT aux initiateurs connectés pour déterminer quand un initiateur est mort et quand stopper la connexion TCP. Cela peut être définis au niveau global ou par target.

Afficher les paramètres NOP-OUT
tgtadm --lld iscsi --op show --mode target
Définis NOP-OUT pour un target
tgtadm --op update --mode target --tid 1 -n nop_count -v 5
tgtadm --op update --mode target --tid 1 -n nop_interval -v 5

Portails iSCSI

   Les portails iSCSI peuvent être listés, ajoutés ou supprimés

Lister les portails définis sur le target
tgtadm --lld iscsi --op show --mode portal
Ajouter un portail
tgtadm --lld iscsi --op new --mode portal --param portal=10.1.1.101:3260
Supprimer un portail
tgtadm --lld iscsi --op delete --mode portal --param portal=10.1.1.101:3260

Connexions iSCSI

   Les connexions iSCSI peuvent être listées et fermées de force en temps réel

Lister toutes les connexions actives pour un target
tgtadm --lld iscsi --op show --mode conn --tid 1
Fermer une connexion existante
tgtadm --lld iscsi --op delete --mode conn --tid 1 --sid 2 --cid 0

Status online/offline

   Les LUN tgtd peuvent être online ou offline. Les LUN qui sont offline peut se comporter différemment d'un type de périphérique à l'autre. Les périphériques offline se comportent comme si aucun média n'était disponible et toute opération d'accès au média échoue avec une erreur. Les périphériques ne peuvent pas être mis en mode offline s'il y a des locks "PREVENT ALLOW MEDIUM REMOVAL" dans le périphérique. Similairement les média online ne peuvent pas être ejectés par logiciel quand de tels locks sont présent dans le périphérique.

Afficher le status
tgtadm --lld iscsi --mode target --op show
Changer un LUN en offline
tgtadm --tid 1 --lun 2 --op update --mode logicalunit -P Online=No

Paramètres iSNS

   La configuration iSNS pour un target se fait via tgtadm

Définis l'adresse du serveur iSNS. tgtd ne supporte qu'un serveur iSNS
tgtadm --op update --mode sys --name iSNSServerIP --value 192.168.11.133
Active/désactive iSNS
tgtadm --op update --mode sys --name iSNS --value On
Port à utiliser pour iSNS
tgtadm --op update --mode sys --name iSNSServerPort --value 3205
Active/désactiver le contrôle d'accès pour iSNS
tgtadm --op update --mode sys --name iSNSAccessControl --value Off

Exemple de création d'un jukebox DVD

Créer un jukebox DVD avec 8 tiroirs, et 2 DVD-R vides. Créer un target
tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2007-03:virtual-dvd:`hostname`
Créer un lecteur DVD et lui donner un nom. Le dvd démarre sans fichier de stockage
tgtadm --op new --mode logicalunit --tid 1 --lun 1 --device-type cd
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 1 --params vendor_id=STGT_DVD,product_id=DVD101,product_rev=0010,scsi_sn=STGTDVD01,removable=1
Il faut un fichier de stockage backend pour le changeur:
if [ ! -f $HOME/smc ]; then dd if=/dev/zero of=$HOME/smc bs=1k count=1; fi
Créer le périphérique SMC et lui donner un nom:
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 --backing-store $HOME/smc --device-type changer
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params vendor_id=STK,product_id=L700,product_rev=0010,scsi_sn=XYZZY_0,removable=1
Ajouter un périphérique de transfert de donnnées:
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params element_type=4,start_address=1,quantity=1
Spécifier que le DVD (LUN 1) est le périphérique de transfert de données à créer
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params element_type=4,address=1,tid=1,lun=1
Medium Transport Elements
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params element_type=1,start_address=16,quantity=1
Définir le chemin du média virtuel
VTL=${HOME}/vtl
mkdir -p ${VTL}
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params media_home=${VTL}
Éléments de stockages - 8 commençant à l'adresse 1024
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params element_type=2,start_address=1024,quantity=8
Ajouter 'media' au slots 1 et 2 et laisser les autres vides
tgtimg --op new --device-type cd --type dvd+r --file ${VTL}/DISK_001
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params element_type=2,address=1024,barcode=DISK_001,volume_tag="A blank disk",sides=1
Et pour le slot 2:
tgtimg --op new --device-type cd --type dvd+r --file ${VTL}/DISK_002
tgtadm --lld iscsi --mode logicalunit --op update --tid 1 --lun 2 --params element_type=2,address=1025,barcode=DISK_002,volume_tag="My second blank disk",sides=1
Permettre à tous les initiateurs de se connecter à ce target:
tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address ALL
Afficher le résultat
tgtadm --lld iscsi --mode target --op show