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

退出打印视图

更新时间: 2016 年 2 月
 
 

项目操作

所有项目操作都可限定到给定池。在所有项目中运行的命令会将 "/projects" 附加到 URI,而在单个项目中运行的命令则附加 "/projects/{project}"。

表 60  项目命令
请求
路径 /api/storage/v1
描述
GET
/projects
列出所有项目
GET
/pools/<pool>/projects
列出项目
GET
/pools/<pool>/projects /<project>
获取项目详细信息
POST
/pools/<pool>/projects
创建项目
PUT
/pools/<pool>/projects /<project>
修改项目
DELETE
/pools/<pool>/projects /<project>
销毁项目
GET
/pools/<pool>/projects /<project>/usage/groups
获取项目组的使用情况
GET
/pools/<pool>/projects /<project>/usage/groups/<group>
获取指定组的项目使用情况
GET
/pools/<pool>/projects /<project>/usage/users
获取项目用户的使用情况
GET
/pools/<pool>/projects /<project>/usage/users/<user>
获取指定的用户的项目使用情况

下表显示了项目资源中的可编辑属性的列表。

表 61  项目属性
类型
名称
描述
字符串
aclinherit
ACL 继承行为("discard"、"noallow"、"restricted"、"passthrough"、"passthrough-x")
字符串
aclmode
模式更改时的 ACL 行为("discard"、"mask"、"passthrough")
布尔型
atime
读取时更新访问时间标志
字符串
canonical_name
规范名称
字符串
checksum
块校验和("fletcher2"、"fletcher4"、"sha256")
字符串
compression
数据压缩设置("off"、"lzjb"、"gzip-2"、"gzip"、"gzip-9")
数字
copies
其他复制副本的数量
日期时间
creation
项目(或 LUN、文件系统)创建的日期和时间
布尔型
dedup
重复数据删除标志
字符串
default_group
项目默认文件系统组:"other"
字符串
default_permissions
项目默认文件系统权限 "700"
布尔型
default_sparse
项目默认 LUN 稀疏数据标志
字符串
default_user
项目默认文件系统用户:"nobody"
数字
default_volblocksize
项目默认 LUN 块大小:8192
数字
default_volsize
项目默认 LUN 大小
布尔型
exported
已导出标志
字符串
logbias
同步写入偏向("latency"、"throughput")
字符串
mountpoint
共享挂载点默认值 "/export/proj-01"
字符串
name
项目名称
布尔型
nbmand
非阻塞强制性锁定标志
布尔型
nodestroy
阻止销毁标志
数字
quota
项目配额大小(单位为字节)
字符串
origin
克隆来源
字符串
pool
池名称
布尔型
readonly
仅在此属性设置为 true 时才读取数据
字符串
recordsize
数据库记录大小为 "128k"
数字
reservation
数据预留空间大小
布尔型
rstchown
限制所有权更改标志
字符串
secondarycache
二级高速缓存使用情况("all"、"metadata"、"none")
字符串
sharedav
HTTP 共享资源("off"、"rw"、"ro")
字符串
shareftp
FTP 共享资源("off"、"rw"、"ro")
字符串
sharenfs
NFS 共享资源("off"、"on"、"ro"、"rw")
字符串
sharesftp
SFTP 共享资源("off"、"rw"、"ro")
字符串
sharesmb
SMB/CIFS 共享资源("off"、"rw"、"ro")
字符串
sharetftp
TFTP 共享资源("off"、"rw"、"ro")
字符串
snapdir
.zfs/snaphsot 可见性("hidden"、"visible")
字符串
snaplabel
调度的快照标签
布尔型
vscan
病毒扫描标志

列出项目

此命令列出给定池中的所有项目。每个返回的项目都包含上述可修改属性的列表以及池名称、创建时间、装入状态、复制操作和数据使用情况。

查询参数 filter-一个简单的字符串匹配过滤器,要求项目中的属性在其值中包含相同的过滤器字符串。

表 62  URI 参数
参数
描述
pool
存储池名称

请求示例:

GET /api/storage/v1/pools/gold/projects HTTP/1.1
Host: zfs-storage.example.com
Accept: application/json

成功执行 get 后,将返回 HTTP 代码 200 (OK) 以及项目属性数组(使用 JSON 格式)。

结果示例:

HTTP/1.1 200 OK
Content-Type: application/json

