Todas las operaciones del LUN o de se pueden acotar a una agrupación o a un proyecto determinados. Los siguientes comandos del LUN están disponibles.
|
La tabla siguiente muestra las distintas propiedades del LUN: Los volúmenes también pueden heredar o anular las propiedades del proyecto.
|
Algunas propiedades se pueden heredar del proyecto. El objeto de origen muestra cada una de esas propiedades e identifica si la propiedad es "local" para el LUN o "inherited" del proyecto. De forma predeterminada, estas propiedades se heredan del proyecto. Una vez que se configuran, son locales para el LUN. El objeto de origen es inmutable. Para volver a cambiar el origen a heredado, las propiedades se pueden "unset".
Ejemplo de solicitud JSON para anular la compresión:
{"unset": ["compression"]}
El comando mostrar LUN devuelve las propiedades de los LUN disponibles en una agrupación o en un proyecto determinados.
|
Ejemplo de solicitud (para mostrar los LUN dentro del proyecto "proj-01"):
GET /api/storage/v1/pools/gold/projects/proj-01/luns HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Un comando get correcto devuelve HTTP Status 200 (OK) (estado HTTP 200 [correcto]) junto con las propiedades del LUN en formato JSON.
Ejemplo de respuesta:
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”, .... }] }
El comando obtener LUN devuelve las propiedades de un solo LUN en una agrupación o en un proyecto determinados.
|
Ejemplo de solicitud (para obtener un LUN denominado "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
Un comando get correcto devuelve HTTP Status 200 (OK) (estado HTTP 200 [correcto]) junto con las propiedades del LUN en formato JSON.
Ejemplo de respuesta:
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 } }
Este comando crea un LUN nuevo. Debe suministrar un tamaño o un origen de clonación para el LUN nuevo.
|
Solicitar parámetros:
name: se debe suministrar el nombre del LUN para crear un nuevo LUN.
volume properties: cualquiera de las propiedades detalladas en las propiedades del LUN o del proyecto se pueden configurar como valores iniciales.
Ejemplo de solicitud:
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" } }
La creación satisfactoria devuelve el estado HTTP Status 201 (Created) (HTTP 201 [creado]) con el encabezado de ubicación que contiene el LUN del sistema de archivos nuevo. El cuerpo contiene todas las propiedades del LUN en formato JSON.
Ejemplo de resultados:
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", ... } }
El comando de modificación de LUN cambia los atributos de un LUN existente.
|
Solicitar parámetros (propiedades de volumen): se puede modificar cualquiera de las propiedades del LUN o del proyecto..
Ejemplo de solicitud (para cambiar el nombre de un LUN de "proj-01" a "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”, }
La respuesta satisfactoria devuelve HTTP Status 202 (Accepted) (estado HTTP 202 [aceptado]) y muestra todas las propiedades del LUN.
Ejemplo de respuesta:
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”, ... } }
El comando suprimir LUN elimina un solo LUN de una agrupación o un proyecto determinados.
|
Ejemplo de solicitud:
DELETE /pools/gold/projects/proj-01/luns/lun-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
Un comando get correcto devuelve HTTP Status 204 (No Content) (estado HTTP 204 [sin contenido]).
Ejemplo de respuesta:
HTTP/1.1 204 No-Content