将ZFS服务器作为虚拟来宾进行托pipe

我还是ZFS的新手。 我一直在使用Nexenta,但我正在考虑切换到OpenIndiana或Solaris 11 Express。 现在,我正考虑将ESX / ESXi,Hyper-V或XenServer中的ZFS服务器作为guest虚拟机进行虚拟化(我还没有决定哪一个 – 我倾向于ESXi来支持VMDirectPath和FreeBSD)。

主要的原因是,似乎有足够的资源可以让我轻松地同时运行1-3个其他虚拟机。 主要是Windows服务器。 也许是Linux / BSD虚拟机。 我希望虚拟化的ZFS服务器托pipe其他虚拟机的所有数据,这样它们的数据可以保存在与ZFS磁盘物理上分离的磁盘上(以iSCSI或NFS的forms安装)。

该服务器目前有一个AMD Phenom II,总共有6个核心(2个解锁),16GB RAM(最大输出)和一个LSI SAS 1068E HBA(7个)1TB SATA II磁盘(规划在RAIDZ2上,带有热备份)。 我也有(4)32GB的SATA II固态硬盘连接到主板。 我希望将两个SSD镜像到一个引导镜像(对于虚拟主机),并将另外两个SSD留给ZIL和L2ARC(对于ZFS VM来宾)。 我愿意添加两个磁盘来存储VM guest,并将所有七个当前磁盘分配为ZFS存储。 注意:主板没有IOMMU支持,因为880G不支持,但是我确实有一个890FX主板,如果它有很大的区别的话,它有IOMMU。

我的问题是:

1)这样做是明智的吗? 我没有看到任何明显的缺点(这让我想知道为什么没有人提到它)。 我觉得我可以做一个巨大的监督,我不愿意承诺这个,移动我的所有数据,只是从我错过了一些细节的fubar。

2)ZFS虚拟客人performance? 我愿意尝试一个小的性能,但是我认为,如果VM guest虚拟机有磁盘的完整磁盘访问权限,至less磁盘I / O性能可以忽略不计(与运行非虚拟化的ZFS相比) 。 任何人都可以从托pipeZFS服务器作为虚拟机客户的经验谈到这一点?

我已经构build了一些“一体化”ZFS存储设置。 最初受到Ubiquitous Talk优秀文章的启发,我的解决scheme采用了与硬件devise稍有不同的方法,但是产生了封装的虚拟化ZFS存储的结果。

回答你的问题:

  • 确定这是否是一个明智的方法真的取决于你的目标。 你想完成什么? 如果你有一个技术(ZFS),并正在寻找一个应用程序,那么这是一个坏主意。 最好使用适当的硬件RAID控制器,并在本地VMFS分区上运行虚拟机。 这是阻力最小的path。 但是,如果您有特定的原因想要使用ZFS(复制,压缩,数据安全性,可移植性等),那么如果您愿意付出努力,这绝对是可能的。

  • 性能很大程度上取决于您的devise,无论您使用的是裸机还是虚拟机。 使用PCI-passthrough (或您的案例中的AMD IOMMU)是必不可less的,因为您将提供您的ZFS VM直接访问SAS存储控制器和磁盘。 只要您的VM分配了适量的RAM和CPU资源,性能就接近本机。 当然,你的泳池devise很重要。 请考虑镜像与RAID Z2。 ZFS 跨越vdevs而不是磁盘的数量 。


我的平台是VMWare ESXi 5 ,我的首选ZFSfunction的操作系统是NexentaStor Community Edition 。

这是我的家庭服务器 。 这是运行ESXi的HP ProLiant DL370 G6内置SD卡。 中间的两个镜像72GB磁盘连接到内部Smart Array P410 RAID控制器,形成一个VMFS卷。 该卷容纳NexentaStor虚拟机。 请记住,ZFS虚拟机需要在稳定存储的某个地方居住。

有一个LSI 9211-8i SAS控制器连接到驱动器仓,右侧有六个1TB SATA磁盘。 它传递给NexentaStor虚拟机,允许Nexenta将这些磁盘视为RAID 1 + 0设置。 这些磁盘是西部数据绿色WD10EARS驱动器与修改后的zpool二进制文件正确alignment 。

在此安装中,我没有使用ZIL设备或任何L2ARCcaching。

在这里输入图像描述

VM有6GB RAM和2个vCPU。 在ESXi中,如果使用PCI-passthrough,将为虚拟机分配的RAM的全部数量创build内存预留。

我给NexentaStor VM两个networking接口。 一个是pipe理stream量。 另一个是单独的vSwitch的一部分,并有一个vmkernel接口(没有外部上行链路)。 这允许VM通过专用networking提供可由ESXi安装的NFS存储。 您可以轻松添加上行链路接口来提供对外部主机的访问。

在ZFS导出的数据存储上安装新的虚拟机。 确保在ESXi中设置“虚拟机启动/closures”参数。 您希望存储虚拟机在来宾系统之前启动并最后closures。


在这里输入图像描述

以下是直接在NexentaStor虚拟机上运行的bonnie ++和iozone结果。 ZFS压缩closures,testing显示更多的可关联的数字,但实际上,ZFS默认压缩(不是gzip)应始终启用。

# bonnie++ -u root -n 64:100000:16:64

 Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP saint 12G 156 98 206597 26 135609 24 410 97 367498 21 1478 17 Latency 280ms 3177ms 1019ms 163ms 180ms 225ms Version 1.96 ------Sequential Create------ --------Random Create-------- saint -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 64:100000:16/64 6585 60 58754 100 32272 79 9827 58 38709 100 27189 80 Latency 1032ms 469us 1080us 101ms 375us 16108us 

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

  Iozone: Performance Test of File I/O Run began: Wed Jun 13 22:36:14 2012 Record Size 1024 KB File size set to 12582912 KB Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Throughput test with 1 process Each process writes a 12582912 Kbyte file in 1024 Kbyte records Children see throughput for 1 initial writers = 234459.41 KB/sec Children see throughput for 1 rewriters = 235029.34 KB/sec Children see throughput for 1 readers = 359297.38 KB/sec Children see throughput for 1 re-readers = 359821.19 KB/sec Children see throughput for 1 random readers = 57756.71 KB/sec Children see throughput for 1 random writers = 232716.19 KB/sec 

这是一个NexentaStor DTrace图,显示testing运行期间存储虚拟机的IOPS和传输速率。 对于这样的低端磁盘,4000 IOPS和400+兆字节/秒是相当合理的。 (虽然大块大小) 在这里输入图像描述

其他说明。

  • 您需要testing您的SSD以查看它们是否可以直接呈现给虚拟机,或者如果DirectPathselect整个主板控制器。
  • 您的CPU功率不足,因此将存储单元限制为2个vCPU。
  • 除非确实需要磁盘空间,否则不要使用RAIDZ1 / Z2 / Z3。
  • 不要使用重复数据删除。 压缩是免费的,对虚拟机非常有用。 重复数据删除将需要更多的RAM + L2ARC才能有效。
  • 在没有SSD的情况下启动并在必要时添加它们。 某些工作负载不会触及ZIL或L2ARC 。
  • NexentaStor是一个完整的软件包。 有一个强大的pipe理GUI的好处,但是,我也听说与Napp-It成功。