You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OpenStack客户端或openstacksdk创建带多块临时盘的实例

Nova 对多块临时磁盘的配置不通过openstack flavor create的基础--ephemeral参数实现,该参数仅支持配置单块临时磁盘的总容量,多块临时磁盘需要通过Flavor额外属性(Extra Specs)或实例创建时的块设备映射参数实现,Rocky版本已完整支持该能力。

OpenStack 命令行实现

方式1:Flavor预定义多块临时磁盘

  • 创建基础Flavor,将单临时磁盘容量参数设为0:
    openstack flavor create --ram 4096 --vcpus 2 --disk 20 --ephemeral 0 multi-eph-flavor
  • 为Flavor设置额外属性,按序号定义每块临时磁盘的容量(单位GB):
    openstack flavor set multi-eph-flavor --property ephemeral_disk_size_0=50 --property ephemeral_disk_size_1=100
    以上配置会让使用该Flavor创建的实例默认挂载2块临时磁盘,容量分别为50GB、100GB。

方式2:创建实例时临时指定多块临时磁盘

无需提前修改Flavor配置,创建实例时逐块传入临时磁盘的块设备映射参数即可,多块磁盘需多次传入--block-device参数,示例:

openstack server create --flavor <目标Flavor ID/名称> \
  --image <启动镜像ID/名称> \
  --network <所属网络ID/名称> \
  --block-device source_type=ephemeral,destination_type=local,volume_size=50,delete_on_termination=true \
  --block-device source_type=ephemeral,destination_type=local,volume_size=100,delete_on_termination=true \
  multi-eph-test-instance

注意:如果使用的Flavor本身--ephemeral参数值大于0,通过上述方式传入临时磁盘配置时,会在原有单块临时磁盘的基础上追加对应数量的临时磁盘,不会覆盖原有配置。

openstacksdk 实现

创建实例时直接指定多块临时磁盘

在创建实例的参数中传入block_device_mapping_v2列表,每一项对应一块磁盘的配置,示例代码:

import openstack

# 初始化OpenStack连接,cloud参数对应你的clouds.yaml配置项
conn = openstack.connect(cloud='openstack-config')

# 块设备配置:第一块为系统启动盘,后两块为临时磁盘
block_device_config = [
    {
        "source_type": "image",
        "destination_type": "local",
        "uuid": "<启动镜像ID>",
        "boot_index": 0,
        "volume_size": 20,
        "delete_on_termination": True
    },
    {
        "source_type": "ephemeral",
        "destination_type": "local",
        "volume_size": 50,
        "delete_on_termination": True
    },
    {
        "source_type": "ephemeral",
        "destination_type": "local",
        "volume_size": 100,
        "delete_on_termination": True
    }
]

# 发起实例创建请求
instance = conn.compute.create_server(
    name="multi-eph-sdk-instance",
    flavor_id="<目标Flavor ID>",
    networks=[{"uuid": "<所属网络ID>"}],
    block_device_mapping_v2=block_device_config
)

# 等待实例创建完成
conn.compute.wait_for_server(instance)

为Flavor预配置多块临时磁盘

调用SDK的Flavor额外属性设置接口,写入对应序号的临时磁盘容量配置即可:

# 查找目标Flavor
target_flavor = conn.compute.find_flavor("multi-eph-flavor")
# 写入多临时磁盘配置
conn.compute.set_flavor_extra_specs(
    target_flavor,
    **{
        "ephemeral_disk_size_0": 50,
        "ephemeral_disk_size_1": 100
    }
)

内容的提问来源于stack exchange,提问作者Victor Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 13:42:30