假设我有一个磁盘,其中有很多分区,这些分区使用许多不同的文件系统进行格式化。
我很少向其中写入数据,但是却经常从中读取数据。
现在我只想知道在 FS 级别或 OS 级别(只读...)我能做什么来避免在断电这种特殊情况下丢失数据。没有 UPS。
作为一个附加问题,由于我对 FS 的了解很少,什么使给定的文件系统更能抵御数据损坏?我想应该有参考资料,但我找不到关于文件系统的一般资料。
答案1
如何调整文件系统?可能你不能。
如果您只关心断电,请将所有文件系统挂载为只读。断电时出现的大多数问题都是未完成的写入,如果没有写入任何内容,这些问题就不会发生。
如果您需要更多,您可以使用在读取时检查数据的文件系统。问题是:如果您没有任何冗余,如果检测到错误,则无法采取任何措施来恢复数据。您只知道有错误。
因此,您需要将数据冗余存储,以防损坏。有些文件系统允许在同一驱动器上存储同一文件的多个副本,但这确实不可取。因此,您应该使用多个驱动器。
如果有更多驱动器,您也可以使用 RAID,但如果多个驱动器上的数据不同,则无法知道哪个驱动器是正确的。现代文件系统会计算每个文件(或文件的一部分)的哈希码,并在读取时进行比较。如果哈希不匹配,则从希望仍然正确的另一个位置读取文件,并且错误的数据已被替换。所以这个文件系统可以自我修复。
支持此功能的文件系统有 ZFS、BtrFS、ReFS 等。我只使用过 ZFS。