Volume is smaller than the minimum size specified in image

33 篇文章 16 订阅
3 篇文章 0 订阅

一、环境

OpenStack M版,后端存储 Ceph J版(nova,cinder,glance都对接ceph集群)。

二、问题描述

先用 boot from volume 方式创建一台虚机 vm1,卷大小选11 G (大于镜像大小)。
这里写图片描述

镜像大小为10G,格式为raw 。(当OpenStack使用Ceph共享存储时,镜像无需下载到本地再上传到后端,而是直接使用clone,配合Ceph支持的COW技术几乎可以完成虚拟机的秒级启动。前提是使用raw格式的镜像,因为Ceph不支持从qcow2的镜像引导,若使用qcow2镜像创建虚拟机,则需要将镜像下载到本地转换成raw格式再上传,不仅增加启动时间,而且还可能因为空间不足无法完成镜像的格式转换从而造成虚拟机启动失败,所以建议直接使用raw格式的镜像创建虚拟机。)
这里写图片描述

flavor 选择 1VCPU、2GB内存、20G根磁盘。
这里写图片描述

启动实例后,OpenStack 会完成如下工作:
1. 在 ceph 中创建一个 11 GB 的 volume。
2. 将 image 数据拷贝到该 volume。
3. instance 从该 volume 启动。

在卷管理界面可以看到这个新创建的 volume。
这里写图片描述

登陆虚机后通过 lsblk 可以看到,虚机的磁盘大小为 11 G,也就是设置的卷的大小,和 flavor 没有关系。
这里写图片描述

对此虚机做快照 vm1-sh,瞬间就可以完成。注意到快照 vm1-sh 的大小是 0 字节,这是因为它真正的存放位置在 ceph。
这里写图片描述

通过vm1-sh 部署出来的实例直接就是 boot from volume 的。我们现在基于 vm1-sh 启动新的虚机 vm2 。
这里写图片描述

flavor 仍然选择 1VCPU、2GB内存、20G根磁盘。
这里写图片描述

启动实例时,报错:

错误: 无法创建服务器。

查看日志:

HTTP exception thrown: Volume is smaller than the minimum size specified in image metadata. Volume size is 11811160064 bytes, minimum size is 21474836480 bytes.

意思是:卷的大小(11G)比镜像的metadata中设置的minimum size(20G)小。

三、解决方案

我们先查看下 vm1-sh 镜像的设置,最小磁盘那设的值为 20 G。这个是创建快照的虚机 vm1 的 flavor 设置的磁盘大小。
这里写图片描述
而 11 G应该是卷的大小,这个值在 vm1-sh 镜像的元数据中设置(也就是 boot from volume 卷的大小)。
这里写图片描述

那我们的解决办法就有了:

编辑镜像 vm1-sh ,把最小磁盘数改为 0 (表示没有限制)。这样基于 vm1-sh 启动的虚机仍为 boot from volume 的,而且卷大小也为 11 G。也可以修改 vm1-sh 的元数据信息,重新设置 volume_size 的大小,比如 volume_size:30 ,则基于 vm1-sh 启动的虚拟机卷大小就是 30 G了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值