Toutes les opérations LUN ou de volume sont configurées pour porter sur un pool de stockage ou un projet donné. Les commandes LUN suivantes sont disponibles.
|
Le tableau suivant répertorie les propriétés des LUN : Les volumes peuvent également hériter des ou remplacer les propriétés du projet.
|
Certaines propriétés peuvent être héritées du projet. L'objet source répertorie chacune de ces propriétés et détermine si la propriété est local par rapport au LUN ou inherited du projet. Par défaut, ces propriétés sont héritées par le projet. Une fois définies, elles sont locales par rapport au LUN. L'objet source est inaltérable. Pour repasser la source sur "inherited", les propriétés peuvent être définies sur unset.
Exemple de demande JSON pour annuler le paramétrage de la compression :
{"unset": ["compression"]}
La commande d'énumération des LUN renvoie une liste de LUN disponibles dans un pool ou un projet donné.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de système de fichiers
Exemple de demande d'énumération des LUN au sein d'un projet proj-01 :
GET /api/storage/v1/pools/p1/projects/proj-01/luns HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
En cas de succès de la commande get, un statut HTTP 200 (OK) est renvoyé ainsi qu'un tableau des propriétés du LUN au format JSON.
Exemple de résultat :
HTTP/1.1 200 OK Content-Type: application/json { "luns": [{ "id": "fa4ac6fb-0bcc-d2e3-0000-000000000000", "name": "vol-01" ... }, { "id": "690ae407-7c4d-b5d2-0000-000000000000", "name": "vol-01", .... }] }
La commande d'obtention de LUN renvoie les propriétés d'un LUN unique dans un pool ou un projet donné.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de LUN
Exemple de demande d'obtention d'un LUN nommé "vol-01" :
GET /api/storage/v1/pools/p1/projects/proj-01/lun/vol-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
En cas de succès de la commande get, un statut HTTP 200 (OK) est renvoyé ainsi qu'un tableau des propriétés du LUN au format JSON.
Exemple de résultat :
HTTP/1.1 200 OK Content-Type: application/json { "lun": { "logbias": "latency", "creation": "20130423T21:31:17", "nodestroy": false, "dedup": false, "rrsrc_actions": [], "id": "e3045406-319b-cf7a-0000-000000000000", "writecache": false, "compression": "off", "copies": 1, "stmfguid": "600144F0D8E0AE4100005176FDA60001", "source": { "compression": "default", "checksum": "inherited", "logbias": "default", "dedup": "default", "copies": "default", "exported": "inherited", "rrsrc_actions": "inherited", "secondarycache": "default" }, "canonical_name": "p1/local/default/disk1", "snaplabel": "", "usage": { "available": 881469214720.0, "loading": false, "snapshots": 0.0, "compressratio": 100.0, "total": 1073758208.0, "data": 1073758208.0 }, "secondarycache": "all", "collection": "local", "exported": true, "volsize": 1073741824.0, "pool": "p1", "volblocksize": 8192, "checksum": "fletcher4", "project": "default", "sparse": false } }
Cette commande crée un nouveau LUN. Vous devez indiquer une taille ou une source de clonage pour le nouveau LUN.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Paramètres de demande :
nom : le nom du LUN doit être renseigné pour créer un nouveau LUN.
Propriétés du volume : chaque propriété répertoriée dans les propriétés du LUN peut être définie en tant que valeur initiale.
Exemple de demande :
POST /api/storage/v1/pools/p1/projects/proj-01/luns HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json Request JSON: { name : "vol-001", // Volume name (required) size : 500000, // New Volume size blocksize : 8192, // New Volume block size sparse : true, // New Volume sparse data flag initiatorgroup : 'default', // Initiator group name targetgroup : 'default', // Target group name lunumber : 'auto', // Volume LU number status : 'online', // Initial Status ('online', 'offline') fixednumber : false, "source": { "snapshot_id" : "76b8950a-8594-4e5b-8dce-0dfa9c696358", "snapshot": "/pool-001/local/proj-001/snap-001" } }
Une création réussie renvoie un statut HTTP 201 (Created) dont l'en-tête d'emplacement contient l'URI du nouveau LUN. Le corps contient toutes les propriétés du LUN au format JSON.
Exemple de résultat :
HTTP/1.1 201 Created Content-Type: application/json Location: http://zfs-storage.example.com:215 /pools/p1/projects/proj-01/luns/vol-001 { "lun": { "name": "vol-001", ... } }
La commande de modification de LUN modifie les attributs d'un LUN existant.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de LUN
Paramètres de demande, propriétés de volume : chaque propriété du LUN ou du projet peut être modifiée.
Exemple de demande de modification d'un LUN nommé vol-01 en new-name :
POST /api/storage/v1/pools/p1/projects/proj-01/luns/vol-01 HTTP/1.1 Host: zfs-storage.example.com:215 Content-Type: application/json Accept: application/json { "name": "new-name", }
Une réponse obtenue avec succès renvoie le code de statut HTTP 202 (Accepted) et répertorie toutes les propriétés du LUN.
Exemple de résultat :
HTTP/1.1 201 Created Content-Type: application/json Location: /api/storage/v1/pools/p1/projects/proj-01/luns/new-name { "lun": { "name": "new-name", "pool": "p1", "collection": "local", "project": "proj-01", ... } }
La commande de suppression d'un LUN supprime un LUN unique dans un pool ou projet donné.
Les paramètres URI suivants sont utilisés :
Nom du pool de stockage
Nom de projet
Nom de LUN
Pour surveiller l'espace à récupérer dans le pool de stockage, saisissez la commande GET pour pools/pool. Notez l'espace pour la propriété async_destroy_reclaim_space. Lorsque l'opération est terminée, un 0 (zéro) s'affiche.
Exemple de demande :
DELETE /pools/p1/projects/proj-01/luns/lun-01 HTTP/1.1 Host: zfs-storage.example.com:215 Accept: application/json
Une commande get réussie renvoie le code HTTP 204 (No Content).
Exemple de résultat :
HTTP/1.1 204 No-Content