云硬盘
创建云硬盘
功能介绍
创建一个云硬盘。
如果要创建一个可启动盘作为虚机的系统盘,请在请求正文中的imageRef
属性中设置镜像的UUID。
前提条件
您必须有足够的云硬盘配额来创建一个请求大小的云硬盘。
异步后置条件
- 具有正确的权限的情况下,您可以通过API调用查看云硬盘状态为
available
。 - 具有正确的权限的情况下,您可以看到存储系统中创建的云硬盘。
故障排除
- 如果云硬盘状态显示为
error
或长时间处于creating
状态,创建云硬盘请求可以已经失败。确保您满足先决条件,然后调查存储后端。
URI
示例:POST /v2/{project_id}/volumes
说明:需使用“行内代码”样式。
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
请求消息
参数 | 参数类型 | 是否必选 | 描述 |
---|---|---|---|
size | integer | 是 | 云盘的大小,单位为GiB(GiB)。 |
description | String | 否 | 云盘的描述信息或为空。 |
imageRef | String | 是 | 创建可启动云盘所需要的镜像UUID。 |
volume_type | String | 是 | 创建云硬盘所需要的云盘类型ID。 |
snapshot_id | String | 否 | 要从现有快照创建云盘,请指定云盘快照的UUID。 |
name | String | 否 | 云盘的名称。 |
请求示例
示例一:创建一个空白的云硬盘
{
"volume": {
"size": 10,
"description": "test",
"name": "test",
"volume_type": "7cac2d14-5560-413d-bd23-9c4f421b3d6f"
}
}
示例二:创建一个来源为镜像的云硬盘
{
"volume": {
"size": 10,
"description": "test-create-from-image",
"name": "test-create-from-image",
"volume_type": "7cac2d14-5560-413d-bd23-9c4f421b3d6f",
"imageRef": "38aa00aa-9b11-44c7-9ca9-00caafeb77dd"
}
}
示例三:创建一个来源为云硬盘快照的云硬盘
{
"volume": {
"size": 10,
"description": "test-create-from-snapshot",
"name": "test-create-from-snapshot",
"volume_type": "7cac2d14-5560-413d-bd23-9c4f421b3d6f",
"snapshot_id": "c73392ad-2195-4501-848f-b955a05c8a11"
}
}
示例四:创建一个来源为云主机快照的云硬盘。
- URI示例:
POST /v3/{project_id}/volumes
。 - volume api version的版本必须大于等于3.46。
imageRef
的值为glance中镜像列表所选择云主机快照的id。
说明:创建一个来源为云主机快照的云硬盘,需要在请求headers中增加Openstack-Api-Version=volume 3.46。
{
"volume": {
"size": 20,
"description": "test create from vm snapshot",
"name": "test",
"volume_type": "d1f6ca3d-64c5-43c3-87d3-9336870031dc",
"imageRef": "6b772841-e91a-4cbb-993b-60c95a52a677"
}
}
响应消息
参数 | 参数类型 | 描述 |
---|---|---|
attachments | array | 云盘挂载信息。如果该云盘挂载给了虚机,则列表中包括所挂载虚机的UUID、attachment的UUID、挂载的节点名称、云盘的UUID、挂载设备和设备UUID。否则,此列表为空。 |
availability_zone | String | 可用域的名称。 |
snapshot_id | String | 如果从快照创建云硬盘,该值为快照UUID。否则为空 |
id | String | 云硬盘的id. |
size | integer | 云硬盘的大小,单位为GiB(GiB)。 |
status | String | 云硬盘的状态。 |
multiattach | boolean | 云硬盘是否为共享盘。 |
name | String | 云硬盘的名字。 |
bootable | String | 是否为可启动盘 |
volume_type | String | 云硬盘类型 |
正常响应示例
{
"volume": {
"id": "e13face6-05b6-4e62-8f0e-4a6fa3026645",
"status": "creating",
"size": 10,
"availability_zone": "default-az",
"created_at": "2022-03-24T03:45:09.432356",
"updated_at": null,
"name": "test-create-from-image",
"description": "test-create-from-image",
"volume_type": "hdd",
"snapshot_id": null,
"source_volid": null,
"metadata": {},
"links": [
{
"rel": "self",
"href": "http://cinder-api.openstack.svc.cluster.local:8776/v2/fcdf65835e7048aba9d3e2ce4170f1d2/volumes/e13face6-05b6-4e62-8f0e-4a6fa3026645"
},
{
"rel": "bookmark",
"href": "http://cinder-api.openstack.svc.cluster.local:8776/fcdf65835e7048aba9d3e2ce4170f1d2/volumes/e13face6-05b6-4e62-8f0e-4a6fa3026645"
}
],
"user_id": "8be28e616e534d9697a111c0524a48a4",
"bootable": "false",
"encrypted": false,
"replication_status": null,
"consistencygroup_id": null,
"multiattach": false,
"attachments": [],
"migration_status": null
}
}
列举云硬盘
功能介绍
查询云硬盘列表。
URI
示例:GET /v2/{project_id}/volumes
说明:需使用“行内代码”样式。
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
请求消息
参数 | 参数类型 | 是否必选 | 描述 |
---|---|---|---|
limit | integer | 否 | 查询的最大个数限制 |
marker | String | 否 | 最后一项的ID。 |
sort | String | 否 | 排序键和可选排序方向的逗号分隔列表,格式为[:]。有效方向是asc(升序)或desc(降序)。 |
请求示例
示例一:列举本项目下所有的云硬盘
GET /v2/{project_id}/volumes
示例二:列举所有项目下的云硬盘的详细信息(仅限云管理员)
GET /v2/{project_id}/volumes/detail?all_tenants=1
响应示例
{
"volumes": [
{
"id": "abce1eb3-5647-4026-9659-c29c200fb023",
"name": "test-create-from-image",
"links": [
{
"rel": "self",
"href": "http://cinder-api.openstack.svc.cluster.local:8776/v2/fcdf65835e7048aba9d3e2ce4170f1d2/volumes/abce1eb3-5647-4026-9659-c29c200fb023"
},
{
"rel": "bookmark",
"href": "http://cinder-api.openstack.svc.cluster.local:8776/fcdf65835e7048aba9d3e2ce4170f1d2/volumes/abce1eb3-5647-4026-9659-c29c200fb023"
}
]
}]
}
显示云硬盘的详细信息
功能介绍
显示给定云硬盘的详细信息。
前提条件
云硬盘必须存在。
URI
示例:GET/v2/{project_id}/volumes/{volume_id}
说明:需使用“行内代码”样式。
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
volume_id | 是 | 云硬盘的id。 |
响应消息
参数 | 参数类型 | 描述 |
---|---|---|
id | String | 云硬盘id。 |
status | String | 云硬盘状态。 |
size | integer | 云硬盘大小。 |
availability_zone | String | 可用区域的名称。 |
created_at | String | 创建时间。 |
updated_at | String | 更新时间。 |
name | String | 云硬盘名称。 |
description | String | 云硬盘描述信息。 |
volume_type | String | 云硬盘类型。 |
snapshot_id(Optional) | String | 如果从云硬盘快照创建云硬盘,请指定云硬盘快照的UUID。云硬盘和云硬盘快照具有相同的可用性区域和大小。 |
source_volid(Optional) | String | 源云盘的UUID。 |
metadata | object | 云硬盘的一个或多个元数据键值对。 |
links | array | 云硬盘链接。 |
user_id | String | 用户的UUID。 |
bootable | boolean | 启用或禁用可引导属性。可以从可引导云硬盘创建虚机。 |
encrypted | String | 如果为true,则加密此云盘。 |
replication_status | String | 云硬盘复制状态。 |
consistencygroup_id | String | 一致性组的UUID。 |
multiattach | boolean | true代表是共享云硬盘,可挂载到多个云主机。默认值为false。 |
attachments | array | 云盘挂载信息。如果该云盘挂载给了虚机,则列表中包括所挂载虚机的UUID、attachment的UUID、挂载的节点名称、云盘的UUID、挂载设备和设备UUID。否则,此列表为空。 |
migration_status(Optional) | String | 云硬盘迁移状态。 |
encrypted | boolean | 如果为true,则加密此云盘。 |
os-vol-tenant-attr:tenant_id | String | 云盘所属的项目ID。 |
os-vol-mig-status-attr:migstat(Optional) | String | 此云盘迁移的状态(无表示当前未进行迁移)。 |
os-vol-mig-status-attr:name_id(Optional) | String | 此云盘在后端存储上的ID。 |
os-vol-host-attr:host(Optional) | String | 云盘的当前后端。 |
响应示例
{
"volume": {
"id": "6bc317ff-523a-4e02-9fbe-3d5df826a61b",
"status": "available",
"size": 10,
"availability_zone": "default-az",
"created_at": "2022-03-24T03:30:13.000000",
"updated_at": "2022-03-24T03:30:16.000000",
"name": "test",
"description": "test",
"volume_type": "hdd",
"snapshot_id": null,
"source_volid": null,
"metadata": {},
"links": [
{
"rel": "self",
"href": "http://cinder-api.openstack.svc.cluster.local:8776/v2/fcdf65835e7048aba9d3e2ce4170f1d2/volumes/6bc317ff-523a-4e02-9fbe-3d5df826a61b"
},
{
"rel": "bookmark",
"href": "http://cinder-api.openstack.svc.cluster.local:8776/fcdf65835e7048aba9d3e2ce4170f1d2/volumes/6bc317ff-523a-4e02-9fbe-3d5df826a61b"
}
],
"user_id": "8be28e616e534d9697a111c0524a48a4",
"bootable": "false",
"encrypted": false,
"replication_status": null,
"consistencygroup_id": null,
"multiattach": false,
"attachments": [],
"migration_status": null,
"os-vol-tenant-attr:tenant_id": "fcdf65835e7048aba9d3e2ce4170f1d2",
"os-vol-mig-status-attr:migstat": null,
"os-vol-mig-status-attr:name_id": null,
"os-vol-host-attr:host": "cinder-volume-worker@hdd#hdd"
}
}
删除云硬盘
功能介绍
删除一个云硬盘。
前提条件
- 云盘状态必须为
available
,error
。 - 您将要删除的云硬盘不能存在云硬盘快照。
异步后置条件
- 云硬盘在后端存储中已经删除。
- 云硬盘在云平台中已经删除。
故障排除
- 如果云盘状态保持在
delete
或变成error_deleting
,请求失败。 请确保满足先决条件,然后调查存储后端。 - 块存储管理的云盘不会从存储系统中删除。
URI
示例:DELETE /v2/{project_id}/volumes/{volume_id}
说明:需使用“行内代码”样式。
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
volume_id | 是 | 云硬盘的id。 |
云硬盘快照回滚
功能介绍
将云硬盘恢复到最近快照的状态和数据。该命令仅在微版本 3.40 及以上版本中可用。云硬盘可以通过快照回滚的方式,将快照信息还原到原盘。
前提条件
- 云盘状态必须为
available
或in-use
状态 - 只支持选择云硬盘最新的快照点进行快照回滚
- 不支持云硬盘扩容后选择扩容前创建的快照进行快照回滚
异步后置条件
- 云硬盘中的数据会回滚到选择的快照点时的数据。
URI
示例:POST /v3/{project_id}/volumes/{volume_id}/action
说明:需要在请求headers中增加Openstack-Api-Version=volume 3.40。
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
volume_id | 是 | 云硬盘的id。 |
请求消息
参数 | 参数类型 | 描述 |
---|---|---|
revert | String | 快照回滚的动作 |
snapshot_id | String | 云硬盘快照的 UUID。API 使用此快照还原云盘。 |
请求示例
{
"revert": {
"snapshot_id": "5aa119a8-d25b-45a7-8d1b-88e127885635"
}
}
云硬盘扩容
功能介绍
扩展云硬盘的大小。
前提条件
- 在使用
microversion3.42
之前的版本,云盘状态必须是available
才支持扩容接口. 从microversion3.42
开始,in-use
状态的云盘, 可以进行扩容操作。请注意,reserved
不是扩展的有效状态。 - 用户配额必须有足够的云盘存储空间。
- 必须存在足够的存储量才能扩展云盘。
异步后置条件
如果请求处理成功,则云盘状态将更改为
extending
。成功完成扩容操作后,云盘状态将恢复到其原始值。
故障排除
error_extending
云盘状态指示请求失败。确保您满足先决条件并重试请求。如果请求再次失败,请调查存储后端。
URI
示例:POST /v3/{project_id}/volumes/{volume_id}/action
说明:如果需要在云硬盘in-use状态下进行扩容操作,需要在请求headers中增加Openstack-Api-Version=volume 3.42。
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
volume_id | 是 | 云硬盘的id。 |
请求消息
参数 | 参数类型 | 描述 |
---|---|---|
os-extend | object | 云硬盘扩容的动作 |
new_size | integer | 云硬盘的新大小,以千兆字节 (GiB) 为单位。 |
请求示例
{
"os-extend": {
"new_size": 3
}
}
云硬盘重置状态
功能介绍
重置云盘的状态、云盘挂载状态。仅限管理员用户使用。
URI
示例:POST /v3/{project_id}/volumes/{volume_id}/action
参数 | 是否必选 | 描述 |
---|---|---|
project_id | 是 | 项目ID。 |
volume_id | 是 | 云硬盘的id。 |
请求消息
参数 | 参数类型 | 描述 |
---|---|---|
os-reset_status | object | 重置状态的动作 |
attach_status | String | 云硬盘的状态。 |
attach_status(可选参数) | String | 云硬盘挂载状态。 |
migration_status(可选参数) | String | 云硬盘迁移状态。 |
请求示例1
{
"os-reset_status": {
"status": "error"
}
}
请求示例2
{
"os-reset_status": {
"status": "available",
"attach_status": "detached"
}
}
正常响应代码
200
错误码
400,401