我打算设置一个带有用于加密的 ecryptfs 的 NAS。我想知道 ecryptfs 是否会告诉我文件是否已被静默损坏(例如,有故障的硬盘驱动器),或者我是否仍然依赖底层文件系统为我进行数据校验和?
无论如何,我可能会使用 btrfs 作为底层文件系统来获得快照功能,但我仍然想知道例如 ext4 + ecryptfs 是否会像普通 btrfs(或 btrfs + ecrypts)那样提供相同的保证来防止隐藏文件损坏,因为btrfs 的校验和功能。
我打算设置一个带有用于加密的 ecryptfs 的 NAS。我想知道 ecryptfs 是否会告诉我文件是否已被静默损坏(例如,有故障的硬盘驱动器),或者我是否仍然依赖底层文件系统为我进行数据校验和?
无论如何,我可能会使用 btrfs 作为底层文件系统来获得快照功能,但我仍然想知道例如 ext4 + ecryptfs 是否会像普通 btrfs(或 btrfs + ecrypts)那样提供相同的保证来防止隐藏文件损坏,因为btrfs 的校验和功能。
上面的答案是不正确的。eCryptFS 的实际实现默认或根本不校验数据。简单演示:
还:
eCryptfs 不会给出读取错误或任何错误指示。请注意,即使使用该
ecryptfs_hmac
选项也可以启用校验和,但显然没有。ecryptfs 的实际源代码确实包含 HMAC 代码,所以我不确定为什么它不起作用。快速 Google 搜索表明 HMAC 代码可能不完整。还没有深入研究它。eCryptFS执行校验和数据。有一篇论文描述了 eCryptFS 的工作原理。eCryptFS 所做的其中一件事是防止对手篡改文件,为此它会计算 HMAC 并将其与加密文件一起存储。作为奖励,这显然还可以防止意外“篡改”,例如宇宙射线、电子噪声或简单的磨损(统称为比特腐烂)。
但是,btrfs还做了一件我确信eCryptFS不会做的事情:镜像/复制和奇偶校验。通过镜像 (RAID1) 或奇偶校验(RAID5 或 RAID6),如果 btrfs 检测到当前正在读取的文件损坏,它能够自动找到文件的良好副本。Ars Technica 有一篇关于损坏以及如何最好地利用 btrfs 或 ZFS 的功能来保证数据安全的非常好的文章。
如果您使用ext4 和 eCryptFS,充其量您只会知道某些内容已损坏或被篡改,但您必须手动干预才能解决问题。我建议坚持使用btrfs 和 eCryptFS,它们既提供校验和(只要您不禁用写时复制),还可以维护数据的冗余副本(使用 RAID1、RAID5、RAID6 或 RAID10)。