{
    “projects”: [{
        “name”: “proj-01”,
        ...
    }, {
        “name”: “proj-02”,
        ...
    }
}

系统也支持所有池中的所有项目的列表;URI 将仅包含 /projects 路径。

获取所有项目并以 "backup" 作为其部分属性的请求示例:

GET /projects?filter=backup HTTP/1.1
Host: zfs-storage.example.com
Accept: application/json

获取项目属性

此命令列出给定池中单个项目的属性。成功执行 get 后,将返回 HTTP 代码 200 (OK) 以及项目属性(使用 JSON 格式)。

表 63  获取项目 URI 参数
参数
描述
pool
存储池名称
project
项目名称

列出 "gold" 池中名为 "proj-01" 的项目的请求示例:

GET /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1
Host: zfs-storage.example.com
Accept: application/json

响应示例:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "project": {
        "default_volblocksize": 8192.0,
        "logbias": "latency",
        "creation": "20130411T20:02:35",
        "nodestroy": false,
        "dedup": false,
        "sharenfs": "on",
        "sharesmb": "off",
        "default_permissions": "700",
        "mountpoint": "/export",
        "snaplabel": "",
        "id": "042919bb-0882-d903-0000-000000000000",
        "readonly": false,
        "rrsrc_actions": [],
        "compression": "off",
        "sharetftp": "",
        "default_sparse": false,
        "snapdir": "hidden",
        "aclmode": "discard",
        "copies": 1,
        "aclinherit": "restricted",
        "shareftp": "",
        "canonical_name": "gold/local/default",
        "recordsize": 131072.0,
        "usage": {
            "available": 1758424767306.0,
            "loading": false,
            "quota": 0.0,
            "snapshots": 0.0,
           "compressratio": 100.0,
           "child_reservation": 0.0,
           "reservation": 0.0,
           "total": 45960.0,
            "data": 45960.0
        },
        "default_volsize": 0.0,
        "secondarycache": "all",
        "collection": "local",
        "exported": true,
        "vscan": false,
        "reservation": 0.0,
        "atime": true,
        "pool": "gold",
        "default_user": "nobody",
        "name": "default",
        "checksum": "fletcher4",
        "default_group": "other",
        "sharesftp": "",
        "nbmand": false,
        "sharedav": "",
        "rstchown": true
    }
}

创建项目

创建项目命令将在给定存储池中创建使用给定名称的项目。将返回具有默认属性的新项目。

表 64  URI 参数
参数
描述
pool
存储池名称

JSON 正文请求参数:

  • name-必须提供项目名称以创建项目。

  • project properties-任何项目属性都可设置为新项目的初始值。

请求示例(创建名为 "proj-01" 的项目):

POST /api/storage/v1/pools/gold/projects HTTP/1.1
Hosta: zfs-storage.example.com
Content-Type: application/json
Accept: application/json

{
    “name”: “proj-01”,
    “sharenfs”: “ro”
}

成功创建后,将返回 HTTP 状态 201 (Created),且位置头包含新项目的 URI。正文包含所有项目属性(使用 JSON 格式)。

结果示例:

HTTP/1.1 201 Created
Content-Type: application/json
Location: http://zfs-storage.example.com:215
          /pools/gold/projects/proj-01

{
    “project”: {
        “name”: “proj-01”,
        "href": "/api/storage/v1/pools/gold/projects/proj-01",
        “mountpoint”: “/export/acme/gold”,
        ...
    }
}

修改项目

此修改项目命令用于更改现有项目的属性。

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

请求参数-Project Properties-任何项目属性都可设置为新项目的初始值。

请求示例(将项目名称从 "proj-01" 更改为 "new-name"):

POST /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1
Host: zfs-storage.example.com
Content-Type: application/json
Accept: application/json

{
    “name”: “new-name”,
    “sharenfs”: “rw”,
    “compression”: “gzip-9”
}

成功响应后,将返回 HTTP 状态 202 (Accepted) 并列出所有项目属性。

响应示例:

HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/storage/v1/pools/gold/projects/new-name

{
    “project”: {
        “name”: “new-name”,
        “sharenfs”: “rw”,
        “compression: “gzip-9”,
         ...
    }
}

删除项目

此删除项目命令用于删除给定池中的单个项目。

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

请求示例:

DELETE /api/storage/v1/pools/gold/projects/proj-01 HTTP/1.1
Host: zfs-storage.example.com
Accept: application/json

项目使用情况

获取请求项目使用情况资源可用于按用户或用户组获取项目的使用情况数据。