用于存储虚拟机的 ZFS 与原始磁盘:权衡

Sto*_*aft 3 zfs io virtual-machine hardware-virtualization linux-kvm

背景:

我打算设置一个 KVM 以在同一工作站上运行 Windows 和 Linux,但我不确定如何设置磁盘。我的理解是原始磁盘通常会提高性能。我将进行大量 I/O 密集型工作,因此性能至关重要。但是,我计划的设置需要大量工作才能设置,如果不需要,我不想做两次。根据我使用 Vbox 和 VMware Player 进行桌面虚拟化的经验,我多次被无法启动的损坏 VM 文件烧毁。这吸引我使用具有强大的数据损坏保护和良好恢复功能的设置。这吸引了我使用 ZFS。

基于这些基准,ZFS 比其他文件系统更适合 VM 存储,但它无法与原始磁盘直通相比。 http://www.ilsistemista.net/index.php/virtualization/47-zfs-btrfs-xfs-ext4-and-lvm-with-kvm-a-storage-performance-comparison.html

我的问题:

  1. 与原始磁盘模式相比,从 ZFS 池运行的 VM 文件的速度如何,尤其是将 Winodws/NTFS 作为来宾时?

  2. 如果您正在构建双操作系统工作站,您会如何权衡这两种设置的优点?

  3. 在这方面有什么重要的事情我似乎没有考虑吗?

我正在考虑的两个设置:

all*_*tic 5

在以下情况下,ZFS 可以(非常)更快或更安全:

  • 如果您正在考虑使用其他一些软件 RAID 或 bios RAID 解决方案(例如,不是具有板载相对强大的 RAID 处理器、重要的 DRAM 缓存等的专用硬件)——ZFS 拥有性能最高的软件 RAID

  • 如果与其他文件系统(和原始磁盘块)使用的最近最少使用页面缓存算法相比,您的特定工作负载从ZFS 使用的自适应替换缓存算法中获益更多。已经讨论过在 Linux 内核中使用 ARC 或类似算法代替 LRU,但我不确定是否有任何结果

  • 如果要使用ZFS独有的RAIDz代替软件RAID-5来解决写洞问题。

  • 如果您想设置一个分层存储解决方案,在您的速度较慢的高容量 HDD 前面放置更快的驱动器(通常是 SSD)。ZFS 最适合这一点,因为您可以获得L2ARC和/或ZIL,这归结为一层读写缓存,让您感觉“类似 SSD”的性能,同时受益于较大 HDD 的总可用存储容量。示例:RAID-1 中的 2 x 6 TB HDD,它们前面有 2 x 250 GB SSD,它们的分区在 L2ARC 和 ZIL 之间拆分。

  • 如果您放入 ZVOL 的文件系统或 ZFS 中的文件不支持(有效)块层无损压缩。LZ4 速度很快,可以节省相当大的磁盘空间。如果您的文件系统使用较差的算法(更慢或更差的压缩率或两者兼有),则在 ZFS 层而不是在内部文件系统中使用 LZ4 可能是有利的。

另外,我建议您使用ZVOL而不是“文件中的文件系统”来存储您的 VM。

要么,要么直接使用数据集(这是最有效的),如果您的 VM 是 Linux 并且可以直接使用 ZFS 数据集。

  • ZFS 池始终具有 ZIL(ZFS 意图日志);您所指的是 SLOG 设备。对于具有大量同步写入的池​​(这是设置 VM 磁盘存储的好方法),通过 SLOG 设备(最好是快速 SSD,如果需要镜像)将 ZIL 放在更快的设备上可能是提高性能的好方法。 (3认同)