一般来说,块分配是文件系统中最昂贵的操作,因此文件系统会尽力避免它,特别是在可能的情况下重用块。这将意味着以下内容:
但是,它在很大程度上取决于文件系统内部。日志结构文件系统在整个分区中按顺序执行所有写入,因此使用这样的文件系统几乎可以保证新文件不会覆盖旧文件中的块。日志文件系统可以将文件内容复制到一个额外的结构(“日志”),除了实际的永久存储(取决于日志是扩展到文件内容,还是只是元数据)。一些文件系统还使用“阶段树”,可以将其视为日志结构的文件系统,使用树而不是列表;对于这些,可能会或可能不会发生覆盖。
需要考虑的重要一点是块分配策略不仅取决于文件系统,还取决于实现。例如,不能保证 Windows XP 和 Windows 7 在同一个 NTFS 文件系统上的行为相似。一个操作系统版本可能会发现保留旧块以“加速(重新)分配”是值得的,而另一个操作系统版本可能会采用另一种策略。这都是启发式的,经过调整和重新调整。因此,无法真正回答您关于“NTFS”的问题;人们不得不谈论“在 OS foobar 中实现的 NTFS,版本 42.17,构建 3891”。
此外,所有这些块都是操作系统看到的;实际上物理存储可能会有所不同,并且可以移动/复制数据。这是 SSD 中典型的磨损均衡算法。一般来说,在 SSD 上覆盖/粉碎文件是不可靠的(有关详细信息和指针,请参阅此答案)。但是磁盘也可能发生一些数据移动(特别是当检测到片状扇区时;重新映射是即时完成的,并且旧扇区永远保持不变)。
这基本上意味着文件粉碎不能很好地工作,因为它不能保证数据会被破坏。当其他方法失败或错误地未应用时,您应该仅将文件粉碎用作紧急措施。永久销毁文件的正确方法是:
- 整个磁盘的批发销毁,例如通过将其溶解在酸中。
- 加密:当数据被加密时,破坏密钥就足以使数据无法恢复。虽然这并不能完全解决问题(您仍然必须销毁数据元素),但它使问题变得更容易(密钥很小:销毁 128 位比销毁 128 GB容易得多)。
安全擦除,当磁盘正确实施时,与加密技巧一起使用。