Go to main content

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

退出打印视图

更新时间: 2021 年 8 月
 
 

LUN 操作

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

表 48  卷命令
请求
附加到路径 /api/storage/v{1|2}
说明
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 属性。卷也可继承或覆盖项目属性。

表 49  卷属性
属性
类型
说明
assignednumber
数字或数字列表
分配的 LU 编号。如果提供给多个启动器组,则类型为数字列表。
如果提供给多个启动器组,则 assignednumber 和 initiatorgroups 的排序一致。例如,assignednumber 列表中的第一个项目与 initiatorgroups 列表中的第一个项目相关。
fixednumber
boolean
将 LU 编号固定为当前值的标志。
initiatorgroups
字符串列表
启动器组。
如果将该 LUN 提供给多个启动器组,则 assignednumber 和 initiatorgroups 的排序一致。例如,assignednumber 列表中的第一个项目与 initiatorgroups 列表中的第一个项目相关。
lunguid
string
STMF GUID。
lunumber
数字或字符串
LU 编号。一个数字或 auto。
project
string
项目名称(不可变)。
source
object
列出属性源(local 或 inherited)。
sparse
boolean
启用瘦置备的标志。
status
string
逻辑单元状态(online 或 offline)。
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:215
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:215
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:215
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
        lunumber : 'auto',          // Volume LU 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:215
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:215
Accept: application/json

成功执行 get 后将返回 HTTP 状态 204 (No Content)。

结果示例:

HTTP/1.1 204 No-Content