文件系统操作命令可列出和管理文件系统共享资源。所有命令都可限定于给定的存储池或项目。
service_uri/pools/pool/project/project
|
每个文件系统都包含此项目中的属性,并具有以下特定于文件系统的属性。
|
列出文件系统命令显示给定池或项目中的所有文件系统。
查询参数:filter-一个简单的字符串匹配过滤器,要求项目中的属性在其值中包含相同的过滤器字符串。
列出文件系统命令使用以下 URI 参数:
存储池名称
项目名称
请求示例:
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 参数:
存储池名称
项目名称
文件系统名称
列出名为 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 参数:
存储池名称
项目名称
文件系统名称
请求参数:
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 参数:
存储池名称
项目名称
文件系统名称
请求参数: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 参数:
存储池名称
项目名称
文件系统名称
如需监视要在存储池中回收的空间量,请针对 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
可使用 POST 或 PUT 请求分别创建或修改用户或组配额。对文件系统使用资源的 GET 请求可用于按用户或组获取项目的使用情况数据。