ファイルシステム操作では、ファイルシステム共有を一覧表示および管理します。すべてのコマンドは、特定のストレージプールまたはプロジェクトへスコープ指定されます。
{service_uri}/pools/{pool}/project/{project}
|
各ファイルシステムにはプロジェクトからのプロパティーが含まれ、次のファイルシステム固有のプロパティーがあります。
|
ファイルシステムの一覧表示コマンドを実行すると、指定されたプールまたはプロジェクト内のファイルシステムがすべて一覧表示されます。
問合せパラメータ - フィルタ – プロジェクト内のプロパティーがその値内に同じフィルタ文字列を含んでいることを必要とする簡易的な文字列照合フィルタ。
|
リクエストの例:
GET /api/storage/v1/pools/gold/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”: “gold”,
...
}, {
“name”: “filesystem-02”,
“project”: “proj-01”,
“pool”: “gold”,
...
}]
}
すべてのプールおよびプロジェクトにわたるすべてのファイルシステムのリストもサポートされます。その場合、URI は /api/storage/v1/filesystems となります
リクエストの例 (プロパティーの一部として「abcd」の文字列を持つすべてのファイルシステムを取得する):
GET /api/storage/v1/filesystems?filter=abcd HTTP/1.1 Host: zfs-storage.example.com Accept: application/json
ファイルシステムの取得コマンドを実行すると、指定されたプールまたはプロジェクト内の単一のファイルシステムのプロパティーが返されます。
|
リクエストの例 (「proj-01」という名前のプロジェクトを一覧表示する):
GET /api/storage/v1/pools/gold/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/grape",
"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": "platinum/local/default/grape",
"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": "platinum",
"quota_snap": true,
"name": "grape",
"checksum": "fletcher4",
"project": "default",
"sharesftp": "",
"nbmand": false,
"reservation_snap": true,
"sharedav": "",
"rstchown": true
}
}
ファイルシステムの作成コマンドを実行すると、指定されたストレージプールまたはプロジェクトに指定された名前のファイルシステムが作成されます。デフォルトのプロパティーを持つ新しいファイルシステムが返されます。
|
リクエストのパラメータ:
名前 – 新しいファイルシステムを作成するには、ファイルシステム名を指定する必要があります。
ファイルシステムプロパティー – ファイルシステムプロパティーまたはプロジェクトプロパティーに一覧表示された任意のプロパティーを初期値として設定できます。
リクエストの例 (「share-01」という名前で、ユーザー「joe」が所有するファイルシステムを作成する):
POST /api/storage/v1/pools/gold/projects/proj-01/filesystems HTTP/1.1
Host: zfs-storage.example.com
Content-Type: application/json
Accept: application/json
{
“name”: “share-01”,
“owner”: “joe”
}
作成に成功すると、HTTP ステータス 201 (Created) が、新しいファイルシステムの URI を含むロケーションヘッダーとともに返されます。本文には、JSON 形式のファイルシステムプロパティーがすべて含まれます。
レスポンスの例:
HTTP/1.1 201 Created
Content-Type: application/json
Location: /api/storage/v1/pools/gold/projects/proj-01/filesystems/share-01
{
“filesystem”: {
“name”: “share-01”,
“pool”: “gold”,
“collection”: “local”,
“project”: “proj-01”,
“owner”: “joe”
...
}
}
ファイルシステムの変更コマンドは、既存のファイルシステムの属性を変更します。応答に成功すると、HTTP ステータス 202 (Accepted) が返され、すべてのファイルシステムプロパティーが一覧表示されます。
リクエストパラメータ - ファイルシステムプロパティー – 任意のファイルシステムプロパティーまたはプロジェクトプロパティーを変更できます。
|
リクエストの例 (ファイルシステム名を「share-01」から「new-name」に変更し、所有者を「nobody」に変更する):
PUT /api/storage/v1/pools/gold/projects/proj-01/filesystems/share-01
HTTP/1.1
Host: zfs-storage.example.com
Content-Type: application/json
Accept: application/json
{
“name”: “new-name”,
“owner”: “nobody”,
}
レスポンスの例:
HTTP/1.1 202 Accepted
Content-Type: application/json
Location: http://zfs-storage.example.com:215
/pools/gold/projects/proj-01/filesystems/share-01
{
“filesystem”: {
“name”: “new-name”,
“pool”: “gold”,
“collection”: “local”,
“project”: “proj-01”,
“owner”: “nobody”
...
}
}
ファイルシステムの削除コマンドを実行すると、指定されたプールまたはプロジェクト内の単一のファイルシステムを削除します。
|
リクエストの例:
DELETE /api/storage/v1/pools/gold/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 リクエストは、プロジェクトのユーザー当たりまたはグループ当たりの使用状況データの取得に使用できます。