Go to main content

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

退出打印视图

更新时间: 2018 年 11 月
 
 

文件系统操作

文件系统操作命令可列出和管理文件系统共享资源。所有命令都可限定于给定的存储池或项目。

service_uri/pools/pool/project/project
表 61  文件系统命令
请求
附加到路径 /api/storage/v1
说明
GET
/filesystems
列出所有文件系统
GET
/pools/pool/projects/project/filesystems
列出指定的文件系统
GET
/pools/pool/projects/project/filesystems?snaps=true
列出所有文件系统(包括快照)
GET
/pools/pool/projects/project/filesystems/filesystem
获取文件系统详细信息
POST
/pools/pool/projects/project/filesystems
创建文件系统
PUT
/pools/pool/projects/project/filesystems/filesystem
修改文件系统
DELETE
/pools/pool/projects/project/filesystems/filesystem
销毁文件系统
GET
/pools/pool/projects/project/filesystems/filesystem/usage/groups
获取文件系统组使用情况
GET
/pools/pool/projects/project/filesystems/filesystem/usage/groups/group
获取指定的组的文件系统使用情况
POST
/pools/pool/projects/project/filesystems/filesystem/usage/groups
创建文件系统组配额
PUT
/pools/pool/projects/project/filesystems/filesystem/usage/groups/name
修改文件系统组配额
GET
/pools/pool/projects/project/filesystems/filesystem/usage/users
获取文件系统用户使用情况
GET
/pools/pool/projects/project/filesystems/filesystem/usage/users/user
获取指定的用户的文件系统使用情况
POST
/pools/pool/projects/project/filesystems/filesystem/usage/users
创建文件系统用户配额
PUT
/pools/pool/projects/project/filesystems/filesystem/usage/users/name
修改文件系统用户配额
GET
/pools/pool/projects/project/filesystems/filesystem/shadow/errors
列出影子迁移错误

每个文件系统都包含此项目中的属性,并具有以下特定于文件系统的属性。

表 62  文件系统属性
属性
类型
说明
casesensitivity
string
"Case Sensitivity" 设置:mixedsensitiveinsensitive
group
string
组名
normalization
string
标准化
permissions
string
文件系统权限
project
string
项目名称
quota_snap
boolean
指示配额中包括快照的标志
reservation_snap
boolean
指示预留空间中包括快照的标志
shadow
string
数据迁移源
errors
string
数据迁移错误
sharesmb_name
string
SMB 共享资源的名称
source
object
项目继承属性
usage
object
文件系统使用情况信息
user
string
拥有共享资源的用户名
utf8only
boolean
拒绝非 UTF-8 的标志

列出文件系统

列出文件系统命令显示给定池或项目中的所有文件系统。


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

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

列出文件系统命令使用以下 URI 参数:

pool

存储池名称

project

项目名称

请求示例:

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

成功执行请求后,将返回 HTTP 状态 200 (OK) 以及系统文件属性数组(使用 JSON 格式)。

结果示例:

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

{
    "filesystems": [{
        "name": "filesystem-01",
        "project": "proj-01",
        "pool": "p1",
        ...
    }, {
        "name": "filesystem-02",
        "project": "proj-01",
        "pool": "p1",
        ...
    }]
}

系统也支持所有池和项目中的所有文件系统的列表。在这种情况下,URI 将是 /api/storage/v1/filesystems。

获取所有文件系统并以 "abcd" 字符串作为其部分属性的请求示例:

GET /api/storage/v1/filesystems?filter=abcd HTTP/1.1
Host: zfs-storage.example.com
Accept: application/json

获取文件系统

获取文件系统命令返回给定池或项目中的单个文件系统的属性。将使用以下 URI 参数:

pool

存储池名称

project

项目名称

filesystem

文件系统名称

列出名为 proj-01 的项目的请求示例:

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

