想象一下,有一个大小为5 MB的文件。我在C中以写入模式打开它,然后用正好5 MB的垃圾数据填充它。以前使用的相同磁盘扇区是否会被覆盖,或者OS会为新数据选择新的磁盘扇区吗?
答案 0 :(得分:4)
这取决于文件系统。
传统上,答案是肯定的,相同的扇区会被新数据覆盖。
使用邮件文件系统,答案可能会有所不同。对于闪存驱动器系统,答案几乎肯定是“不”;将编写新的部门,以避免磨损当前写入的部门。
答案 1 :(得分:3)
文件系统可以做任何想做的事情。但是任何真正的文件系统都会将数据写回相同的扇区。
图像,如果没有。每次写入文件时,文件系统都必须找到一个新的空闲扇区,写入该扇区,然后更新文件的文件系统元数据以指向新扇区。这也会导致可怕的文件碎片,因为在连续的5MB文件中间写一个扇区会导致碎片碎片。因此,回写同一扇区要容易得多。
我能想到的唯一例外是JFFS2,因为它旨在支持闪光灯的磨损均衡。
现在文件系统将写入同一扇区,但磁盘硬件可以在任何想要的地方写入。事实上,在SSD /闪存驱动器上,处理wear leveling的硬件几乎可以保证将数据写入不同的扇区。但这对OS /文件系统是透明的。 (由于sector sparing)
,它也可能在硬盘上