Вопрос

Imagine there is a file of size 5 MB. I open it in write mode in C and then fill it up with junk data of exactly 5 MB. Will the same disk sectors previously used be overwritten or will the OS select new disk sectors for the new data?

Это было полезно?

Решение

It depends on the file system.

Classically, the answer would be 'yes, the same sectors would be overwritten with the new data'.

With journalled file systems, the answer might be different. With flash drive systems, the answer would almost certainly be 'no; new sectors will be written to avoid wearing out the currently written sectors'.

Другие советы

The filesystem could do anything it wishes. But any real file system will write the data back to the same sectors.

Image if it didn't. Every time your wrote to a file the file system would have to find a new free sector, write to that sector, then update the file system meta data for the file to point to the new sector. This would also cause horrible file fragmentation, because writing a single sector in the middle of your contiguous 5MB file would cause it to fragment. So it's much easier to just write back to the same sector.

The only exception I can think of is JFFS2 because it was designed to support wear leveling on flash.

Now the file system will write to the same sector, but the disk hardware could write anywhere it wants. In fact on SSD/flash drives the hardware, to handle wear leveling, is almost guaranteed to write the data to a different sector. But that is transparent to the OS/file system. (It's possible on hard drives as well due to sector sparing)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top