{
    "filesystem": {
        "logbias": "latency",
        "creation": "20130423T21:30:34",
        "nodestroy": false,
        "dedup": false,
        "sharenfs": "on",
        "sharesmb": "off",
        "mountpoint": "/export/mnt1",
        "snaplabel": "",
        "id": "424ca2ec-b3fa-df86-0000-000000000000",
        "readonly": false,
        "rrsrc_actions": [],
        "compression": "off",
        "sharetftp": "",
        "source": {
            "logbias": "default",
            "dedup": "default",
            "sharenfs": "inherited",
            "sharesmb": "off",
            "mountpoint": "inherited",
            "rrsrc_actions": "local",
            "compression": "default",
            "sharetftp": "inherited",
            "snapdir": "default",
            "aclmode": "default",
            "copies": "default",
            "aclinherit": "default",
            "shareftp": "inherited",
            "readonly": "default",
            "secondarycache": "default",
            "exported": "inherited",
            "vscan": "default",
            "reservation": "local",
            "atime": "default",
            "recordsize": "default",
            "checksum": "inherited",
            "sharesftp": "inherited",
            "nbmand": "default",
            "rstchown": "default"
        },
        "snapdir": "hidden",
        "aclmode": "discard",
        "copies": 1,
        "aclinherit": "restricted",
        "shareftp": "",
        "canonical_name": "p1/local/default/mnt1",
        "recordsize": 131072.0,
        "usage": {
            "available": 880395477504.0,
            "loading": false,
            "quota": 0.0,
            "snapshots": 18432.0,
            "compressratio": 100.0,
            "reservation": 0.0,
            "total": 50176.0,
            "data": 31744.0
        },
        "secondarycache": "all",
        "collection": "local",
        "exported": true,
        "vscan": false,
        "reservation": 0.0,
        "shadow": "none",
        "atime": true,
        "pool": "p1",
        "quota_snap": true,
        "name": "mnt1",
        "checksum": "fletcher4",
        "project": "default",
        "sharesftp": "",
        "nbmand": false,
        "reservation_snap": true,
        "sharedav": "",
        "rstchown": true,
        "root_acl": {
             "owner@:cC:fd:deny",
             "everyone@:rw:fd:allow",
             "user:admin1:rw:allow",
        }
        "smbshareacl": {
             "owner@:cC:fd:deny",
             "everyone@:rw:fd:allow",
             "user:admin1:rw:allow",
        }
}

创建文件系统

创建文件系统命令可在给定存储池或项目中创建使用给定名称的文件系统。将返回带默认属性的新文件系统。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

filesystem

文件系统名称

请求参数:

  • name-必须提供文件系统名称以创建新的文件系统。

  • filesystem properties-文件系统属性或项目属性中列出的任何属性都可设置为初始值。

请求示例(创建名为 share-01 且由用户 admin1 拥有的文件系统):

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

{
    "name": "share-01",
    "root_user": "admin1"
}

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

响应示例:

HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/storage/v1/pools/p1/projects/proj-01/filesystems/share-01

{
    "filesystem": {
        "name": "share-01",
        "pool": "p1",
        "collection": "local",
        "project": "proj-01",
        "root_user": "admin1"
        ...
    }
}

修改文件系统

修改文件系统命令用于更改现有文件系统的属性。成功响应后,将返回 HTTP 状态 202 (Accepted) 并列出所有文件系统属性。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

filesystem

文件系统名称

请求参数:filesystem properties-可修改任何文件系统或项目属性。

将文件系统名称从 share-01 更改为 new-name 并将所有者更改为 nobody 的请求示例:

PUT /api/storage/v1/pools/p1/projects/proj-01/filesystems/share-01 HTTP/1.1
Host: zfs-storage.example.com
Content-Type: application/json
Accept: application/json

{
    "name": "new-name",
    "root_user": "nobody",
}

响应示例:

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: http://zfs-storage.example.com:215/pools/p1/projects/proj-01/filesystems/share-01

{
    "filesystem": {
        "name": "new-name",
        "pool": "p1",
        "collection": "local",
        "project": "proj-01",
        "root_user": "nobody"
        ...
    }
}

删除文件系统

删除文件系统命令用于删除给定池或项目中的单个文件系统。

将使用以下 URI 参数:

pool

存储池名称

project

项目名称

filesystem

文件系统名称

如需监视要在存储池中回收的空间量,请针对 pools/pool 输入 GET 命令。记下 async_destroy_reclaim_space 属性的空间量。操作完成时会显示 0(零)。

请求示例:

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

成功删除后将返回 HTTP 状态 204 (No Content)。

响应示例:

HTTP/1.1 204 No-Content

文件系统配额和使用情况

可使用 POSTPUT 请求分别创建或修改用户或组配额。对文件系统使用资源的 GET 请求可用于按用户或组获取项目的使用情况数据。