管理 16 个磁盘冗余的 RAID 建议

管理 16 个磁盘冗余的 RAID 建议

我需要有关如何为具有 16 个磁盘阵列(启动/操作系统磁盘不在此阵列中)的服务器设置 RAID 的建议。在此 16 个磁盘阵列中,所有磁盘都是相同的(12.8TB SSD)。

对我来说,理想的解决方案是至少可用空间的一半(因此,204.8 TB 中至少有 102.4 TB),并且容量可抵御至少 8 个磁盘故障(任何 8 个磁盘都应该能够发生故障而不会丢失任何数据)。

没有必要将 102.4TB 可用空间视为单个连续的卷,因此磁盘也可以分组为单独的 RAID 卷等,只要任何 8 个磁盘发生故障而不会丢失任何数据即可。

我想到了几个解决方案,但没有一个解决方案真正让我完全满意:

  1. 第一个解决方案是具有 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. 第二种解决方案是具有 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 磁盘故障的原因是这些磁盘将包含高度关键的任务数据。备份已经计划好了,但如果 R​​AID 卷停止工作,依赖于它的几个关键任务服务器和服务也将停止工作。

PPPS:服务器本身的高可用性已经得到照顾。

答案1

尝试基于网络的冗余存储,例如 CEPH。您可以将其设置为存储每个块的 9 个副本,并进行设置,使其将所有副本存储在不同的 OSD 上,这样每个副本都会在另一个设备上;在这种情况下,您确实可以删除 8 个 OSD,而其余系统上仍然至少保留每个块的一个副本。

是的,冗余存储效率很低,但这正是你的要求。我认为这太夸张了,甚至毫无意义。世界似乎达成了共识,没有人真的需要这么多副本。火星探测器有三台计算机,即使在条件极其恶劣的地方也足够了,而且至少要半年后才会有人来修复它们。

最好投资具有实时修复能力的系统,而不是拥有那么多静态副本。CEPH 就是这样做的:您指定需要每个块的 3 个副本,并且这些副本不能位于同一位置。现在,如果某个设备无法访问,系统会发现这一点,并且知道哪些块存储在该设备上;因此它会立即开始重新分配它们,以便再次达到所需的冗余度。您可以将其设置为如果只剩下 1 个副本,它将阻止访问,这样它就有机会进行修复(分发该副本并恢复访问)。您可以在单个集群中创建具有不同要求的多个池。如果您扩展存储,只需添加更多 OSD。

答案2

您没有指定操作系统,这是答案的基本要求。

我个人不会采用这样的机制,因为冗余度不够,而且恢复时间太慢。

“备份已经计划好了,但是,如果 RAID 卷停止工作,那么依赖于它的几个关键任务服务器和服务也将停止工作。”

因此,我将在 FreeBSD(v12,而不是带有 openzfs 的 13,对我来说还不够成熟)上使用 zfs 池进行操作,并将其复制到另一台机器上的另一个池(例如使用 syncoid/sanoid)(如果可能)或甚至基于廉价 iSCSI NAS 的设备上

一种“硬件 RAID”,但“完整”(如果一台机器出现故障,另一台机器仍可使用)

事实上,单个断路/故障点不仅是音量,而且最重要的是它所连接的机器。

此外,为了在出现问题时尽量缩短恢复时间,我建议不要使用超过 8 个磁盘的卷,因为最多 8 个驱动器的 RAID 控制器(在非 RAID 模式下为 zfs 刷新)更容易找到。

例如,如果带有 16 个连接器的 SAS 控制器出现故障,您该怎么办?

您无法将磁盘连接到紧急情况下购买的价值 500 美元的计算机的 SATA 控制器上。

相关内容