Centos-Libvirt:对于运行vm,virsh vol-delete命令在删除SCSI磁盘映像时失败:无法取消链接文件' XXX':成功

时间:2016-02-11 12:30:35

标签: libvirt

问题描述:

在Centos机器上,如果我们尝试通过virsh vol-delete命令删除用于运行vm的SCSI磁盘映像(通过virt-manager添加),获取"无法取消链接文件' XXX&#39 ;:成功"错误。

此错误间歇性地发生,仅当我们尝试在vm运行时删除磁盘映像时才会发生。

版本 - 所选组件的版本号(如果适用):

操作系统:CentOS Linux版本7.2.1511

Libvirt库: [root @ CV-HJ-CentOS7-02图片] #virsh版 针对库编译:libvirt 1.2.17 使用库:libvirt 1.2.17 使用API​​:QEMU 1.2.17 运行虚拟机管理程序:QEMU 1.5.3

重现步骤:

  1. 将SCSI磁盘从virt manager添加到VM
  2. 从virt-manager启动VM并确认磁盘已连接为SCSI。
  3. 尝试使用virsh vol-delete命令删除新添加的SCSI磁盘: virsh #vol-delete /var/lib/libvirt/images/.img
  4. 实际结果:

    它给出了以下错误: 错误:无法删除vol /var/lib/libvirt/images/.img 错误:无法取消链接文件' /var/lib/libvirt/images/.img':成功

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,这是一个文件权限问题。从Centos 7.1升级到7.2后,我也面对它了。

要解决此问题,请确保存储图像的目录的所有者(默认池为/ var / lib / libvirt / images)是" user"中定义的所有者。 /etc/libvirt/qemu.conf中的选项(默认用户是qemu)。

如果您还没有触及默认设置:

# chown qemu:qemu /var/lib/libvirt/images

然后创建一个新图像并尝试删除它。它应该成功。

答案 1 :(得分:0)

在将磁盘映像从正在运行的VM中分离之前,您似乎正在尝试删除磁盘映像,这是不允许的。您需要首先分离磁盘,然后进行池刷新,然后您就可以删除它。

以下是使用“f23-tst_default”作为我的VM名称(域名)和名为“f23-test_default.qcow2”的磁盘的示例,我想删除它:

# virsh domblklist f23-tst_default
Target     Source
------------------------------------------------
vda        /var/lib/libvirt/images/f23-tst_default.img
sda        /var/lib/libvirt/images/f23-tst_default.qcow2

# virsh detach-disk f23-tst_default --target sda
Disk detached successfully

# virsh domblklist f23-tst_default                                 
Target     Source
------------------------------------------------
vda        /var/lib/libvirt/images/f23-tst_default.img

# virsh pool-refresh default
Pool default refreshed

# virsh vol-delete --pool default f23-tst_default.qcow2            
Vol f23-tst_default.qcow2 deleted

如果您没有进行“池刷新”,那么virsh不会意识到该域名不再使用该卷,因此不允许您将其删除。