使用云服务操作管理 Oracle Cloud Infrastructure 对象存储中的设备快照备份。可以列出 Oracle Cloud Infrastructure 对象存储中的目标和备份、删除目标、删除备份、将备份恢复为新设备共享资源,以及取消或重新启动云服务作业。
要创建备份,请参见快照备份操作中的创建快照备份。备份是共享资源快照的完整或增量备份。要创建快照,请参见快照和克隆操作。
云服务操作表中使用以下参数:
Oracle Cloud Infrastructure 对象存储中用于保存备份的格式。
format 的值为 zfs 或 tar。如果未为快照备份创建指定 format,则默认为 zfs。zfs 格式既支持文件系统快照又支持 LUN 快照;tar 格式仅支持文件系统快照。有关 zfs 和 tar 格式的更多信息,请参见Oracle ZFS Storage Appliance 管理指南,发行版 OS8.8.x 中的 创建云备份 (CLI)。
在 Oracle Cloud Infrastructure 对象存储中保存的设备快照副本的标识符。按照列出云备份所示列出备份时,backup-id 的值为 id 属性的值。
对于完整快照备份,backup-id 的值为 pool_id/snapshot_id,如以下示例中所示:
3e035b7e546e0d02/1cbfdb5ff2259b76
对于增量快照备份,backup-id 的值为 pool_id/child_snapshot_id-parent_snapshot_id,如以下示例中所示:
6913a5703bee98dc/46be95ced54e99d9-667f3eb88fd209e1
保存备份的 Oracle Cloud Infrastructure 对象存储位置。给定的备份可以保存到多个目标。也就是说,同一个 backup-id 可以出现在不同的 target-id 位置中。
列出备份时,target-id 的值为 target 属性的值。
正在运行的作业的标识符。按照列出作业所示列出作业时,job-id 的值为 id 属性的值。
|
要启用云服务,请将 status 设置为 enable,如以下示例中所示。
请求示例:
PUT /api/service/v2/services/cloud HTTP/1.1
Host: hostname:215
Authorization: Basic Tm8gcGVla2luZyE=
Accept: */*
Content-Type: application/json
Content-Length: 22
{ "<status>": "enable" }
使用以下请求查看云服务的日志文件:
GET /api/log/v1/logs/appliance-kit-cloud:default HTTP/1.1
请求示例:
GET /api/service/v2/services/cloud HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
HTTP/1.1 200 OK
Date: Wed, 24 Jul 2019 20:30:59 GMT
Content-Length: 843
X-Zfssa-Service-Api: 2.0
X-Zfssa-Api-Version: 2.0
Content-Type: application/json; charset=utf-8
{
"service": {
"href": "/api/service/v2/services/cloud",
"<status>": "online",
"tls_version": [
"TLSv1.1",
"TLSv1.2"
],
"ciphers": [
"ECDHE-RSA-AES128-GCM-SHA256",
"ECDHE-RSA-AES256-GCM-SHA384",
"DHE-RSA-AES128-GCM-SHA256",
"DHE-RSA-AES256-GCM-SHA384",
"AES128-SHA",
"AES256-SHA",
"DES-CBC3-SHA"
],
"targets": {
"href": "/api/service/v2/services/cloud/targets",
"entries": 2
},
"backups": {
"href": "/api/service/v2/services/cloud/backups",
"entries": 2548
},
"jobs": {
"href": "/api/service/v2/services/cloud/jobs",
"entries": 0
}
}
}
请求示例:
PUT /api/service/v2/services/cloud HTTP/1.1
Host: hostname:215
Authorization: Basic Tm8gcGVla2luZyE=
Accept: */*
Content-Type: application/json
Content-Length: 48
{
"tls_version": [
"TLSv1.0","TLSv1.1","TLSv1.2"
]
}
以下示例列出所有目标。
请求示例:
GET /api/service/v2/services/cloud/targets HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
HTTP/1.1 200 OK
Date: Wed, 24 Jul 2019 21:06:18 GMT
Content-Length: 1086
X-Zfssa-Service-Api: 2.0
X-Zfssa-Api-Version: 2.0
Content-Type: application/json; charset=utf-8
{
"targets": [{
"bucket": "pl-test",
"href": "/api/service/v2/services/cloud/targets/target-id1",
"id": "target-id1",
"key": true,
"location": "https://objectstorage.us-ashburn-1.oraclecloud.com",
"name": "oci-ashburn",
"online": true,
"proxy_host": "",
"proxy_on": false,
"proxy_password": false,
"proxy_user": "",
"tenancy": "ocid1.tenancy.oc1..tenancy-id",
"user": "ocid1.user.oc1..user-id"
},{
"bucket": "pl-test2",
"href": "/api/service/v2/services/cloud/targets/target-id2",
"id": "target-id2",
"key": true,
"location": "https://objectstorage.us-phoenix-1.oraclecloud.com",
"name": "oci-phoenix",
"online": true,
"proxy_host": "www-proxy.example.com:80",
"proxy_on": true,
"proxy_password": false,
"proxy_user": "",
"tenancy": "ocid1.tenancy.oc1..tenancy-id",
"user": "ocid1.user.oc1..user-id"
}]
}
以下示例列出指定的目标:
GET /api/service/v2/services/cloud/targets/target-id HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
创建云目标需要以下参数。
|
以下示例创建一个目标。
请求示例:
POST /api/service/v2/services/cloud/targets HTTP/1.1
Host: hostname:215
Authorization: Basic Tm8gcGVla2luZyE=
{
"name": "oci4",
"location": "https://objectstorage.us-phoenix-1.oraclecloud.com",
"user": "ocid1.user.oc1..user-id",
"bucket": "test-bucket3",
"tenancy": "ocid1.tenancy.oc1..tenancy-id",
"key": "key",
"proxy_on": false,
"readlimit": -1,
"writelimit": -1
}
结果示例:
HTTP/1.1 201 Created
Date: Wed, 24 Jul 2019 21:14:39 GMT
Content-Length: 568
X-Zfssa-Service-Api: 2.0
Location: /api/service/v2/services/cloud/targets/target-id
X-Zfssa-Api-Version: 2.0
Content-Type: application/json; charset=utf-8
{
"target": {
"bucket": "test-bucket3",
"href": "/api/service/v2/services/cloud/targets/target-id",
"id": "target-id",
"key": true,
"location": "https://objectstorage.us-phoenix-1.oraclecloud.com",
"name": "oci4",
"proxy_on": false,
"readlimit": -1,
"state": "offline",
"tenancy": "ocid1.tenancy.oc1..tenancy-id",
"user": "ocid1.user.oc1..user-id",
"writelimit": -1
}
}
下表显示云目标的可修改属性。
|
请求示例:
PUT /api/service/v2/services/cloud/targets/target-id HTTP/1.1
Host: hostname:215
Authorization: Basic Tm8gcGVla2luZyE=
User-Agent: curl/7.54.0
Accept: */*
Content-Type: application/json
Content-Length: 19
{
"proxy_on": true,
"proxy_host": "www-proxy.example.com:80",
"readlimit": 4194304,
"writelimit": 5242880
}
删除目标之前,请执行以下检查:
以下示例从服务中删除指定的云目标。
请求示例:
DELETE /api/service/v2/services/cloud/targets/target-id HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
HTTP/1.1 204 No Content Date: Wed, 24 Jul 2019 21:20:27 GMT X-Content-Type-Options: nosniff X-Zfssa-Service-Api: 2.0 X-Zfssa-Api-Version: 2.0 Content-Type: application/json; charset=utf-8
使用以下查询列出所有已完成的任何格式的备份,越新的备份越先列出。要获取有关正在进行的备份的信息,请参见列出作业。
请求示例:
GET /api/service/v2/services/cloud/backups HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
在此示例中,列出的第一个备份是所列出的第二个备份的子备份。第一个备份的 parent 值与第二个备份的 dataset 值相同 (app-data-fullsnap),第二个备份的 parent 值为 null。子备份与父备份采用相同的 format。在此示例中,子备份和父备份均采用 tar 格式。
HTTP/1.1 200 OK
Date: Wed, 22 Jan 2020 21:22:40 GMT
X-Zfssa-Service-Api: 2.0
X-Zfssa-Api-Version: 2.0
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
{
"backups": [{
"target": "target-id2",
"parent": "app-data-fullsnap",
"started": "2020-01-06T20:03:32Z",
"completed": "2020-01-06T20:04:36Z",
"id": "backup-id2",
"source": "cloudsnap0",
"href": "/api/service/v2/services/cloud/backups/tar/backup-id2/target-id2",
"tier": "standard",
"dataset": "p1/local/default/app-data@app-data-incsnap",
"format": "tar",
"size": 3224982536.0
},{
"target": "target-id1",
"parent": "",
"started": "2020-01-06T20:01:16Z",
"completed": "2020-01-06T20:01:17Z",
"id": "backup-id1",
"source": "cloudsnap0",
"href": "/api/service/v2/services/cloud/backups/tar/backup-id1/target-id1",
"tier": "standard",
"dataset": "p1/local/default/app-data@app-data-fullsnap",
"format": "tar",
"size": 2149988056.0
}]
}
使用以下请求列出指定的备份:
GET /api/service/v2/services/cloud/backups/format/backup-id/target-id HTTP/1.1
列出云备份查询参数
支持以下查询参数以过滤云备份列表。可以在同一个查询中使用所有参数。在查询参数之间使用 AND 运算 (&),如表后面的示例中所示。
|
以下示例列出从索引编号为 2000 的备份开始的最早备份。如果云服务属性列表的 backups 部分中 entries 属性的值为 2865,则以下示例显示 865 个备份:从备份 2000 到备份 2864。
GET /api/service/v2/services/cloud/backups?start=2000
以下示例仅列出索引编号为 2000 的备份:
GET /api/service/v2/services/cloud/backups?start=2000&limit=1
以下示例列出 500 个在指定时间或其后创建的最早备份:
GET /api/service/v2/services/cloud/backups?start=2019-07-12T00:00:00Z&limit=500
以下示例列出 500 个在指定时间或其前创建的最新备份:
GET /api/service/v2/services/cloud/backups?end=2019-07-12T00:00:00Z&limit=500
以下示例列出在指定的 start 时间或之后(但不晚于指定的 end 时间)创建的所有备份:
GET /api/service/v2/services/cloud/backups?start=2019-07-11T00:00:00Z&end=2019-07-12T00:00:00Z
以下示例列出名称中包含 app-data 且采用 tar 备份格式的任何数据集的最新备份:
GET /api/service/v2/services/cloud/backups?dataset=app-data&format=tar
以下示例列出 target-id 目标上名称中包含 app-data 的任何数据集的最新备份:
GET /api/service/v2/services/cloud/backups?dataset=app-data&target=target-id
以下示例列出具有 cloudsnap0 源的 target-id 目标上名称中包含 app-data 的任何数据集的最新备份:
GET /api/service/v2/services/cloud/backups?dataset=app-data&target=target-id&source=cloudsnap0
删除云备份之前,请执行以下检查:
以下示例提交一个作业请求,以从 Oracle Cloud Infrastructure 对象存储中删除指定目标上指定备份。设备可以操作它能够访问的任何目标上的任何备份,即使该备份创建于其他设备上也是如此。
将此操作与删除快照备份进行比较,后者说明如何删除设备上的共享资源快照备份。
请求示例:
DELETE /api/service/v2/services/cloud/backups/format/backup-id/target-id HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
{
"action": "job-id"
}
要查看云备份删除进度,请使用列出作业查看具有上述 job-id 的作业。
云备份可以在任何能够访问相应云目标的设备上恢复为新克隆的共享资源。
以下示例提交一个作业请求,以恢复指定的备份。指定要将备份恢复到的池和项目,并为新共享资源指定名称。要查看恢复进度,请使用列出作业查看具有所返回 job-id 的作业。
如果为目标设置了 readlimit 属性,则每秒从目标读取的字节数不超过 readlimit 字节。请参见创建目标。
请求示例:
POST /api/service/v2/services/cloud/backups/format/backup-id/target-id/restore HTTP/1.1
Host: hostname:215
Authorization: Basic Tm8gcGVla2luZyE=
Accept: */*
Content-Length: 55
{
"pool":"p1",
"project":"default",
"share": "restore6"
}
结果示例:
{
"action": "job-id"
}
以下示例列出所有正在运行的作业和最近完成的作业,最新的作业最先列出。
请求示例:
GET /api/service/v2/services/cloud/jobs HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
在此示例中,两个备份作业将两个不同的备份保存到同一个目标。
HTTP/1.1 200 OK
Date: Wed, 22 Jan 2020 21:37:52 GMT
Content-Length: 983
X-Zfssa-Service-Api: 2.0
X-Zfssa-Api-Version: 2.0
Content-Type: application/json; charset=utf-8
{
"jobs": [{
"href": "/api/service/v2/services/cloud/jobs/job-id2",
"op": "backup",
"target": "target-id",
"targetName": "oci-ashburn",
"created": "2020-02-06T16:52:42Z",
"updated": "2020-02-06T16:52:48Z",
"id": "job-id2",
"status": "in-progress",
"rate": 10002432,
"transferred": 80019456,
"estimated_size": 43088792088,
"dataset": "p1/local/default/f-1",
"backup": "backup-id2",
"snapshot": "snap3",
"format": "tar",
"details": "uploading backup to zfs/backups/tar/backup-id2/000000001"
},{
"href": "/api/service/v2/services/cloud/jobs/job-id1",
"op": "backup",
"target": "target-id",
"targetName": "oci-ashburn",
"created": "2020-02-06T16:52:28Z",
"updated": "2020-02-06T16:52:48Z",
"id": "job-id1",
"status": "in-progress",
"rate": 1942,
"transferred": 3884,
"estimated_size": 0,
"dataset": "p1/local/default/f-1",
"backup": "backup-id1",
"snapshot": "snap2",
"format": "zfs",
"details": "uploading backup to zfs/backups/zfs/backup-id1/000000001"
}]
}
以下示例列出指定的作业:
GET /api/service/v2/services/cloud/jobs/job-id2 HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
列出云备份作业查询参数
支持 start 和 limit 查询参数以过滤云备份作业列表。
start 参数的值为作业索引。此索引的值比列出云服务属性中所示请求的 jobs 部分中的 entries 属性值小 0 到 1。
limit 参数的值为要列出的最大作业数。
这两个参数可以在同一个查询中使用。在查询参数之间使用 AND 运算 (&),如下面的几个示例中所示。
以下示例列出 100 个正在运行的最新作业和最近完成的作业,最新的作业最先列出。
GET /api/service/v2/services/cloud/jobs?limit=100
以下示例仅列出正在运行的最早作业或最近完成的作业。
GET /api/service/v2/services/cloud/jobs?start=0&limit=1
以下示例列出作业索引编号等于或大于 4 的所有正在运行的作业和最近完成的作业,最新的作业最先列出。
GET /api/service/v2/services/cloud/jobs?start=4
以下示例取消指定的云服务作业。
请求示例:
PUT /api/service/v2/services/cloud/jobs/job-id/cancel HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= Accept: */*
结果示例:
HTTP/1.1 202 Accepted Date: Wed, 24 Jul 2019 21:50:29 GMT Content-Length: 0 X-Zfssa-Service-Api: 2.0 X-Zfssa-Api-Version: 2.0 Content-Type: application/json; charset=utf-8
以下示例重新启动指定的云服务作业。
请求示例:
PUT /api/service/v2/services/cloud/jobs/job-id/restart HTTP/1.1 Host: hostname:215 Authorization: Basic Tm8gcGVla2luZyE= User-Agent: curl/7.54.0 Accept: */*
结果示例:
HTTP/1.1 202 Accepted Date: Wed, 24 Jul 2019 21:51:08 GMT Content-Length: 0 X-Zfssa-Service-Api: 2.0 X-Zfssa-Api-Version: 2.0 Content-Type: application/json; charset=utf-8