我正在 Ubuntu Server 12.04 系统上将文件服务器(nas4free)设置为 KVM 虚拟机。
如何将物理硬盘直接添加到虚拟机,以便客户机(nas4free)可以使用它们,但主机不能使用它们?
具体来说,我想要安装的硬盘是 /dev/sda(当前尚未安装在服务器上。)
到目前为止,我已经找到了两种解决方案,但都没有发挥作用。
第一个来自服务器故障建议使用 virt-manager。我还没有让它工作,因为当我尝试选择一个现有的驱动器时,没有列出任何内容。我对此的最佳猜测是,因为我通过 ssh 使用 virt-manager 并且没有以 root 身份连接,这应该有区别吗?
我找到的第二个解决方案这里只需运行命令(针对我的系统进行了修改)
qm set nas4free -virtio /dev/sda
但这似乎需要 proxmox,而我没有安装它,而且它似乎不在默认存储库中?
最后,一旦解决了上述问题并且我可以将驱动器直接安装到虚拟机,是否有人有过将驱动器作为 scsi、ide 还是 virtio 安装到虚拟机的经验?(我知道在链接的 ServerFault 页面中推荐使用 virtio,但由于我主要使用 VMWare,所以我之前没有听说过它)。
感谢您的帮助!!!
答案1
出于同样的需要,我找到了下列的。
(以下全部文字均来自上述来源)
virt-manager 无法做到这一点。我花了一段时间才搞明白。据我所知,virt-manager 适用于存储池。您可以将磁盘变成存储池,但不能将现有磁盘直接添加到虚拟机。
幸运的是,修复很简单:您可以手动将磁盘添加到域的 xml 配置文件中。因此,在您最喜欢的编辑器中打开 /etc/libvirt/qemu/.xml 并在该部分中添加一个部分:
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/md/storage'/>
<target dev='vdb' bus='virtio'/>
</disk>
这将使主机的 /dev/md/storage 在客户机中作为 /dev/vdb 可用。手动更改域的配置后,您必须手动重新加载配置。登录到您的主机并发出以下命令:
# virsh define /etc/libvirt/qemu/jetsetetser.xml
Domain jetser defined from /etc/libvirt/qemu/jetsetetser.xml
这里是一个很好的资源,其中包含有关使用 libvirt 管理虚拟机的更多信息:https://help.ubuntu.com/community/KVM/Managing
我强烈建议您遵循 smccloud 给出的建议。这对我来说非常有效。注意不是在您的客户机使用的物理驱动器上安装任何卷,否则您将严重损坏其文件系统!
答案2
虽然已经回答了这个问题,但是你应该使用 /dev/disk/by-id/ 而不是使用 /dev/sda,你可以从那里获取
ls -l /dev/disk/by-id
这样,万一磁盘从 /dev/sda 更改为 /dev/sdb,您就会得到保障。
答案3
首先在 virt-manager 的“首选项”中启用 xml 编辑。
然后在 virt-manager GUI 中为您的虚拟机添加一个普通文件支持的 SATA 磁盘。您可以将磁盘大小设置为 1GB,也可以选择任何未使用的磁盘映像。
然后在 virt-manager GUI 中,在您刚刚创建的磁盘的 xml 窗格中,现有的 xml 应该是这样的:
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/var/lib/libvirt/images/vol-1.qcow2"/>
<target dev="sdc" bus="sata"/>
<address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>
更改为:
<disk type="block" device="disk">
<driver name="qemu" type="raw"/>
<source dev="/dev/sda"/>
<target dev="vda" bus="sata"/>
<address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>
然后按“应用”按钮。
请注意,您应该保持“地址”标签不变,并按上述方式更改其他参数。
这里“/dev/sda”是虚拟机将使用的主机上的物理驱动器。
名称“vda”就像“sda,sdb ...”,您也可以使用“vdb,vdc ...”等。
这适用于 Ubuntu 22.04 主机和 Windows 10 VM。Windows 没有 virtIO 驱动程序,因此选择 SATA 更容易(不确定 SATA 和 virtIO 之间的性能是否有差异)