硬盘大小:100GB,它确实包含一堆不同兆字节大小的文件,这些文件都是在不同时间添加的,并且随着时间的推移而积累......它们都被删除了......
然后,我将 25GB 的数据(大小为 mbs 的小文件)复制到空驱动器上...
哪些已删除的文件会首先被覆盖?是最后添加的文件还是最先添加的文件?还是驱动器会将所有文件分散到 100GB 空间内的随机位置。
那么,是随机删除的文件,无论添加日期如何都会被覆盖,还是最早添加的已删除文件会先被覆盖?
答案1
硬盘(无论是 HDD 还是 SSD)根本不理解文件的概念。它们只存储字节序列,这就是它们所关心的一切。[1]
硬盘通常会进行分区,并使用所选文件系统 (FS) 对分区进行格式化。[2]决定文件存储方式和位置的文件系统。
你的问题的答案是:这取决于。
文件系统并不关心文件何时被创建或删除。一旦被删除,它就不再存在,文件系统会将其视为垃圾字节,而不是文件。
此外,文件并不是连续存储的:单个文件可能会被分割成多个块并分散在整个分区中。文件系统的工作就是动态地重新组装它,这样操作系统就不会意识到它一开始就被分割了。与直觉相反,它实际上可能会提高性能:受控碎片化可用于促进 HDD 盘片外部提供更好的读写速度,并避免 FS 被迫以次优方式对文件进行碎片化的情况,因为它无法将其放入磁盘的任何理想部分。
特定文件系统的写入模式在特定情况下可能是可预测的,但在一般情况下并非如此。特定文件的大小和存储它们的顺序都会影响它。存储新文件时,文件系统不会考虑它要使用的空间是否被使用过;它不会优先选择以前使用过的地址而不是“干净”的地址,反之亦然。一旦文件被删除,FS 会将其占用的空间视为从未使用过的空间。
[1] 现代驱动器具有额外的抽象层,因此实际用于存储这些字节的区域可能不是连续的或不连续的(例如,由于 HDD 中的坏块重新映射和 SSD 中的磨损均衡)。不过,这对于问题的范围并不重要,我们只说所有硬盘都作为可以存储大量可靠寻址的连续字节的设备暴露给其他硬件和操作系统。
[2] 现代 Windows 版本在操作系统分区上使用 NTFS,在其他分区上使用 NTFS 或 FAT32。闪存盘通常使用 FAT32,有时也使用 exFAT。Linux 通常使用 ext4 文件系统。Apple 之前使用 HFS+,现在正在迁移到 APFS。还有一些用于特殊用例的文件系统,例如面向可扩展性的 Btrfs 和 ZFS,它们被设计为一体化故障安全数据存储解决方案。
答案2
虽然在这种情况下它不是真正随机的,但实际上它是随机的。但请注意,即使目录已被覆盖,有时搜索整个磁盘的程序也可以找到文件。虽然我在软盘时代曾目测过这样的事情,但只有文件具有某种签名才可行。