我想了解哪种文件系统 (FS) 最适合数据归档的目的。以下是 FS 应满足的使用参数和要求:
- 备份介质是便携式磁性硬盘驱动器 (HDD)。 SDD 不太可能被使用。
- 目前硬盘容量为5TB。未来可达 24TB。
- HDD 很少连接(一次约 3 个月),所有备份存档/文件都写入磁盘,然后安全弹出。从 HDD 读取数据的情况甚至很少见。
- 单个文件大小有时可达 100Gb。通常大小约为 5Gb。
- A单个 FS 分区是可取的。避免使用多个分区,除非它有助于数据保存。
- FS 必须是Linux 上完全支持。开源 FS 将是一个优势。
- 支持 windows 和 mac 是不需要但是,HDD 有时可能会连接到在 Windows 或 Mac 主机上运行的 Linux 虚拟机。
- FS 将位于LUKS容器。在 LUKS 上应该表现得很好。
- 应该最不容易发生静态数据损坏/位腐烂/ 长期冷藏。
- 应该有合理的开源数据恢复工具支持 FS - 至少恢复最近/意外删除的文件。
- 应该在幕后进行无缝的数据完整性检查/弹性。
- 写入过程中硬盘意外断开或断电的情况可能永远不会发生。
rsync
有时可能会用于从源写入备份文件。- 允许较慢的读/写速度。
答案1
应该在幕后进行无缝的数据完整性检查/弹性。
这将限制选择
dm-integrity
作为 LUKS 之上的设备映射器层,以及任何成熟的文件系统(例如 XFS、ext4)或者- ZFS 或 BTRFS 带有数据校验和以检测 LUKS 之上的错误。在这两者之间,我认为 ZFS 更老/更成熟,因此是首选。但它不兼容 GPL(仍然是开源的),因此它不是 Linux 内核的一部分。
然而,1.和2.都不支持错误更正,出于我不确信的原因。他们支持错误检测。
如果需要纠错,则需要添加冗余数据。通常,你可以用独立的第二个磁盘来做到这一点(这是有道理的:虽然位错误很糟糕,但如果出现问题,整个硬盘驱动器无法工作,然后遇到比 1 个有错误的文件更大的问题,这并不是最不可能的情况)。
然而,您当然可以滥用 Linux 系统在一个系统上拥有多个块设备的能力:
- 拥有 LUKS 加密的外部驱动器
- 在该 LUKS 卷中,有一个 LVM 物理卷 (
pvcreate /dev/mapper/bhavesh'sopenluksvolume
) - 在该 LVM PV 中,您创建一个 LVM 卷组 (
vgcreate externalvg /dev/mapper/bhavesh'sopenluksvolume
) - 在该 LVM VG 中,您创建 3 个 LVM 逻辑卷 (
lvcreate -n first -l 33%VG externalvg ; lvcreate -n second -l 33%VG externalvg ; lvcreate -n third -l 33%VG externalvg
) - 在这三个 LVM LV 中,您使用 RAIDZ1 构建一个 ZFS Zpool (
zpool create zpool raidz1 /dev/mapper/externalvg-{first,second,third}
)
请注意,从数学角度来说,纠错需要空间用于纠错冗余数据。你无法规避这一点!在这种情况下,只有 66% 的存储容量可用于文件。
现在您拥有了一个可自我修复的 ZFS 文件系统:如果某个位置的任何数据或元数据已损坏,则无需冗余的帮助即可更正错误。
通过这种方式,您可以获得很好的抵御位/扇区错误的能力。但是,请注意,我会说最薄弱的环节是您的单个外部磁盘:如果该硬件出现故障,您将丢失 100% 的数据。
因此,更好的弹性策略是同时连接两个外部磁盘并使用镜像。在这种情况下,您只需设置一个包含两个 LUKS 卷的 Zpool 和一个 Zmirror 设置 - 它会更快、更有弹性。
如果您无论如何都打算购买两张磁盘,这就是我想要的。