スナップショットの操作はすべて、指定されたプールまたはプロジェクトにスコープ指定されます。スナップショット操作は、ファイルシステムまたは LUN レベルにもスコープ指定できます。
すべてのプロジェクトベースのスナップショット操作の URI は /api/storage/v1/pools/{pool}/projects/{project} で始まります。
すべてのファイルベースのスナップショット操作の URI は /api/storage/v1/pools/{pool}/projects/{project}/filesystems/{filesystem} で始まります。
すべての LUN ベースのスナップショット操作の URI は /api/storage/v1/pools/{pool}/projects/{project}/luns/{lun} で始まります。
|
アプライアンス上の使用可能なスナップショットを一覧表示します。リクエスト URI に応じて、リストにはプロジェクト、ファイルシステム、または LUN のスナップショットが含まれます。
|
リクエストの例:
GET /api/storage/v1/pools/gold/projects/default/snapshots Accept: application/json
レスポンスの例:
HTTP/1.1 200 OK
Content-Type: application/json
{
"snapshots": [{
"id": "3fbbcccf-d058-4502-8844-6feeffdf4cb5",
"display_name": "snap-001",
“display_description": "Daily backup",
"volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
"status": "available",
"size": 30,
"created_at": "2012-02-29T03:50:07Z"
}, {
"id": "e479997c-650b-40a4-9dfe-77655818b0d2",
"display_name": "snap-002",
"display_description": "Weekly backup",
"volume_id": "76b8950a-8594-4e5b-8dce-0dfa9c696358",
"status": "available",
"size": 25,
"created_at": "2012-03-19T01:52:47Z"
}]
}
単一のスナップショットに関するすべての情報を表示します。成功すると、HTTP ステータス 200 (OK) が返されます。
リクエストの例:
GET /api/storage/v1/pools/gold/projects/default/snapshots/snap-001 Accept: application/json
レスポンスの例:
HTTP/1.1 200 OK
Content-Type: application/json
{
"snapshot": {
"id": "3fbbcccf-d058-4502-8844-6feeffdf4cb5",
"display_name": "snap-001",
"display_description": "Daily backup",
"volume_id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
"status": "available",
"size": 30,
"created_at": "2012-02-29T03:50:07Z"
}
}
スナップショットの作成コマンドを実行すると、プロジェクト、ファイルシステム、または LUN のスナップショットが作成されます。
プロジェクトスナップショットの作成 – POST /pools/{pool}/projects/{project}/snapshots
ファイルシステムスナップショットの作成 – POST /pools/{pool}/projects/{project}/filesystems/{share}/snapshots
ボリュームスナップショットの作成 – POST /pools/{pool}/projects/{project}/luns/{lun}/snapshots
リクエストの例:
POST /api/storage/v1/pools/gold/projects/default/snapshots
Content-Type: application/json
{"name": "initial-backup"}
レスポンスの例:
HTTP/1.1 201 Created
Content-Type: application/json
Location: /pools/gold/projects/default/
snapshot/initial-backup
{
"snapshot": {
"name": "initial-backup",
"numclones": 0,
"creation": "20130610T21:00:49",
"collection": "local",
"project": "default",
"canonical_name": "gold/local/default@initial-backup",
"usage": {
"unique": 0.0,
"loading": false,
"data": 145408.0
},
"type": "snapshot",
"id": "a26abd24-e22b-62b2-0000-000000000000",
"pool": "gold"
}
}
既存のスナップショットの名前を変更します。
リクエスト URI - スナップショット、現在のスナップショット名
リクエスト本文 - 新しいスナップショット名を含む名前パラメータを持つ JSON オブジェクト
リクエストの例:
PUT /api/storage/v1/pools/gold/projects/default/snapshots/initial-snapshot
Content-Type: application/json
Accept: application/json
{“name”:”old-snapshot”}
レスポンスの例:
HTTP/1.1 202 Accepted Content-Type: application/json Location: /pools/gold/projects/default/snapshot/initial-backup
既存のスナップショットから新しいファイルシステムまたは LUN を作成します。
ファイルシステムのクローン作成のリクエスト URI:
PUT /pools/{pool}/projects/{project}/filesystems/{share}/snapshots/{snap}/clone
クローンボリューム:
PUT /pools/{pool}/projects/{project}/luns/{lun}/snapshots/{snapshot}/clone
|
リクエストの本文には、次のプロパティーを持つ JSON オブジェクトが含まれます。
|
リクエストの例:
PUT /api/storage/v1/pools/gold/projects/default/filesystems/fs01/
snapshots/snap01/clone
{"project":"rest", "share":"snap01clone01", "compression": "gzip-9"}
レスポンスの例:
HTTP/1.1 201 Created
Content-Length: 2035
X-Zfssa-Storage-Api: 1.0
Location: /api/storage/v1/pools/gold/projects/rest/filesystem/snap01clone01
Content-Type: application/json; charset=utf-8
{
"filesystem": {
"origin": {
"project": "default",
"share": "fs01",
"snapshot": "snap01",
"pool": "gold",
"collection": "local"
},
"href": "/api/storage/v1/pools/gold/projects/rest/filesystems/snap01clone01",
"mountpoint": "/export/snap01clone01",
"compression": "gzip-9",
"source": {
"compression": "local",
...
},
...
"canonical_name": "gold/local/rest/snap01clone01"
}
}
スナップショットのロールバックでは、ソースのファイルシステムまたは LUN が、スナップショットが作成されたときの状態に戻されます。応答に成功すると、HTTP ステータス 202 (Accepted) が JSON 形式のスナップショットプロパティーとともに返されます。
ファイルシステムスナップショットのロールバック:
PUT /pools/{pool}/projects/{project}/filesystems/{share}/snapshots/{snap}/rollback
LUN スナップショットのロールバック:
PUT /pools/{pool}/projects/{project}/luns/{lun}/snapshots/{snapshot}/rollback
|
リクエストの例:
PUT /api/storage/v1/pools/gold/projects/default/filesystems/fs-01
/snapshots/initial-backup/rollback
レスポンスの例:
HTTP/1.1 202 Accepted
Location: /pools/gold/projects/default/filesystems/fs-01/snapshot/fs-01-initial-clone
Content-Type: application/json
{
"snapshot": {
"name": "fs-01-initial-clone",
"numclones": 0,
"creation": "20130610T21:00:49",
"filesystem": "fs-01",
"collection": "local",
"project": "default",
"canonical_name": "gold/local/default/
fs-01@fs-01-initial-clone",
"usage": {
"unique": 0.0,
"loading": false,
"data": 31744.0
},
"type": "snapshot",
"id": "5c9bda07-21c1-2238-0000-000000000000",
"pool": "gold"
}
}
スナップショットの削除コマンドを実行すると、システムからプロジェクト、ファイルシステム、または LUN のスナップショットが削除されます。
指定されたスナップショットの単一のスナップショットを削除 - DELETE /snapshots/{snapshot_id}
指定されたプール名、プロジェクト名、およびスナップショット名のプロジェクトスナップショットを削除 - DELETE /pools/{pool}/projects/{project}/snapshots/{snapshot_name}
指定されたプール名、プロジェクト名、ファイルシステム名、およびスナップショット名のファイルシステムスナップショットを削除 - DELETE /pools/{pool}/projects/{project}/filesystems/{share}/snapshots/{snapshot_name}
指定されたプール名、プロジェクト名、ファイルシステム名、およびスナップショット名のファイルシステム LUN を削除 - DELETE /pools/{pool}/projects/{project}/luns/{lun}/snapshots/{snapshot_name}
リクエストの例:
PUT /pools/gold/projects/default/filesystems/fs-01/
snapshots/initial-backup HTTP/1.1
削除に成功すると、HTTP ステータス 204 (No Content) が返されます。
HTTP/1.1 204 No-Content
ファイルシステムまたはボリュームの依存を一覧表示します。
|
|
リクエストの例:
GET /apistorage/v1/pools/gold/projects/default/filesystems/fs01/
snapshots/snap01/dependents
Accept: application/json
レスポンスの例:
HTTP/1.1 200 OK
X-Zfssa-Storage-Api: 1.0
Content-Type: application/json; charset=utf-8
X-Zfssa-Api-Version: 1.0
{
"dependents": [
{
"project": "rest",
"href": "/api/storage/v1/pools/gold/projects/rest/filesystems/snap01clone01",
"share": "snap01clone01"
},
{
"project": "rest",
"href": "/api/storage/v1/pools/gold/projects/rest/filesystems/snap01clone02",
"share": "snap01clone02"
},
{
"project": "rest",
"href": "/api/storage/v1/pools/gold/projects/rest/filesystems/snap01clone03",
"share": "snap01clone03"
}
]
}