iSCSI storages Systèmes de fichier
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 hashPour 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 targetCré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ésLister 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éelLister 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 tgtadmDé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 targettgtadm --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