我还是 ZFS 的新手。我一直在使用 Nexenta,但我正在考虑切换到 OpenIndiana 或 Solaris 11 Express。现在,我正在考虑将 ZFS 服务器虚拟化为 ESXi、Hyper-V 或 XenServer 中的来宾(我还没有决定使用哪一个——我倾向于 ESXi 以获得 VMDirectPath 和 FreeBSD 支持)。
主要原因是我似乎有足够的资源可以使用,我可以轻松地同时运行 1-3 个其他 VM。主要是 Windows 服务器。也许还有 Linux/BSD VM。我希望虚拟化 ZFS 服务器托管其他 VM 的所有数据,以便它们的数据可以保存在与 ZFS 磁盘物理上分开的磁盘上(安装为 iscsi 或 nfs)。
该服务器目前有一个 AMD Phenom II,总共有 6 个内核(2 个未锁定)、16GB RAM(已用完)和一个 LSI SAS 1068E HBA,附有 (7) 个 1TB SATA II 磁盘(计划在 RAIDZ2 上使用热备用)。我还有 (4) 个 32GB SATA II SSD 连接到主板。我希望将两个 SSD 镜像到引导镜像(用于虚拟主机),并将另外两个 SSD 留给 ZIL 和 L2ARC(用于 ZFS VM 来宾)。我愿意再添加两个磁盘来存储 VM 来宾并将所有七个当前磁盘分配为 ZFS 存储。注意:主板不支持IOMMU,因为 880G 不支持它,但我有一个 890FX 板,如果它有很大的不同,它确实有 IOMMU。
我的问题是:
1)这样做明智吗?我没有看到任何明显的缺点(这让我想知道为什么没有其他人提到它)。我觉得我可能会犯一个巨大的疏忽,而且我不愿意为此做出承诺,移动我所有的数据只是为了避免我错过的一些细节。
2) ZFS 虚拟来宾性能?我愿意对性能造成小的影响,但我认为如果 VM 来宾对磁盘具有完整的磁盘访问权限,那么至少,磁盘 I/O 性能可以忽略不计(与运行非虚拟化的 ZFS 相比) . 任何人都可以根据作为 VM 来宾托管 ZFS 服务器的经验来谈谈这个吗?
我构建了许多这样的“一体式”ZFS 存储设置。最初受到Ubiquitous Talk上优秀帖子的启发,我的解决方案对硬件设计采用了稍微不同的方法,但产生了封装的虚拟化 ZFS 存储的结果。
回答你的问题:
确定这是否是明智的方法实际上取决于您的目标。你想达到什么目的?如果您拥有一项技术 (ZFS) 并且正在为其寻找应用程序,那么这不是一个好主意。您最好使用合适的硬件 RAID 控制器并在本地 VMFS 分区上运行您的虚拟机。这是阻力最小的路径。但是,如果您有特定的原因想要使用 ZFS(复制、压缩、数据安全、可移植性等),那么如果您愿意付出努力,这绝对是可能的。
无论您是在裸机上还是在虚拟机上运行,性能在很大程度上取决于您的设计。使用PCI 直通(或您的情况下的 AMD IOMMU)是必不可少的,因为您可以让 ZFS VM 直接访问 SAS 存储控制器和磁盘。只要您的 VM 分配了适量的 RAM 和 CPU 资源,性能就接近本机。当然,您的泳池设计很重要。请考虑镜像与 RAID Z2。ZFS可跨 vdev 而不是磁盘数量进行扩展。
我的平台是VMWare ESXi 5,我首选的支持 ZFS 的操作系统是NexentaStor Community Edition。
这是我的
家庭服务器。它是从内部 SD 卡运行 ESXi的HP ProLiant DL370 G6 。中心的两个镜像 72GB 磁盘链接到内部 Smart Array P410 RAID 控制器并形成一个 VMFS 卷。该卷包含一个 NexentaStor VM。请记住,ZFS 虚拟机需要位于稳定存储的某个位置。右侧有一个LSI 9211-8i SAS 控制器连接到容纳六个 1TB SATA 磁盘的驱动器笼。它被传递到 NexentaStor 虚拟机,允许 Nexenta 将磁盘视为 RAID 1+0 设置。这些磁盘是 el-cheapo Western Digital Green WD10EARS驱动器,与修改后的二进制文件正确对齐。
zpool
我在此安装中没有使用 ZIL 设备或任何 L2ARC 缓存。
VM 分配有 6GB RAM 和 2 个 vCPU。在 ESXi 中,如果您使用 PCI-passthrough,将为 VM 分配的 RAM 的全部量创建内存预留。
我为 NexentaStor VM 提供了两个网络接口。一个是管理流量。另一个是单独的 vSwitch 的一部分,具有 vmkernel 接口(没有外部上行链路)。这允许 VM 通过专用网络提供可由 ESXi 安装的 NFS 存储。您可以轻松添加上行链路接口以提供对外部主机的访问。
在 ZFS 导出的数据存储上安装新的 VM。请务必在 ESXi 中设置“虚拟机启动/关闭”参数。您希望存储 VM 在来宾系统之前启动并最后关闭。
以下是直接在 NexentaStor VM 上运行的bonnie++和iozone结果。为了测试显示更多相关数字,ZFS 压缩已关闭,但在实践中,应始终启用 ZFS 默认压缩(不是 gzip)。
# bonnie++ -u root -n 64:100000:16:64
# iozone -t1 -i0 -i1 -i2 -r1m -s12g
这是一个 NexentaStor DTrace 图表,显示了测试运行期间存储 VM 的 IOPS 和传输速率。4000 IOPS 和 400+ 兆字节/秒对于此类低端磁盘来说是相当合理的。(虽然大块大小)
其他注意事项。