Go to main content

Oracle® ZFS Storage Appliance RESTful API 指南,发行版 OS8.8.0

退出打印视图

更新时间: 2018 年 11 月
 
 

LUN 操作

所有 LUN 或卷操作都可限定于给定的池或项目。以下 LUN 命令可用。

表 63  卷命令
请求
附加到路径 /api/storage/v1
说明
GET
/luns
列出所有 LUN
GET
/pools/pool/projects/project/luns
列出 LUN
GET
/pools/pool/projects/project/luns?snaps=true
列出所有 LUN(包括快照)
GET
/pools/pool/projects/project/luns/lun
获取 LUN 详细信息
POST
/pools/pool/projects/project/luns
创建 LUN
PUT
/pools/pool/projects/project/luns/lun
修改 LUN
DELETE
/pools/pool/projects/project/luns/lun
销毁 LUN

下表列出了 LUN 属性。卷也可继承或覆盖项目属性。

表 64  卷属性
属性
类型
说明
assignednumber
数字或数字列表
分配的 LU 编号。如果提供给多个启动器组,则类型为数字列表。
如果提供给多个启动器组,则 assignednumberinitiatorgroups 的排序一致。例如,assignednumber 列表中的第一个项目与 initiatorgroups 列表中的第一个项目相关。
fixednumber
boolean
将 LU 编号固定为当前值的标志。
initiatorgroups
字符串列表
启动器组。
如果将该 LUN 提供给多个启动器组,则 assignednumberinitiatorgroups 的排序一致。例如,assignednumber 列表中的第一个项目与 initiatorgroups 列表中的第一个项目相关。
lunguid
string
STMF GUID。
lunumber
数字或字符串
LU 编号。一个数字或 auto
project
string
项目名称(不可变)。
source
object
列出属性源(localinherited)。
sparse
boolean
启用瘦置备的标志。
status
string
逻辑单元状态(onlineoffline)。
targetgroup
string
目标组
usage
object
列出 LUN 使用情况统计信息
volblocksize
number
卷块大小
volsize
number
卷大小
writecache
boolean
启用写入缓存的标志

可以从项目继承某些属性。源对象列出这些属性中的每一个,并标识属性是 LUN 的本地属性还是从项目继承的。默认情况下,项目会继承这些属性。在设置后,它们将成为 LUN 的本地属性。源对象不可变。要将源状态更改回 inherited,可取消设置属性。

取消设置压缩的 JSON 请求示例:

{"unset": ["compression"]}

列出 LUN

列出 LUN 命令会返回给定池或项目中可用 LUN 的列表。


注 -  不支持 depth 查询参数和 match_property-name=value 查询参数。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

filesystem

文件系统名称

列出 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 命令会返回给定池或项目中的单个 LUN 属性。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

lun

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。您必须为新的 LUN 提供大小或克隆源。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

请求参数:

  • 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 命令用于更改现有 LUN 的属性。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

lun

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 命令用于删除给定池或项目中的单个 LUN。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

lun

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