示例硬件/主机:
- 现代 64 核 CPU、128GB 内存
- 8 个 Micron Pro 15.36TB u.2 SSD
- 每个设备通过专用的 Oculink 连接 SSD(无背板或 PCIe 共享)
- Ubuntu 20.04
用例:
- 数百台主机的备份服务器。备份通过增量 rsync 执行,首先涉及来自远程主机的 rsync,然后是本地副本(使用 cp)以创建快照。 - - - 数百万个小文件(电子邮件、html 文件等)是备份的典型特征。
- 服务器可能同时处理 50 个传入的 rsync(CPU 轻量加密算法且无压缩)
- 冗余虽然有好处,但不是必需的。最多只有一个驱动器发生故障。
- 文件轮换需要极端的本地 i/o
- rsync 和硬链接差异复制(“rsnapshot”)的使用无法改变,这是已部署并投入生产的备份软件所需要的 - 因此 BTRFS 快照是不可能的。
我想到了两个可能的解决方案:
- 将我的数据存储分片,无冗余。以每个驱动器为基础,在 BTRRFS 中格式化,并使用内联 LZO 压缩进行安装。
- 优点:简单轻量,无 raid 管理开销
- 优点:隔离故障,磁盘发生故障时,只有一小部分备份会丢失,可以快速重建
- 优点:获得最大总容量
- 缺点:容量管理的复杂性 - 没有一个大卷意味着需要在特定磁盘上战略性地平衡数据,以最大限度地利用它们
- 缺点:磁盘故障确实会丢失数据
- 所有磁盘上的 ZFS RAIDz1/2 用于一个大卷
- 优点:1 或 2 个磁盘故障冗余
- 优点:易于管理,所有内容都集中在一个巨大的卷中 - 空间充足。
- 缺点:损失 1 或 2 个磁盘的容量
问题是:与选项 1 相比,ZFS RAID 管理开销是否会显著降低阵列的性能? - 在设计时,其在每个级别都旨在最大化操作系统和 SSD 之间的磁盘吞吐量(每秒数十 GB),ZFS RAID 管理的开销是否会导致性能显著下降和/或 CPU 或内存过载?
谢谢。
答案1
使用 ZFS。使用 LZ4 压缩。适当调整您的 ZFS,因为默认设置对于许多 NVMe 驱动器来说并不理想。
使用您的实际工作量进行测试和基准测试。我们无法告诉您其性能如何。
RAIDZ 开销不是这个问题。
CPU 的微基准测试会自动为您的给定平台选择最快的速度。
查看ZFS 模块参数:
答案2
由于 BTRFS RAID5 并非 100% 稳定,因此我甚至不建议将其用作备份机器。此外,对于这些大型 SSD,我会使用 RAID6 而不是 RAID5。
因此,我建议使用带有 XFS 的 MD RAID6,或者对于 Ubuntu 机器,使用带有 lz4 压缩的 ZFS RAIDZ2。
编辑:我只是不认为使用单驱动器 BTRFS 文件系统是一种有效的备份方法。在此配置中,任何单个驱动器故障将导致(部分)数据丢失。我强烈建议您使用带 LZ4 压缩的 RAIDZ2,或者为了获得最佳性能,使用带 XFS 的 MD RAID6(但会丢失压缩和校验和)。