Proxmox+VE用于公有云、VPS的可靠性得到了很多同行长期的验证认可,整个生态环境也满足我的需求,所需功能也基本都能满足,所以我开始用PVE了。我考虑用本地存储,如果是用智简魔方的公有云平台,一般情况只有硬卡RAID10是最好方案;但PVE出现了多个方案,我挑了几个,但很犹豫哪个最合适我:ZFS-RAID-Z2、ZFS-RAID-Z3、ZFS-RAID10,以及硬卡RAID10。

首先硬卡RAID10就被淘汰了,因为我计划使用NVMe+U.2的盘,常见的硬卡无法对U.2做列阵。

列阵原理:

ZFS-RAID-Z2、ZFS-RAID-Z3以下官方的解释:

A raidz group can have single, double, or triple parity, meaning that
the raidzgroup can sustain one, two, or three failures, respectively,
without losing anydata. The raidz1 vdev type specifies a single-parity
raidz group; the raidz2 vdev type specifies a double-parity raidz
group; and the raidz3 vdev typespecifies a triple-parity raidz group.
The raidz vdev type is an alias for raidz1.

通俗理解就是如果我有6个NVMe+U.2盘组建ZFS-RAID-Z2,则最大可以故障任意2个盘;ZFS-RAID-Z3+则可以最大故障任意3个盘;而可用容量则是6个盘-2个盘(Z2),或3个盘(Z3)。

ZFS-RAID-Z10与硬卡RAID10是相同的原理。多个RAID1组建为RAID0,则为RAID10,只能大于等于4的偶数盘位数量组建,可用容量为一半。

性能区别:

6个盘的情况下,我测试了ZFS-RAID-Z10、ZFS-RAID-Z2性能差别不大,但可用容量Z2多出了1个盘。

安全性:

有关安全性的讨论很激烈,仁者见仁。

RAID10我用了很多年,是非常可靠的,但并不意味着万无一失,正如上面提到的,其是多个RAID1(镜像)组建的RAID0。RAID10可以在故障多个盘的时候保持数据可用,可如果坏的2个盘是同一组镜像内的,RAID10列阵将损坏;即便你有12、24个盘的RAID10,同一组镜像内的盘坏了,也会面临同样的结局。我已经遇到了多次……但如果选用好的硬盘可以很大程度上减少这个情况,例如Intel+S4520+SSD,目前还没一例这个情况。

ZFS-RAID-Z2和ZFS-RAID-Z3则面临着另外一个问题,当一个盘发生故障后,剩余磁盘的IO压力将增加,因此如果同步恢复速度慢(或没有即时去更换故障盘),剩下磁盘接连故障的可能性就会增加;而RAID10同一组镜像内故障了一个盘,另一个盘不会因此而IO压力增加,同一组镜像内接连故障的可能性相对较低。

不同安全级别的硬盘磨损(重写)问题

RAID10几乎没有写入放大问题,ZFS-RAIDZ-2/3则存在写入放大的问题,即写入1T数据实际可能会对硬盘写入2T,这会造成硬盘的寿命比预期更短,我们需要实际测试观察写入放大的程度,决定是否使用。

如果是SATA+SSD用硬卡还是ZFS-RAID10呢?

虽然可能会占用一些内存、CPU性能,但我个人仍然会更倾向ZFS-RAID10,因为其具备在线扩展的能力,初始硬盘数量并不需要特别大,如果不足时候可以后面再补硬盘扩大列阵,这些都可以通过PVE在线完成。虽然硬卡RAID10也可以后期扩展,但其操作相对复杂还有数据损坏的风险,且需要停机重启。

结论

我最后决定6盘的话使用+ZFS-RAIDZ-2,7-8盘位使用+ZFS-RAIDZ-3;我们使用了企业级的Intel+NVMe+U.2或者Intel+S4520,以及有人员可以即时响应更换,可以忽略写入放大的问题;但长期来看ZFS-RAID10仍然是安全、性能的最佳平衡。还有个情况就是ZFS-RAIDZ-2/3官方建议集群盘数量要小于等于16个,但我认为应该更小;大于10个盘应该选择RAID10。

另外日常维护中,可以偶尔拔掉一两个盘和不同批次的硬盘互换、或者在组建之前逐一写入一些测试数据,让列阵中的盘写入寿命不相同,避免同时故障的可能性。

本文参考:
https://www.reddit.com/r/homelab/comments/15fzf44/zfs_raid10_or_raidz2_which_one_to_chose_for_6x1tb/
https://www.reddit.com/r/Proxmox/comments/uukjgm/copy_template_between_different_clusters/
https://www.liujason.com/article/679.html
https://community.spiceworks.com/topic/549079-raid-10-vs-raid-70-striped-raidz3-vdevs
https://forum.proxmox.com/threads/zfs-best-practices-36x-6tb-hdd-enterprise-nvme.135079/

标签: RAID, PVE

添加新评论