所有 LUN 或卷操作都可限定于给定的池或项目。以下 LUN 命令可用。
|
下表列出了 LUN 属性。卷也可继承或覆盖项目属性。
|
可以从项目继承某些属性。源对象列出这些属性中的每一个,并标识属性是 LUN 的本地属性还是从项目继承的。默认情况下,项目会继承这些属性。在设置后,它们将成为 LUN 的本地属性。源对象不可变。要将源状态更改回 inherited,可取消设置属性。
取消设置压缩的 JSON 请求示例:
{"unset": ["compression"]}
列出 LUN 命令会返回给定池或项目中可用 LUN 的列表。
将使用以下 URI 参数:
存储池名称
项目名称
文件系统名称
列出 proj-01 项目中 LUN 的请求示例:
GET /api/storage/v1/pools/p1/projects/proj-01/luns HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
成功执行 get 后,将返回 HTTP 状态 200 (OK) 以及 LUN 属性(使用 JSON 格式)。
响应示例:
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", .... }] }
获取 LUN 命令会返回给定池或项目中的单个 LUN 属性。
将使用以下 URI 参数:
存储池名称
项目名称
LUN 名称
请求示例(获取名为 "vol-01" 的 LUN):
GET /api/storage/v1/pools/p1/projects/proj-01/lun/vol-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
成功执行 get 后,将返回 HTTP 状态 200 (OK) 以及 LUN 属性(使用 JSON 格式)。
响应示例:
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 } }
此命令可创建新的 LUN。您必须为新的 LUN 提供大小或克隆源。
将使用以下 URI 参数:
存储池名称
项目名称
请求参数:
name-必须提供 LUN 名称以创建新的 LUN。
Volume properties-LUN 属性或项目属性中列出的任何属性都可设置为初始值。
请求示例:
POST /api/storage/v1/pools/p1/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" } }
成功创建后,将返回 HTTP 状态 201 (Created),且位置头包含新 LUN 的 URI。正文包含所有 LUN 属性(使用 JSON 格式)。
结果示例:
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", ... } }
修改 LUN 命令用于更改现有 LUN 的属性。
将使用以下 URI 参数:
存储池名称
项目名称
LUN 名称
请求参数:volume properties-可修改任何 LUN 或项目属性。
将 LUN 名称从 vol-01 更改为 new-name 的请求示例:
POST /api/storage/v1/pools/p1/projects/proj-01/luns/vol-01 HTTP/1.1 Host: zfs-storage.example.com Content-Type: application/json Accept: application/json { "name": "new-name", }
成功响应后,将返回 HTTP 状态 202 (Accepted) 并列出所有 LUN 属性。
响应示例:
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", ... } }
删除 LUN 命令用于删除给定池或项目中的单个 LUN。
将使用以下 URI 参数:
存储池名称
项目名称
LUN 名称
如需监视要在存储池中回收的空间量,请针对 pools/pool 输入 GET 命令。记下 async_destroy_reclaim_space 属性的空间量。操作完成时会显示 0(零)。
请求示例:
DELETE /pools/p1/projects/proj-01/luns/lun-01 HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
成功执行 get 后将返回 HTTP 状态 204 (No Content)。
响应示例:
HTTP/1.1 204 No-Content