Go to main content

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

退出打印视图

更新时间: 2018 年 11 月
 
 

项目操作

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

表 59  项目命令
请求
附加到路径 /api/storage/v1
说明
GET
/projects
列出所有项目
GET
/pools/pool/projects
列出项目
GET
/pools/pool/projects?snaps=true
列出所有项目(包括快照)
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
获取指定的用户的项目使用情况

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

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

列出项目

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


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

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

请求示例:

GET /api/storage/v1/pools/p1/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 格式)。

用于列出 zfs-storage-1 池中名为 proj-01 的项目的请求示例:

GET /api/storage/v1/pools/p1/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": "zfs-storage-1/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": "p1",
        "default_user": "nobody",
        "name": "default",
        "checksum": "fletcher4",
        "default_group": "other",
        "sharesftp": "",
        "nbmand": false,
        "sharedav": "",
        "rstchown": true
    }
}

创建项目

创建项目命令将在给定存储池中创建使用给定名称的项目。此请求使用作为存储池名称的单个 URI 参数。将返回具有默认属性的新项目。

JSON 正文请求参数:

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

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

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

POST /api/storage/v1/pools/p1/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/p1/projects/proj-01

{
    "project": {
        "name": "proj-01",
        "href": "/api/storage/v1/pools/p1/projects/proj-01",
        "mountpoint": "/export/acme/zfs-storage-1",
        ...
    }
}

修改项目

此修改项目命令用于更改现有项目的属性。将使用以下 URI 参数:

pool

存储池名称

project

项目名称

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

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

POST /api/storage/v1/pools/p1/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/p1/projects/new-name

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

删除项目

此删除项目命令用于删除给定池中的单个项目。将使用以下 URI 参数:

pool

存储池名称

project

项目名称

如需监视在接受了延迟更新异步数据集删除 (OS8.7.0) 之后,要在存储池中回收的空间量,请针对 pools/pool 输入 GET 命令。记下 async_destroy_reclaim_space 属性的空间量。操作完成时会显示 0(零)。

请求示例:

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

项目使用情况

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