KVM virsh Attach-disk 不支持设备号

Dan*_*sta 4 virtualization storage kvm virtual-machine

我使用以下命令将磁盘附加到正在运行的 KVM 虚拟服务器:

virsh attach-disk vps_89 /dev/nbd31 --target vdc --driver tap
Run Code Online (Sandbox Code Playgroud)

磁盘已正确连接。但是,磁盘并未像vdc虚拟服务器内部那样附加。我知道文档说该--target参数只是给虚拟服务器一个“提示”,但我真的不敢相信没有办法强制将磁盘作为某个设备连接(至少在 Linux 上)。

我通过脚本控制我的虚拟服务器,并且我必须相信磁盘已按照我的指示连接到确切的设备。

当我使用以下命令分离磁盘时:

virsh detach-disk vps_89 --target vdc
Run Code Online (Sandbox Code Playgroud)

然后再次重新连接同一个磁盘,设备ID似乎每次都会增加,即vdc,,,等等......(完全忽略我的参数)vddvdevdf--target

有谁知道以可预测的方式将磁盘连接到 KVM 的好(且可靠)方法?

小智 5

根据 RedHat [1] 和 libvirt [2],这不是一个错误,而是一个功能:

指定的实际设备名称不保证映射到来宾操作系统中的设备名称。将其视为设备订购提示。

唯一可用的解决方案是使用 UUID (/dev/disk/by-uuid/) 来处理虚拟机内的磁盘。

  1. https://bugzilla.redhat.com/show_bug.cgi?id=693372
  2. http://libvirt.org/formatdomain.html

  • 您可以将“--serial mydiskname”选项传递给“virsh Attach-disk”,然后磁盘将显示为“/dev/disk/by-id/virtio-mydiskname”。但我也同意被迫给出一个完全被忽略的目标(这是强制性的)是非常烦人的。如果`--target`只是一个“提示”,那么它似乎应该是可选的。 (3认同)
  • 这并不完全正确。这不是唯一的方法。我最终使用了 /dev/disk/by-path 因为我知道我将驱动器连接到哪个 PCI 端口。 (2认同)