Could not write qcow2 header: No space left on device,问题原因非常明确:存储虚拟机磁盘的底层空间已满,导致系统无法写入 qcow2 镜像文件的头部信息,从而无法创建虚拟机。df -h/vms 分区(虚拟机数据分区)的 Use% 是否达到了 100%。/vms 对应目录下清理废弃文件。暂无评论
一、报错字面含义
plaintext
qemu-img: /vms/Caga lun01/VM_11: Could not write qcow2 header: No space left on device
执行 qemu-img create 创建虚拟机磁盘镜像时,无法写入 qcow2 文件头,系统提示存储设备无剩余空间。
出现该报错分 4 大类场景:数据块空间满、inode 耗尽、存储池配额 /thin 池满、文件系统只读 / 权限异常。
你是刀片服务器虚拟化(大概率 H3C UIS CVK),按下面顺序排查。
二、第一步:检查存储目录磁盘数据块空间
报错路径 /vms/Caga lun01 是虚拟机存储挂载目录,登录刀片 CVK 主机执行:
bash
运行
# 查看挂载点空间使用率
df -h /vms/Caga\ lun01
# 定位目录下大文件,清理无用快照/废弃虚拟机磁盘
du -sh /vms/Caga\ lun01/*
现象 1:Avail=0、使用率 100%
解决:
删除长期关机不用的虚拟机、过期快照、备份镜像;
若为共享存储(iSCSI/3PAR/Ceph),扩容存储 LUN 后在线扩容文件系统;
新建虚拟机时不要预分配 full/falloc,改为稀疏预分配 metadata,大幅减少占用:
创建磁盘选项:预分配 = 仅元数据(metadata),不要完整预分配。
三、第二步:磁盘空间充足但报错 → inode 索引耗尽(高频坑)
大量小文件(快照碎片、日志、缓存)会吃光 inode,磁盘还有空间也无法新建文件
bash
运行
# 查看inode使用
df -i /vms/Caga\ lun01
若 IUse%=100%,inode 耗尽:
查找海量小文件目录:
bash
运行
find /vms/Caga\ lun01 -type f | wc -l
find /vms/Caga\ lun01 -type d -print0 | xargs -0 ls -l | sort -nk5 | head -30
清理无用快照、临时镜像、日志碎片;
已删除但进程占用的文件不释放空间:
bash
运行
lsof | grep deleted
# 重启对应虚拟机或libvirtd/cvk服务释放句柄
systemctl restart libvirtd
四、第三步:存储池 / 精简池容量超限(UIS 超融合重点)
如果是 UIS CAS/CVK 分布式存储:
登录 CAS 平台 → 存储池,查看精简池总分配容量是否超过物理可用;
thin 精简模式下,所有虚拟机磁盘标称容量总和大于存储实际空间,新建磁盘直接报错磁盘满;
操作:删除闲置虚拟机回收精简容量,或扩容存储硬盘;
检查用户 / 目录磁盘配额:
bash
运行
# 查看xfs/ext4配额
xfs_quota -x -c report /vms/Caga\ lun01
配额打满即使全局有空间也无法写入,调大配额或清理文件。
五、第四步:文件系统只读、权限异常
检查挂载状态是否只读:
bash
运行
mount | grep /vms/Caga
# 输出包含 ro 代表只读,无法写入
只读触发原因:存储链路闪断、硬盘坏块、磁盘故障触发文件系统保护。
修复:
bash
运行
# 重新挂载为读写
mount -o remount,rw /vms/Caga\ lun01
# 检测文件系统损坏(离线操作,先关停该存储下所有虚拟机)
xfs_repair /dev/对应存储分区
目录权限不足:qemu 进程无写入权限
bash
运行
chown qemu:qemu /vms/Caga\ lun01
chmod 775 /vms/Caga\ lun01
六、第五步:临时规避方案(紧急新建虚拟机)
创建磁盘时修改预分配参数,减少瞬时占用:
原命令带 preallocation=falloc(一次性占用全部空间),改为 metadata 稀疏分配:
bash
运行
# 替代创建命令,仅分配文件头元数据,不占用全部80G空间
qemu-img create -f qcow2 -o preallocation=metadata,compat=1.1,cluster_size=262144 /vms/Caga\ lun01/VM_11 83886080K
前端页面创建磁盘时,选择精简置备,不要完整置备。
七、刀片服务器专属补充(UIS CVK)
检查存储链路:刀片背板、FC/iSCSI 网卡是否丢包,存储 LUN 离线 / 降级会锁死写入;
集群副本空间:分布式存储 3 副本场景,实际可用容量要除以 3,副本占满直接报错;
CVK 系统盘 /、/tmp 空间满也会导致 qemu-img 子进程执行失败,顺带执行 df -h 检查根分区。
最简排查顺序总结
df -h 确认存储目录物理空间是否耗尽 → 清理 / 扩容;
df -i 确认 inode 是否打满 → 清理海量小文件;
查看存储精简池总分配容量是否超限 → 删除闲置 VM 释放空间;
检查挂载是否只读、目录权限;
新建磁盘改为精简置备(metadata 预分配),避开 falloc 完整预分配。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论