新华三CAS创建虚拟机提示,明明共享文件目录还有7t。但就是创建不了虚拟机。现在在本地文件目录可以正常创建。internal error:Child process (usr/bin/qemu-img create -f qcow2 -o preallocation=fallog,compat=1.1,cluster size=262144 /ms/Caga lun01/VM_1 83886080K) unexpected exit status 1: qemu-img: /vms/Caga_lun01NM_1: Could nol wrile qcow? heatler; No space lefl on device
架设在内网。前段时间好好的。突然就这样的
CAS 创建虚拟机提示空间不足,但存储池显示剩余 7T 完整排错方案
一、报错核心拆解
plaintext
qemu-img: /vms/Caga lun01/VM_1: Could not write qcow2 header: No space left on device
执行preallocation=falloc完整预分配磁盘时,系统无法写入 qcow2 文件头,提示无空间;本地存储正常、共享存储异常,分 4 类高频根因,按顺序排查。
二、原因 1:共享存储是精简池,总分配容量超限(最常见)
原理
CAS 共享存储池分两种容量统计:
物理可用容量:页面显示剩余 7T(真实硬盘剩余);
总分配容量:所有虚拟机磁盘标称容量总和(所有 VM 硬盘大小加起来)。
你创建磁盘选了延迟置零 / 完整预分配(falloc),创建时会一次性占用 80G 物理空间;如果存量虚拟机标称总容量已经接近存储池总物理容量,哪怕页面显示还有 7T 空闲,也会直接报错空间不足。
本地存储能创建:本地磁盘默认精简,不会一次性占用全部空间,无此限制。
排查 & 解决
登录 CVM 管理平台 → 存储 → 存储池,查看总分配容量
若总分配容量 ≥ 存储池物理总容量,就是超分打满;
临时规避方案(立刻创建虚拟机):
创建磁盘时,磁盘预分配选择「精简置备(仅元数据)」,不要选延迟置零 / 完整预分配;
长期释放空间:
删除闲置关机虚拟机、过期快照;
执行存储池空间回收(UNMAP)释放空洞空间;
扩容存储硬盘提升物理总容量。
三、原因 2:共享存储挂载目录 inode 索引耗尽(磁盘有空间也无法新建文件)
Linux 创建文件同时需要数据块(磁盘空间)+inode(文件索引),大量快照、虚拟机碎片、日志会吃光 inode,df -h看有 7T 空闲,但df -iinode 使用率 100%,新建 qcow2 镜像直接报错无空间。
CVK 节点登录执行排查命令
bash
运行
# 查看共享存储挂载点数据块、inode使用
df -h /vms/Caga\ lun01
df -i /vms/Caga\ lun01
若IUse%=100%:inode 耗尽;
修复清理
bash
运行
# 查找占用inode最多的目录(快照/废弃虚拟机目录)
du -sh --inodes /vms/Caga\ lun01/*
# 删除长期不用的虚拟机快照、废弃镜像
rm -rf /vms/Caga\ lun01/闲置VM目录
# 释放已删除但进程占用的文件句柄
lsof | grep deleted
systemctl restart libvirtd
四、原因 3:预分配 falloc 瞬时占用空间不足,7T 是总空闲,无连续大块空间
preallocation=falloc会一次性向存储申请 80G 连续物理块:
存储池碎片化严重,7T 空闲是零散小块,没有 80G 连续空闲块;
本地存储碎片少,能分配连续空间,所以本地创建正常。
临时解决
创建磁盘更换预分配参数,前端选择精简置备,底层命令变为preallocation=metadata,只分配文件头元数据,不占用整块 80G 空间,规避连续块不足问题。
五、原因 4:共享存储文件系统只读、链路异常、配额限制
1. 存储挂载为只读
bash
运行
# 查看挂载状态,输出含ro代表只读
mount | grep /vms/Caga
# 重新挂载读写
mount -o remount,rw /vms/Caga\ lun01
只读触发:存储链路闪断、硬盘坏块、分布式存储副本降级,系统自动锁为只读保护数据。
2. 存储目录配额限制
存储池配置了目录 / 用户磁盘配额,全局还有 7T,但当前目录配额打满:
bash
运行
# XFS存储查看配额
xfs_quota -x -c report /vms/Caga\ lun01
调大目录配额或清理目录内文件。
3. 存储链路丢包 / 副本异常(分布式存储)
CAS 分布式存储 3 副本场景,单块硬盘故障、节点离线,可用物理容量会大幅缩水,页面显示空闲不准,修复存储节点、更换故障硬盘后恢复。
六、快速落地操作步骤(优先执行)
修改磁盘创建模式(最快临时解决)
新建虚拟机磁盘时,预分配方式改为【精简置备】,放弃延迟置零 /falloc 完整预分配,直接创建测试。
核查存储池总分配容量
CVM 存储池查看总分配容量,若超分,删除闲置 VM 释放标称容量。
登录 CVK 检查 inode 占用
bash
运行
df -i /vms/Caga\ lun01
inode 满则清理快照、废弃虚拟机目录。
4. 检查存储挂载读写状态
确认挂载非只读,分布式存储无硬盘故障、副本正常。
5. 长期优化:
统一虚拟机磁盘使用精简置备,定期清理快照,每月执行存储空间回收。
补充:报错参数说明
你报错里的preallocation=falloc是完整预分配,会一次性占用全部 80G 磁盘空间,对存储连续空闲块、物理剩余容量要求极高;精简置备仅占用几十 MB 元数据,是企业 CAS 标准推荐配置,不会触发此类空间报错。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论