那么..如果硬盘上出现坏块,怎样才能更好地生存呢?
不使用 FDE(全盘加密)
使用FDE - 由于整个磁盘有“1个分区” - 加密的分区,如果出现HDD错误(例如:坏块),不是更有可能丢失所有数据吗?
答案1
简短的回答是:使用或不使用全盘加密不会对因存储错误而丢失数据的风险产生任何影响。
原因如下:通常用于全盘加密的加密方法不使用传统的块链接(因为从性能角度来看这完全不切实际),而是使用其他方法来防止相同的明文块显示为相同的 -磁盘上的密文块。我相信一种常用的方法是使用块索引作为 IV 来加密数据块;它是已知的,因此不需要存储在任何地方,但每个块之间也是不同的,因此相同的明文存储在磁盘上的不同位置时将导致截然不同的密文。
然而,这对文件系统完全透明。文件系统代码将在某处写入一些数据,并在提交到物理存储之前通过加密方法传递。文件系统只知道它正在将数据写入某个地方。在稍后的某个时刻,它将读回数据,并且块在传递到文件系统代码之前通过解密方法传递。
在这样的方案下,您从单个错误读取(或不可读)的物理存储块中丢失的最多数据是加密算法的放大属性将读取错误扩展到多少。
在这一点上,它归结为直接 I/O 错误与静默损坏(读回的数据不是最初打算写入的内容,这可能因多种原因而发生)的相对普遍性,以及数据块大小涉及。无论是否有 FDE,报告的 I/O 错误都没有什么不同,并且静默损坏可能会损坏整个数据块,而不是仅损坏块的一部分。
主要的例外是由弗罗斯特舒茨抚养长大,即(主要是)与加密相关的元数据。如果该文件损坏或无法读取,您将无法访问数据。但在没有加密的情况下也可以这样说;无论有或没有全盘加密,如果驱动器的重要部分无法访问,那么您将无法访问您的数据。不过,有人可能会说,使用 FDE 的后果更为严重。
如果您关心数据,无论是否有全盘加密,您都将拥有可靠的备份机制。如果你是真的如果担心数据,您将拥有在线冗余(例如 RAID 镜像或带冗余的条带化),此时整个问题就没有实际意义了:要么磁盘返回有效数据,要么在操作系统看到数据之前纠正错误。如果你不关心数据,然后继续工作,无需备份;但无论是否加密,数据丢失(除非 FDE 代码中存在彻底的软件错误)仍然会发生。
答案2
不,我的意思是,是的,我的意思是……两者都有一点。
如果某个块坏了,该块的数据就会消失。此时该块是否包含加密数据并不重要。这没有什么区别。
当然也有特殊情况。如果您的加密具有元数据标头(例如 LUKS),并且坏块恰好是保存您的加密密钥的块,那么该单个坏块可能会导致整个磁盘无法读取并且整个数据丢失。如果机器仍在运行并且容器已打开,请不要在未先写下密钥的情况下重新启动...(例如dmsetup table --showkeys
)。
但在未加密的情况下,同样的情况也可能发生在您身上。如果关键文件系统元数据损坏,您的文件可能会消失。像 PhotoRec 这样试图理解剩余明文数据的救援工具可能无法产生令人满意的结果(取决于您是否以已知格式存储文件、碎片等)。
最后,无论你做什么,你总是需要备份。毕竟,HDD 可能会完全死掉,而不是只是到处都有坏块。