Oracle® ZFS Storage Appliance RESTful API 指南,发行版 2013.1.5.0

退出打印视图

更新时间: 2016 年 2 月
 
 

LUN 操作

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

表 74  卷命令
请求
路径 /api/storage/v1
描述
GET
/luns
列出所有 LUN
GET
/pools/<pool>/projects /<project>/luns
列出 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 属性。卷也可继承或覆盖项目属性。

表 75  卷属性
类型
名称
描述
字符串
assignednumber
分配的 LU 编号。
布尔型
fixednumber
将 LU 编号固定为当前值的标志
字符串
initiatorgroup
启动器组
字符串
lunguid
STMF GUID
字符串
lunnumber
LU 编号。一个数字或 "auto"
字符串
project
项目名称(不可变)
对象
source
列出属性源("local"、"inherited")
布尔型
sparse
启用瘦置备的标志
字符串
status
逻辑单元状态("online"、"offline")
字符串
targetgroup
目标组
对象
Usage
列出 LUN 使用情况统计信息
数字
volblocksize
卷块大小
数字
volsize
卷大小
布尔型
writecache
启用写入缓存的标志

某些属性可从项目中继承。源对象列出了这些属性,并标识属性是 LUN 的“本地”属性还是从项目“继承”。默认情况下,这些属性由项目继承。只有进行设置后,才会成为 LUN 的本地属性。源对象不可变。要将源状态更改回 "inherited",可“取消设置”属性。

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

{"unset": ["compression"]}

列出 LUN

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

表 76  URI 参数
参数
描述
pool
存储池名称
project
项目名称

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

表 77  URI 参数
参数
描述
pool
存储池名称
project
项目名称
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。您必须为新的 LUN 提供大小或克隆源。

表 78  URI 参数
参数
描述
pool
存储池名称
project
项目名称

请求参数:

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

表 79  URI 参数
参数
描述
pool
存储池名称
project
项目名称
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 命令用于删除给定池或项目中的单个 LUN。

表 80  URI 参数
参数
描述
pool
存储池名称
project
项目名称
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