在ZFS主机上运行VM会对性能产生什么影响?


11

我正在考虑的ext3迁移到ZFS存储数据我的Debian Linux主机上,使用Linux上的ZFS。我真正想要的ZFS杀手级功能是其数据完整性保证。我也希望能够随存储需求的增长而微不足道地增加存储容量。

但是,我还在同一主机上运行了几台VM。(尽管通常情况下,在我的情况下,主机一次只能运行一个虚拟机。)

考虑到ZFS的数据校验和和写时复制行为,以及VM磁盘映像是相对较大的文件(我的主VM的磁盘映像文件当前位于31 GB)这一事实,这样的VM guest虚拟机内部的性能含义是什么?迁移?我应该采取什么措施来减少可能的负面性能影响?

如果有必要,我可以在VM磁盘映像上保留较少的数据完整性保证(我在任何VM内都没有做任何真正重要的事情),并且可以轻松地将它们与文件系统的其余部分分开,但是如果我不这样做,那就很好了。不必(甚至选择性地)关闭大多数使我想要迁移到其他文件系统的功能。

硬件对于工作站级系统而言非常强大,但是对于高端服务器(32 GB RAM,很少使用> 10 GB,6核3.3 GHz CPU,目前可用2.6 TB)而言,它的优势不大。磁盘空间,df总共约有1.1 TB可用空间;迁移到ZFS可能会增加一些可用空间),而且我不打算运行重复数据删除(因为在我的情况下启用dedup不会增加太多)。该计划是从JBOD配置开始的(显然备份良好),但是如果条件允许,我最终可能会转向双向镜像设置。


还请记住,就IOPS而言ZFS的性能要优于传统RAID5。RAIDZ写入以单个磁盘的速度执行,因为它不会遭受困扰传统RAID5 / 6的I / O性能损失。
Stefan Lasiewski 2013年

1
感谢所有回答您的见解的人!我一定会稍后再问这个问题。
CVn

Stefan的评论是..好吧,那是错误的。ZFS RAIDZ性能显著从IOPS角度看(你平时在虚拟机发生问题)比传统的RAID5阵列更糟。请不要以为转移到ZFS来提高写入性能。很少这样。读取性能的提高取决于ARC可用的RAM以及您的工作集大小和增量。与替代方案相比,ZFS ARC通常与VM配合使用,最终可以帮助提高整体读取性能。通常,即使在镜子上,书写总是会受到raidz的影响。
2013年

@ Nex7如何完全不从ZFS进行RAID写入,而仅使用一个存储设备(例如某些mdraid提供的存储设备)进行写入?ZFS的性能是否可与其他文件系统媲美,因为没有使用任何花哨的RAID东西?
ThorstenSchöning'17

Answers:


4

由于ZFS在块级别工作,因此文件大小没有区别。ZFS需要更多的内存和CPU,但作为文件系统本身并不会明显慢。尽管您需要知道RAIDZ的速度不等同于RAID5。RAID10非常适合以速度为优先的情况。


4

体面(即buff)硬件上的ZFS可能会比其他文件系统快,您可能想在快速(即SSD)位置上创建ZIL。这实际上是一个缓存写操作的位置(嗯,更像是ext3 / 4中的日志)。这样,在实际的主轴获得数据之前,盒式ack就会被写入磁盘。

您也可以在SSD上创建L2 ARC来读取缓存。在VM环境中,您可以通过同时启动多个VM来使物理磁盘屈服,这真是太棒了。

驱动器进入VDEV,VDEV进入zpool(请一次使用整个磁盘)。如果这是一个较小的系统,则可能需要一个zpool和一个(如果您不太担心数据丢失)一个VDEV。VDEV是您选择RAID级别的位置(尽管如果您有足够的磁盘,也可以镜像VDEV)。VDEV中最慢的磁盘决定了整个VDEV的速度。

ZFS与数据完整性有关-许多传统的文件系统维护工具不存在(例如fsck)的原因是它们解决的问题在ZFS文件系统上不存在。

IMO ZFS的最大缺点是,如果您的文件系统接近满载(例如75%以上),它将变得非常慢。只是不要去那里。


2

31GB确实根本不大...

无论如何,根据当前使用的文件系统,您可能会发现ZFS速度稍慢,但考虑到您的硬件规格,它可以忽略不计。

显然,ZFS将使用大量的RAM进行缓存,这可能会使您的VM在一般情况下显得“更灵活”(当不进行大量读取或写入操作时)。我不确定在Linux上如何调整ZFS,但如果可能的话,您可能需要限制其ARC,以使其在所有RAM上停止运行(看来,您需要为主机系统和主机分配足够的存储空间,虚拟机)。

我会启用压缩功能(除非您有充分的理由,否则这些天的建议是将其打开)。请记住,这必须将数据放入文件系统之前完成。大多数人都惊讶地发现它实际上运行起来更快,因为压缩算法的运行速度通常比磁盘IO快。我怀疑这会在您的6核心处理器上引起很多性能问题。我没想到VM会压缩太多,但我设法使用默认压缩设置将470GB的VM数据转换为304GB。

