所有 LUN 或卷操作都可限定于给定的池或项目。以下 LUN 命令可用。
|
下表列出了 LUN 属性。卷也可继承或覆盖项目属性。
|
某些属性可从项目中继承。源对象列出了这些属性,并标识属性是 LUN 的“本地”属性还是从项目“继承”。默认情况下,这些属性由项目继承。只有进行设置后,才会成为 LUN 的本地属性。源对象不可变。要将源状态更改回 "inherited",可“取消设置”属性。
取消设置压缩的 JSON 请求示例:
{"unset": ["compression"]}
列出 lun 命令会返回给定池或项目中可用 LUN 的列表。
|
请求示例(列出 "proj-01" 项目中的 LUN):
GET /api/storage/v1/pools/gold/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 属性。
|
请求示例(获取名为 "vol-01" 的 LUN):
GET /api/storage/v1/pools/gold/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": "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
}
}
此命令可创建新的 LUN。您必须为新的 LUN 提供大小或克隆源。
|
请求参数:
name-必须提供 LUN 名称以创建新的 LUN。
volume properties-LUN 属性或项目属性中列出的任何属性都可设置为初始值。
请求示例:
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"
}
}
成功创建后,将返回 HTTP 状态 201 (Created),且位置头包含新 LUN 的 URI。正文包含所有 LUN 属性(使用 JSON 格式)。
结果示例:
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",
...
}
}
修改 LUN 命令用于更改现有 LUN 的属性。
|
请求参数-Volume Properties-可修改任何 LUN 或项目属性
请求示例(将 LUN 名称从 "vol-01" 更改为 "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”,
}
成功响应后,将返回 HTTP 状态 202 (Accepted) 并列出所有 LUN 属性。
响应示例:
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”,
...
}
}
删除 LUN 命令用于删除给定池或项目中的单个 LUN。
|
请求示例:
DELETE /pools/gold/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