假设我最关心的是保护我的数据不受物理硬盘故障以及它直接连接的计算机的影响。
我了解 RAID1 和 RAID5。它们可以防止因硬件问题导致数据丢失。
Gluster 和 Ceph 如何防范同样的问题?为了简单起见,我们先排除云和复制方面的答案。
Gluster 或 Ceph 是否会执行类似 SW raid 的操作,或者我是否仍会使用 HW raid?
更新:假设我有三台以上的服务器,每台都物理连接了一个硬盘。然后,如果我将这三个驱动器空间变成 Gluster 或 Ceph 空间。如果单个物理驱动器发生故障,会发生什么情况。我会丢失整个集群、部分集群,还是它仍能继续工作?
答案1
RAID 的目的不是防止数据丢失(无论是由于硬件故障、意外删除还是其他原因)。它是为了提高性能(RAID0、RAID0+1)和/或防止停机(RAID1、RAID5、RAID6)。如果您想防止数据丢失,则需要备份解决方案。最好是一个保存在现场,另一个保存在异地。
您要求不提供云和复制答案,但它们是防止数据丢失的唯一方法。如果单个磁盘发生故障,RAID1 和 RAID5 会提供保护,而 RAID6 允许两个磁盘发生故障,但它们都无法防止数据损坏、意外删除或恶意活动。如果这些数据很重要,那么您将需要那些您要求不提供的东西。
答案2
这个问题的要点是“多节点存储集群与 RAID 等概念有何关系?”
答案是它们有些关联。RAID 阵列旨在跨故障域复制和/或分发数据。对于 RAID,这些故障域是单独的磁盘。在以冗余为目标的阵列中,磁盘丢失并不代表数据丢失(耐用性)或对该数据的访问权丢失(可用性)。
多节点存储集群可以以非常相似的方式考虑,可以选择将整个节点或节点组作为故障域,而不仅仅是单个节点中的磁盘或磁盘组。数据可以分布在节点之间而无需复制,也可以在两个或更多节点(或节点组)之间复制数据。
作为一个主题,存储集群比 RAID 等概念复杂得多,我上面写的简介几乎就是它们相似之处的结束。它们不是相互排斥的技术,可以混合使用 - 可以选择在存储集群节点内使用 RAID,甚至可以建立许多集群存储目标的 RAID 阵列。同样,它很复杂 - 事实上非常复杂,以至于很容易制造出可怕的集群,而这些集群造成的问题比它们解决的问题还多。
我建议确保每个人都了解特定的存储集群技术非常在尝试以任何严肃的方式使用它之前,请仔细阅读。值得庆幸的是,Ceph、Gluster、DRBD 和相关技术都是开源的,可供公开研究。
答案3
某些 RAID 配置可防止因硬件问题导致数据丢失 — 一个驱动器可能出现故障,而另一个驱动器仍有可用的数据副本。其他 RAID 配置反而会提高性能。
Ceph 在对象级别(RADOS 层)复制数据,将数据的多个副本存储在位于不同主机上的单独驱动器上(最常用的是三个副本),或者将数据拆分为擦除编码块 - 在您的思维模型中,这类似于 RAID 的奇偶校验方案。
这是数据弹性,衡量标准是集群可以丢失多少台主机或多少个驱动器,同时仍能保证不丢失数据。在副本 3 存储池中,您可以丢失两个驱动器同时地并且不会丢失任何数据。如果事件为集群提供了两次驱动器故障之间的时间(在我的示例中),它将自我修复并复制受第一次故障影响的数据,从而恢复到副本 3 冗余。
让我们看一下您对三台主机(每台主机一个硬盘)的查询。在该配置中,Ceph replica-3 池可以丢失两台主机,但仍能提供数据,集群将继续工作。第一次故障后,集群将继续运行,并警告管理员弹性已从两次故障降低到一次故障。第二次故障后,只剩下一份数据副本,集群将继续提供数据,但会切换到只读模式,并强制管理员解决弹性损失问题。EC 弹性取决于所选的编码方案,但在您的示例中,人们不会使用只有三台主机的纠删码池。
一般来说,像 Ceph 这样的软件定义存储只有在一定的数据规模下才有意义。传统上,我建议将半 PB 或 10 台主机(每台主机有 12 或 24 个驱动器)作为合理的阈值。最近,自我管理和自动化方面的 UX 改进使 5 台主机成为合理的最低阈值。
Ceph 和 RAID 复制都不是备份解决方案 — 备份是数据恢复方案,不是数据弹性方案。但是,虽然 Ceph 基于对象的复制几乎可以无限扩展,但 RAID 基于驱动器的复制无法扩展太远。