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é.
|
Exemple de demande d'énumération des LUN au sein d'un projet "proj-01" :
GET /api/storage/v1/pools/gold/projects/proj-01/luns HTTP/1.1 Host: zfs-storage.example.com 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éponse :
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é.
|
Exemple de demande d'obtention d'un LUN nommé "vol-01" :
GET /api/storage/v1/pools/gold/projects/proj-01/lun/vol-01 HTTP/1.1 Host: zfs-storage.example.com 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éponse :
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": "platinum/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": "platinum", "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.
|
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/gold/projects/proj-01/luns HTTP/1.1 Host: zfs-storage.example.com 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 lunnumber : 'auto', // Volume LUN 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ésultats :
HTTP/1.1 201 Created Content-Type: application/json Location: http://zfs-storage.example.com:215 /pools/gold/projects/proj-01/luns/vol-001 { “lun”: { "name": "vol-001", ... } }
La commande Modify LUN modifie les attributs d'un LUN existant.
|
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é "proj-01" en "new-name" :
POST /api/storage/v1/pools/gold/projects/proj-01/luns/vol-01 HTTP/1.1 Host: zfs-storage.example.com 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éponse :
HTTP/1.1 201 Created Content-Type: application/json Location: /api/storage/v1/pools/gold/projects/proj-01/luns/new-name { “lun”: { “name”: “new-name”, “pool”: “gold”, “collection”: “local”, “project”: “proj-01”, ... } }
La commande de suppression d'un LUN supprime un LUN unique dans un pool ou projet donné.
|
Exemple de demande :
DELETE /pools/gold/projects/proj-01/luns/lun-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Une commande Get réussie renvoie le code HTTP 204 (No Content).
Exemple de réponse :
HTTP/1.1 204 No-Content