OpenStack Ocata版本Glance创建0大小镜像的问题求助
分析OpenStack Ocata中Glance创建镜像大小为0的问题
我之前维护Ocata版本的OpenStack集群时,碰到过几乎一模一样的情况——CLI和GUI都返回创建成功,但镜像大小为0,日志看起来还一切正常。结合当时的排查经验,给你列几个最可能的原因和对应的排查步骤:
1. Glance进程对存储目录的写入权限不足
这是最常见的原因。虽然Glance的API返回了200状态码,但实际写入镜像文件时,进程没有足够权限,导致生成空文件。
- 先检查存储目录的权限:
正常情况下,所有者和组应该是ls -ld /var/lib/glance/imagesglance:glance,权限至少为750。如果不是,用chown -R glance:glance /var/lib/glance/images和chmod -R 750 /var/lib/glance/images修正。 - 排查SELinux限制:
执行getenforce看是否处于Enforcing状态。如果是,查看/var/log/audit/audit.log里有没有包含glance和denied的日志记录。可以临时关闭SELinux(setenforce 0)再测试创建镜像,要是问题消失了,就需要给Glance配置对应的SELinux规则。
2. Glance存储后端配置错误
Ocata版本的Glance默认用本地文件系统存储,但如果配置文件有误,会导致写入失败却返回成功。
- 打开
/etc/glance/glance-api.conf,找到[glance_store]段:- 确认
filesystem_store_datadir = /var/lib/glance/images路径正确,且该目录确实存在。 - 如果配置了其他存储后端(比如Swift),要确保后端服务正常运行,认证信息正确。比如Swift的
swift_store_auth_address、swift_store_user等参数是否配置无误。
- 确认
3. 镜像文件读取失败
虽然你换了不同镜像,但也有可能是CLI命令中文件路径错误,或者当前用户没有读取镜像文件的权限:
- 先验证镜像文件的可读性:
如果能正常输出内容,说明文件没问题;如果报错,就检查文件权限或者路径是否正确。cat /path/to/cirros-0.4.0-x86_64-disk.img | head -20 - 建议在
openstack image create命令中使用绝对路径指定镜像文件,避免相对路径带来的问题。
4. 存储磁盘空间不足或只读挂载
如果Glance存储目录所在的磁盘满了,或者被挂载为只读模式,也会生成空文件:
- 检查磁盘空间:
确保可用空间大于镜像文件大小。df -h /var/lib/glance - 检查挂载状态:
看输出里有没有mount | grep /var/lib/glancero(只读)标记,如果有,重新挂载为读写模式(mount -o remount,rw /var/lib/glance)。
5. Glance异步任务配置异常(概率较低)
Ocata版本默认是同步上传镜像,但如果开启了基于任务的异步上传,可能出现任务执行失败但API提前返回成功的情况:
- 打开
/etc/glance/glance-api.conf,检查[task]段的配置,确认task_executor=taskflow是否正常,或者尝试临时关闭异步任务(如果开启了的话)再测试。
内容的提问来源于stack exchange,提问作者Andrzej Kozlowski
相关产品推荐
相关产品推荐

