背景:
我计划设置一个 KVM 以在同一工作站上运行 Windows 和 Linux,但尚未决定如何设置磁盘。据我所知,原始磁盘通常可以提高性能。我将进行大量 I/O 密集型工作,因此性能至关重要。但是,我计划的设置需要大量工作,如果没有必要,我不想重复设置。根据我使用 Vbox 和 VMware Player 进行桌面虚拟化的经验,我曾多次因无法启动的损坏 VM 文件而受苦。这吸引我选择具有强大数据损坏保护和良好恢复功能的设置。这吸引我选择 ZFS。
根据这些基准测试,ZFS 比其他文件系统更适合虚拟机存储,但它无法与原始磁盘直通相比。 http://www.ilsistemista.net/index.php/virtualization/47-zfs-btrfs-xfs-ext4-and-lvm-with-kvm-a-storage-performance-comparison.html
我的问题:
与原始磁盘模式相比,从 ZFS 池运行的 VM 文件的速度如何,尤其是以 Winodws/NTFS 作为客户机时?
如果您正在构建双操作系统工作站,您会如何权衡这两种设置的优点?
关于这一点,是否存在我似乎没有考虑到的重要事项?
答案1
在下列情况下,ZFS 可以更快或更安全:
如果您正在考虑使用其他软件 RAID 或 bios RAID 解决方案(例如,不是带有相对强大的板载 RAID 处理器、大量 DRAM 缓存等的专用硬件)——ZFS 拥有性能最高的软件 RAID
如果您的特定工作量从自适应替换缓存ZFS 使用的算法与最近最少使用其他文件系统(和原始磁盘块)使用的页面缓存算法。有人讨论过在 Linux 内核中使用 ARC 或类似算法代替 LRU,但我不确定是否有什么来自。
如果想使用ZFS独有的RAIDz代替软件RAID-5来解决写入漏洞问题。
如果您想设置分层存储解决方案,让速度更快的驱动器(通常是 SSD)位于速度较慢的高容量 HDD 前面。ZFS 最适合这种情况,因为您可以L2ARC和/或吉尔,归结为一层读写缓存,为您提供“类似 SSD”的性能同时受益于更大 HDD 的总可用存储容量。例如:2 个 6 TB HDD 组成 RAID-1,前面有 2 个 250 GB SSD,分区分为 L2ARC 和 ZIL。
如果您放入 ZVOL 中的文件系统或 ZFS 中的文件不支持(有效的)块层无损压缩。LZ4 速度很快,可以节省大量磁盘空间。如果您的文件系统使用较差的算法(速度较慢或压缩率较差或两者兼而有之),则在 ZFS 层而不是内部文件系统中使用 LZ4 会更有利。
另外,我建议你使用零点波动而不是使用“文件中的文件系统”来存储您的虚拟机。
或者,如果您的 VM 是 Linux 并且可以直接使用 ZFS 数据集,那么直接使用数据集(这是最有效的)。