据我所知,RAID 有 3 种类型:
- 硬件 - 例如昂贵的 PCIE RAID 卡/或很少配备专用 CPU 的板载 RAID,可能还带有写入缓存和 BBU
- 软件 - 例如 ZFS、MD、BTRFS 软件 RAID
- 假货 - 例如廉价的 PCIE RAID 卡/或大多数使用主板上的 RAM 和 CPU 的板载 RAID。
通过使用 BTRFS 软件 RAID,文件系统可以了解驱动器,当它发现校验和错误的块时,它可以使用克隆(RAID1/10)或奇偶校验(RAID5/6)来恢复受影响的块并修复错误。因此我们的文件不会随着时间的推移而退化。
问题是,相同的自我修复机制是否适用于硬件或 BTRFS 的伪 RAID?
我猜应该有一个 API,BTRFS 可以使用它访问受影响块的克隆/奇偶校验并修复它。我认为板载 RAID 更有可能出现这种情况,但我不知道是否存在这样的情况,或者每个 RAID 的实现方式都不同,并且没有 BTRFS 可以使用的标准 API。
答案1
我很难弄清楚这个问题,但无论如何我想我都可以回答它。
BTRFS 是软件 RAID,由 Linux 内置的 BTRFS 软件处理。为了对阵列进行任何类型的维护,您需要使用操作系统中的 btrfs 命令。
就您的硬件(包括任何 RAID 控制器)而言,磁盘只是基本的块设备。除了 Linux* 中的 BTRFS 软件之外,其他任何东西都不会知道磁盘是阵列的一部分。
*其他操作系统也有可能实现 BTRFS,但我认为至少目前不太可能。
更新:在现有 RAID 阵列上使用 BTRFS。
在这种情况下,RAID 和 BTRFS 是完全分开的。以硬件镜像为例:
- BTRFS 不知道它位于镜像中,并将数据写入单个设备(
/dev/raid
在此示例中称为此设备)。由 RAID 控制器在两个磁盘之间进行镜像。 - 如果某个设备发生故障,BTRFS 将照常读取数据,并且不知道磁盘发生故障。RAID 控制器负责保持
/dev/raid
功能并读取/写入剩余磁盘的数据。更换磁盘后,RAID 控制器还负责重建阵列。
无论 RAID 是如何提供的(硬件/“假”或软件),情况都是如此
我认为我解释得不是很好,但这是一个非常简单的概念...如果单独的设备(或软件)正在处理 RAID,则 BTRFS 无需修复 RAID 数据。它将单个磁盘上的单个文件系统视为单个文件系统,就像在 RAID 阵列上运行的任何其他文件系统一样。