我需要有关如何为具有 16 个磁盘阵列的服务器设置 RAID 的建议(引导/操作系统磁盘在此阵列之外)。在这个 16 磁盘阵列中,所有磁盘都是相同的(12.8TB SSD)。
对我来说,理想的解决方案是至少有一半的可用空间(因此,204.8TB 中至少有 102.4TB),以及抵抗至少 8 个磁盘故障的能力(任何 8 个磁盘都应该能够在没有任何数据的情况下发生故障失利)。
无需将 102.4TB 可用空间视为单个连续卷,因此也可以将磁盘分组为单独的 RAID 卷等,只要任意 8 个磁盘可以中断而不会丢失任何数据。
我正在考虑几个解决方案,但没有一个解决方案真正让我完全满意:
第一个解决方案是具有 8 个跨度的单个 RAID 1+6 卷(76.8TB 容量,在最坏的情况下,任何 5 个磁盘都可以中断而不会丢失数据)。方案:
RAID6( RAID1(D1,D2), RAID1(D3,D4), RAID1(D5,D6), RAID1(D7,D8), RAID1(D9,D10), RAID1(D11,D12), RAID1(D13,D14), RAID1(D15,D16) )
第二种解决方案是具有 2 个跨度的单个 RAID Z3+1 卷(容量为 64TB,在最坏的情况下,任何 7 个磁盘都可以中断而不会丢失数据)。方案:
RAID1( RAID_Z3(D1,D2,D3,D4,D5,D6,D7,D8), RAID_Z3(D9,D10,D11,D12,D13,D14,D15,D16) )
对我来说,完美的 RAID 解决方案是八位奇偶校验 RAID(如 RAID 5 是单奇偶校验,RAID 6 是双奇偶校验,RAID Z3 是三重奇偶校验),因为这意味着 102.4TB 的可用空间和任何 8 个磁盘都可以在没有的情况下损坏数据丢失。但不幸的是,这个假设的“RAID Z8”并不存在。
提前感谢您的任何建议。
PS:在这种情况下,性能确实不是问题,因此不是要考虑的参数。
PPS:我寻求抵抗任何 8 磁盘故障的原因是因为这些磁盘将包含高度关键的任务数据。备份已经计划好了,但如果 RAID 卷停止工作,依赖它的几个关键任务服务器和服务也将停止工作。
PPPS:服务器本身的高可用性已经得到照顾。
尝试基于网络的冗余存储,例如 CEPH。您可以将其设置为存储每个块的 9 个副本并进行设置,以便将它们全部存储在不同的 OSD 上,因此每个副本都将在另一台设备上;在这种情况下,您确实可以移除 8 个 OSD,并且在剩余系统上仍然拥有每个块的至少一个副本。
是的,在冗余存储方面效率非常低,但这正是您的要求。我认为这是非常夸张的,直到毫无意义。世界似乎达成共识,没有人真正需要这么多副本。火星漫游者拥有三台计算机,即使在条件极其恶劣且至少需要半年时间才能修好它们的地方,这也足够了。
比拥有这么多静态副本更好地投资于具有实时修复能力的系统。CEPH 正是这样做的:您指定每个块需要 3 个副本,并且这些副本不能位于同一位置。现在,如果某个设备变得不可访问,系统会发现它,并且知道其中存储了哪些块;所以它立即开始重新分配它们,以便再次达到所需的冗余。您可以设置它,如果只剩下 1 个副本,它将阻止访问,因此它有机会修复(分发该副本并恢复访问)。您可以在单个集群中创建多个具有不同要求的池。如果您扩展存储,您只需添加更多 OSD。
您没有指定操作系统,这是答案的基本要求。
我个人不会采用这样的机制,因为冗余不够,恢复时间太慢。
“备份已经计划好了,但如果 RAID 卷停止工作,一些依赖它的关键任务服务器和服务也将停止工作。”
因此,我将在 FreeBSD 上使用 zfs 池(v12,不是 13 和 openzfs,对我来说还不够成熟)复制到另一台机器(如果可能的话)上的另一个池(例如使用 syncoid/sanoid)甚至便宜的 iSCSI NAS基于设备
一种“硬件 RAID”,但“完整”(如果一台机器出现故障,可以使用另一台机器)
事实上,单个断点/故障点不仅是体积,而且最重要的是它所连接的机器。
此外,为了尽量减少出现任何问题的恢复时间,我从不推荐超过 8 个磁盘的卷,因为找到最多 8 个驱动器的 RAID 控制器(在 zfs 的非 RAID 模式下闪存)要容易得多。
例如,如果具有 16 个连接器的 SAS 控制器出现故障,您会怎么做?
您无法将磁盘连接到在紧急情况下购买的 500 美元计算机的 SATA 控制器。