如何判断带Device 2的SoftLayer镜像支持的磁盘类型?
如何判断带Device 2的SoftLayer镜像支持Local/SAN磁盘类型?
这个问题其实和SoftLayer镜像的磁盘元数据、实例套餐的磁盘规格约束密切相关,我来拆解下判断方法和你遇到的现象原因:
1. 通过SoftLayer API查询镜像的磁盘明细
最准确的方式是调用SoftLayer_Virtual_Guest_Block_Device_Template_Group::getBlockDevices接口,获取镜像包含的所有磁盘设备的核心属性:
localDiskFlag:布尔值,标记该磁盘是否来自源实例的本地磁盘(true=本地磁盘,false=SAN磁盘)capacity:磁盘的容量大小(单位GB)
拿到这些数据后,结合SoftLayer的实例规则判断:
- 如果镜像中所有磁盘的
localDiskFlag为true:说明源实例是全本地磁盘配置,只要磁盘容量符合SAN磁盘套餐的可选规格(比如25G、100G这类常见值),镜像通常同时支持Local和SAN两种磁盘类型(就像你的镜像1) - 如果镜像中有
localDiskFlag为false的磁盘(即源是SAN磁盘):需要检查每个磁盘的容量是否在Local磁盘套餐的可选范围内。Local磁盘套餐的容量选项是固定的(比如25G、100G等,很少有10G这类小容量),如果某块磁盘容量不在这个列表里,选择Local磁盘类型时就会因为无法匹配对应容量的Local磁盘,触发“磁盘数量不足”的错误(比如你的镜像2)
2. 追溯源实例的磁盘配置
镜像的磁盘支持性基本继承自它的源实例:
- 源实例是全本地磁盘:生成的镜像几乎都能同时支持Local和SAN磁盘类型(只要容量符合SAN套餐要求),因为SAN磁盘可以轻松匹配本地磁盘的常见容量
- 源实例是全SAN磁盘:
- 若所有磁盘容量都在Local磁盘套餐的可选列表中:镜像可以支持两种磁盘类型(比如你的镜像3,25G是Local磁盘的标准可选容量)
- 若存在容量不在Local套餐列表中的磁盘:选择Local磁盘类型时会失败,因为SoftLayer无法提供对应容量的Local磁盘,只能尝试用默认的Local盘,但镜像要求多块磁盘,就会出现你遇到的“至少需要2个LOCAL磁盘”的错误
3. 预验证订单可行性
在实际创建实例前,你可以调用SoftLayer_Virtual_Guest::generateOrderTemplate接口,传入镜像ID和目标磁盘类型(Local/SAN):
- 如果接口返回有效的订单模板,说明该镜像支持该磁盘类型
- 如果返回
SoftLayer_Exception_Public这类异常(比如你遇到的磁盘数量不足错误),则说明该镜像不支持该磁盘类型
对你遇到的三个镜像的补充解释
- 镜像1:源实例是本地磁盘0(25G)+磁盘2(25G),25G是Local和SAN磁盘都支持的标准容量,所以两种类型都能正常创建
- 镜像2:源实例是SAN磁盘0(25G)+磁盘2(10G),10G不在Local磁盘的可选容量范围内,选择Local类型时,SoftLayer无法提供10G的Local磁盘,只能默认分配1个Local盘,无法满足镜像要求的2块磁盘,因此报错;而SAN磁盘支持自定义小容量,所以选SAN类型没问题
- 镜像3:源实例是SAN磁盘0(25G)+磁盘2(25G),25G是Local磁盘的标准可选容量,选择Local类型时可以分配2块25G的Local盘,符合镜像要求,因此能正常创建
内容的提问来源于stack exchange,提问作者Q.Z.
相关产品推荐
相关产品推荐

