是否存在可以进行错误更正的文件系统?

是否存在可以进行错误更正的文件系统?

我正在寻找一些虚拟文件系统(例如带有虚拟硬盘)或其他类型的工作解决方案来创建具有错误纠正冗余的档案或数据备份。

我尝试寻找类似 Windows 7 VHD 的东西,它可以显示为具有自己的 FS 的新存储设备,但对文件具有一定可配置的恢复保证百分比。

换句话说,我想要一个 VHD 或类似的东西,我可以配置设置特定的恢复百分位数(例如 10%),目标是这个驱动器上的文件可能损坏高达 10%,并且它们将是可恢复的。

更准确地说,这个想法类似于“加密”的 FS(例如TrueCrypt),但使用冗余来保证可靠性,而不是使用加密来保证隐私和安全。

有这样的事吗?

答案1

我不确定虚拟文件系统但有许多“真正的”文件系统具有内置容错功能

  • 缓存文件- 尚未完成上游完整数据和元数据校验,缓存是文件系统的下半部分
  • 文件系统– 由 Oracle 公司创建的基于 B 树的文件系统。
  • 锤子锤子2– Dragonfly BSD 的主要文件系统,由 Matt Dillon 创建。
  • ReFS(弹性文件系统)– Microsoft 的具有内置弹性功能的文件系统。
  • 依赖– 由 Datalight 创建的带有 CRC 的事务文件系统。
  • 信实硝基– 由 Datalight 开发的具有 CRC 的基于树的事务文件系统,可实现嵌入式系统的高性能和可靠性。
  • 新星– 用于持久主存储器的“非易失性存储器加速”文件系统。
  • 虚拟文件系统– 由 Sun Microsystems 创建,用于 Solaris 10 和 OpenSolaris,移植到 FreeBSD 7.0、NetBSD(截至 2009 年 8 月)、Linux 和 FUSE(不要与 IBM 的两个 zFS 混淆)
  • WekaFS——一种共享并行文件系统,可在任何规模下提供极高的性能,并针对 NVMe 和混合云进行了优化。

具有内置容错功能的文件系统

我不知道这些文件系统的详细功能,所以其中一些可能只提供数据错误检测而不是纠正。您需要检查它们的文档。但如果它们确实有错误纠正功能,那么您当然可以在虚拟硬盘中使用它们并让它们处理错误纠正。文件系统驱动程序从物理驱动器还是虚拟驱动器读取没有区别,因为它们只接收字节流。

对于 Btrfs,你也可以复制数据以进行错误更正,尽管这会占用两倍的磁盘空间。只需使用--dup data选项

mkfs.btrfs --metadata dup --data dup /dev/<device>

在 ZFS 中,也可以使用类似方法set copies命令

zfs set copies=2 users/home

更多信息请阅读如何在 Linux 上的单个硬盘上进行错误检测和纠正(使用 btrfs 或其他方法)

答案2

是的;Ceph

是我所知道的唯一可选使用纠错码 (ECC) 的“文件系统”。通常 ECC 是在硬件(RAM、HDD、SSD)中实现的,因此 btrfs/zfs/stratis 仅使用校验和、镜像、奇偶校验来处理整个驱动器故障或超过 ECC 阈值的损坏。与 btrfs/zfs/stratis 不同,Ceph 和其他分布式文件系统没有固有的单点故障,因此 Ceph/etc 可以提供持续可用性。

一些档案(rar 和 par2)提供 ECC。例如 .md5 文件可以附带其他文件,par2 也可以。

我建议阅读 https://en.wikipedia.org/wiki/Error_correction_code

答案3

https://www.thanassis.space/rsbep.html

这将创建包含错误更正数据的额外文件,使用Reed-Solomon 错误校正过去曾用于音频 CD 上。

可惜没有文件系统使用这种技术。

答案4

我还没有听说过像块级文件系统那样工作的文件系统。

太浩湖确实有这个功能,但它的工作方式更像 FTP,速度很慢,并且实际上是为在多个主机之间传播共享而设计的。

你可以使用 PAR2 工具自行冗余文件,例如快捷宝

相关内容