一、故障环境
系统:Autsun-fnOS 6.18.18.c788-trim 虚拟化:libvirt + qemu,虚拟机名称 r2g33qv4 磁盘路径:/vol2/vm/pool/b5cacfbd-8f75-4aae-9a07-477a5df3668d-4z4y.qcow2 故障触发:系统更新后无法启动虚拟机,持续报 Permission denied 无法打开磁盘
二、故障根因分层
- 顶层目录权限彻底锁死
/vol2 权限为 d---------(000),任何用户无进入、读取权限;下级 /vol2/vm、/vol2/vm/pool 也仅 root 私有,libvirt-qemu 用户无法逐层遍历目录。
- 磁盘文件权限过严 qcow2 文件权限
-rw-------(600),仅属主可读,同组 / 其他无权限,叠加 fnOS 内置 AppArmor 安全限制,普通 qemu 用户被拦截。
- 系统更新重置 libvirt 配置 更新后
/etc/libvirt/qemu.conf 恢复默认,qemu 以 libvirt-qemu 低权限用户运行,无法访问 fnOS 外置存储 /vol2。
三、分步修复操作(按执行顺序)
- 修复全层级存储目录遍历权限
sudo chmod 755 /vol2
sudo chmod 755 /vol2/vm
sudo chmod 755 /vol2/vm/pool
- 放宽虚拟机磁盘文件权限,确认归属正确
sudo chmod 640 /vol2/vm/pool/b5cacfbd-8f75-4aae-9a07-477a5df3668d-4z4y.qcow2
sudo chown libvirt-qemu:libvirt-qemu /vol2/vm/pool/b5cacfbd-8f75-4aae-9a07-477a5df3668d-4z4y.qcow2
- 重启 libvirt 服务加载新权限配置
sudo systemctl restart libvirtd
- 启动虚拟机,故障解决
sudo virsh start r2g33qv4