BTRFS自愈只能通过软件RAID工作吗?

据我所知。 有3种types的RAID:

  • 硬件 – 例如昂贵的PCIE RAID卡,或者很less有带有专用CPU的板载RAID,可能带有写入caching和BBU
  • 软件 – 例如ZFS,MD,BTRFS软件RAID
  • 假的 – 例如一个便宜的PCIE RAID卡/或大多数使用主板上的RAM和CPU的板载RAID。

通过使用BTRFS软件RAID,文件系统知道驱动器,当它发现有错误校验和的块时,可以使用克隆(RAID1 / 10)或奇偶校验(RAID5 / 6)恢复受影响的块并修复错误。 所以我们的文件不会随着时间的推移而降低。

现在的问题是BTRFS是否能够使用硬件或假RAID来实现相同的自我修复机制?

我猜应该有一个API,BTRFS可以使用它来访问受影响的块的克隆/奇偶校验并修复它。 我认为有更多的机会通过板载RAID来实现这样的function,但是我不知道这样的事情是否存在,或者每个RAID的实现方式都不一样,而且BTRFS没有使用标准的API。

努力从这个问题中弄明白,但我想我可以回答。

BTRFS是软件RAID,由内置在Linux中的BTRFS软件处理。 为了对arrays进行任何types的维护,您需要在操作系统中使用btrfs命令。

就硬件而言,包括任何RAID控制器,磁盘只是基本的块设备。 除了Linux *中的BTRFS软件之外,没有其他任何东西会认为磁盘是数组的一部分。

*其他操作系统有可能实现BTRFS,但至less在目前这是不太可能的。

更新:在现有RAIDarrays上使用BTRFS。

RAID和BTRFS在这种情况下是完全分离的。 以硬件镜像为例:

  • BTRFS不知道它是在镜像上,并将数据写入单个设备(在这个例子中调用这个/dev/raid )。 RAID控制器可以在两个磁盘之间镜像。
  • 如果设备出现故障,BTRFS将正常读取数据,并且不知道磁盘出现故障。 保持/dev/raidfunction和读/写数据到剩余的磁盘是由RAID控制器决定的。 更换磁盘时,还要由RAID控制器来重buildarrays。

无论RAID如何提供(硬件/“假”或软件)也是如此,

我认为我没有解释得很好,但这是一个非常简单的概念……如果单独的设备(或软件)正在处理RAID,那么BTRFS无法修复RAID数据。 它像在RAIDarrays上运行的任何其他文件系统一样在单个磁盘上看到单个文件系统。