我有一台运行 KVM 的 Ubuntu 服务器。我想获得 ZFS 的好处,所以我考虑在 KVM 下安装一台运行 Nexenta(或 NexentaStor)的虚拟机,允许该虚拟机对几个物理硬盘进行原始访问,然后让它与 NFS 共享其文件系统,以便 Ubuntu 可以访问它。
我从未尝试过设置 KVM 以便虚拟机可以访问物理驱动器。这听起来可行吗?我需要注意什么吗?有人已经记录过类似的事情吗?Nexenta/ZFS 在虚拟环境中的运行是否与运行基本骨架时基本一样好?我可以承受一点性能损失,但我不想因为虚拟化而变得不那么可靠。谢谢。
答案1
在虚拟环境中运行 Nexenta 通常是作为整合现有存储的一种策略。例如,您有多个 iSCSI 盒,希望将它们纳入一个管理集,并将该存储整合到一个连续的命名空间中。您可以在虚拟机中运行 Nexenta,并使用 iSCSI 启动器连接到基础架构中的各种 iSCSI 目标。然后,您可以将这些设备添加到池中(甚至可以对它们进行 raid/镜像以获得更大的冗余度)。然后,您可以划分池中的存储并按您喜欢的方式共享。我知道这个策略非常有效。
答案2
这在 VMWare 下绝对是可能的,特别是由于硬件直通功能......请查看以下博客文章:
http://blog.laspina.ca/ubiquitous/encapsulating-vt-d-accelerated-zfs-storage-within-esxi
答案3
为了获得更好的 I/O 和更可靠的资源管理,我建议改用 ESXi。它是专为实现最大 VM 性能而定制的 Hypervisor,可实现出色的资源管理。NexentaStor 有时要求很高,我倾向于采用更强大的解决方案,因为我的 VM 将是高 I/O 系统。
答案4
考虑到您的基本目标,我强烈建议您查看 Joylent 为 Open Indiana 制作的 KVM 端口(与 NexentaStor 使用的内核相同)。这样您就可以将 ZFS 置于虚拟机管理程序级别,并在其上运行您的 Linux VM,而无需像运行 VM 通过 NFS 为其他 VM 提供服务那样笨拙的黑客攻击。