我有一个由NetApp NFS文件pipe理器上的虚拟磁盘映像组成的多TB btrfs 。 数据在NetApp级别是冗余的,所以btrfs是RAID-0。
除了提供冗余外,NetApp还会自行清理数据完整性。
由于在btrfs级别没有冗余,校验和失败不能自动纠正,但我可以从备份中恢复损坏的文件。
是否有价值的做我自己的洗刷,或者我应该依靠较低层,并保存I / O?
使用自己的清理没有任何价值 – 事实上,这可能会导致caching命中率降低,并降低生产IO的性能。
Netapp操作系统已经可以更好地监控所有可以防范的事情。
不,在你的设置中,在Btrfs级别上洗刷没有真正的价值。 如果至lessRAID1已经启动并且正在运行,擦除操作才有意义,因为这是Btrfs检测硬盘上的缺陷数据并恢复的机制。 但是为了恢复它,数据需要不止一次地存在,所以RAID0上的擦除只检测错误,但是永远不能恢复。 如果你想能够使用Btrfs自带修复机制,至less需要RAID1!
擦除RAID0将检测错误,但无法纠正其中的大部分。 RAID0应该只用于快速,一次性数据,而不是用于有价值的数据集。
另外请注意,在Btrfs上运行虚拟映像是其中Btrfs将会非常快速地降级并碎片化的用例之一,除非在文件上使用nodatacow。 当然,使用nodatacow有点违背了COW文件系统的select。
含义:如果您只需要一个经过validation的虚拟映像文件系统,则应该selectExt4或XFS而不是Btrfs。