不必担心重复数据删除,稍后它会再次困扰您,并且您将花费数周的时间来整理数据以消除它。

如果确实遇到性能问题,那么显而易见的答案是将SSD添加为ZIL / L2ARC或什至两者。将两者同时使用是不理想的,但是很可能仍会在包含少量磁盘/ vdev的池上提高性能。

要添加的内容:如果可能的话,我真的会尝试从冗余配置开始(最好是镜像),或者尽快从条带转换为镜像。尽管ZFS将校验所有数据并在运行中(或在清理期间)检测错误,但它无法对此进行任何操作(不使用副本= 2,这将使磁盘使用率翻倍)。您将只剩下它告诉您文件中的错误(可能是您的VM磁盘映像),如果不删除并重新创建这些文件,您将无法做很多事情。


“您会发现文件中有错误……您将无法做很多事情。”这是一个很好的意见,我对此表示赞赏。就是说,这就是我每晚进行备份的地方。因为它代表着我和静默数据损坏之间没有任何联系,所以即使ZFS只是拒绝让我读取文件或文件的一部分,直到我从(已知)备份,这在数据完整性保证方面有巨大的改进。
CVn

至于文件大小,不,客观上31 GB并不是完全庞大(尽管它仍占我系统总存储容量的1.2%),但是我更担心的是COW是否会要求系统复制所有数据不断地来回往复,詹姆斯·瑞安迅速纠正了一个误解
CVn

1

根据您的用例和VM,我将考虑以下内容。让主机操作系统来处理要在ZFS卷上存储的文件。

如果可能,仅为每个VM创建一个LUN,仅包含操作系统和必要的二进制文件。并通过NFS,samba或iSCSI(或注释中提到的zvols)以共享形式显示个人数据的存储空间。ZFS能够通过校验和以及访问时间等来跟踪每个文件。当然,如果速度不是那么重要,那么您还可以在某些数据存储上启用压缩。好处是另一个文件系统缺少了一层。如果要为第二个虚拟硬盘驱动器创建一个LUN并在其上创建一个NTFS文件系统,则ZFS必须处理一个很大的Binary Blob,并且不知道任何内容或文件,因此无法利用其中的ZIL或ARC缓存。平面文件的处理方式相同。

提到ACL,ZFS可以通过NFSv4或Samba(如果启用)使用ACL。我确实承认我在FreeBSD上使用ZFS,但不能保证如何启用与ZFS卷配合的Sambas ACL。但是我相信这应该没什么大不了的。

当所有虚拟机开始读取相同的块时,重复数据删除与读取缓存的结合在节省空间和改善大量读取(引导风暴)方面具有很大的优势。

VM和数据存储的ZFS快照也是如此。您可以创建一个简单的Shell脚本,以冻结VM,为VM和数据存储拍摄快照并继续工作,或者仅对Datastore进行操作,然后克隆提供原始快照的VM并测试一些内容。

ZFS的可能性是无限的;)

编辑:希望我现在已经解释得更好了

EDIT2:个人意见:考虑使用RAIDZ2(RAID6),因为您可以承受双磁盘故障!如果只剩下一个备用磁盘,那将永远不会出错,但是两个磁盘故障应该足以快速恢复。我只是postet我的脚本监控硬盘状态这里


我不确定我明白了。您是说我应该将VM所使用的文件作为单独的文件存储在ZFS文件系统上,而不是作为磁盘映像存储吗?诸如分区,引导扇区,ZFS不知道的属性,Linux上下文中的Windows ACL之类的东西呢?我是在误解您,或者您在回答的不是我要问的问题。您能否重新阅读该问题并编辑您的答案以阐明它如何解决我的存储性能问题?
CVn 2013年

关于快照:实际冻结VM可能没有必要。ZFS使用写时复制(COW),这意味着快照是即时的,并且将为您提供完整的磁盘映像。有些管理员确实将它用于MySQL和PostGRES数据库,而没有冻结其数据库(例如,无停机时间),尽管其他管理员确实先刷新了表。如果确实需要冻结VM,则只需几秒钟即可拍摄ZFS快照。
Stefan Lasiewski

迈克尔,我认为Daywalker指的是zvols,您可以在其中创建充当块设备的文件。我将使用NFS而不是用于VM的单个zvol(在这种情况下,它看起来像是全部本地文件,因此只是文件系统中的文件)。是的,zvols很酷,但它们又增加了一层复杂性。根据定义,ZFS快照是一致的。这并不意味着VM的操作系统知道它需要将其数据刷新到磁盘,但是您将获得文件系统的一致性,就好像失去了VM的电源一样。
TheFiddlerWins 2013年

Dedup非常耗费资源。不能使用压缩,并且(对于VM)使用压缩可能会由于VM文件系统中的空白而使您获得很多空间。
TheFiddlerWins

@MichaelKjörling只是编辑我的帖子,希望能更好地理解(以及TheFiddlerWins和Stefan Lasiewski的评论
Daywalker 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.