-1

Вопрос вдохновлен этим GIF из Википедии:

(Источник: https://en.wikipedia.org/wiki/Defragmentation#/media/File:FragmentationDefragmentation.gif)

В гифке блоки (сектора?) перемещаются в свободное пространство и переставляются (дефрагментация).

Требуется ли свободное место?

2 ответа2

1

Из самой статьи вы получили GIF:

Для дефрагментации диска программное обеспечение для дефрагментации (также известное как "дефрагментатор") может перемещать файлы только в пределах доступного свободного пространства. Это интенсивная операция, и ее нельзя выполнить в файловой системе с небольшим свободным пространством или вообще без него. википедия-дефрагментация-смягчение

Для Windows XP Defrag требуется 15% свободного места на диске.

1

Есть два варианта дефрагментации. Вы можете сделать это Easy Way, или вы можете сделать это Good Way:

  1. Храните данные для перемещения и дефрагментации полностью в памяти. По сути, вы должны прочитать целые файлы, пока не освободите достаточно места, чтобы затем записать их обратно в непрерывный блок.

    • плюс в том, что он будет быстрее и не требует дополнительного места на диске
  2. Переместите данные в другое место на диске, затем переместите их назад, когда будет создан непрерывный блок, достаточно большой.

    • этот путь намного медленнее, поскольку данные должны многократно считываться и записываться в другом месте.

Вариант 1 потенциально не требует дополнительного места на диске, но также потенциально опасен.

  • Во время чтения и удаления файлов данные больше не существуют на диске. В случае отключения питания все файлы, которые были прочитаны, но не восстановлены на новом месте, будут потеряны, что может привести к катастрофическим последствиям.
  • Вы не представляете, насколько большой буфер вам может понадобиться для чтения файлов. У вас могут быть файлы объемом в несколько гигабайт, которые нужно переместить, или много маленьких файлов. Требуется либо возможность выделять потенциально бесконечные объемы памяти (расширение файла подкачки и ухудшение фрагментации), либо использовать фиксированный процент памяти. Если у вас фиксированный размер буфера, вы можете загрузить (и обрезать) часть файла, чтобы освободить место, но в итоге вы окажетесь в худшем положении, поскольку у вас могут быть пропущенные части файлов в случае сбоя питания, который, возможно, будет хуже, чем пропустить весь файл.

Вариант 2 всегда гарантирует, что ваши данные находятся на диске, особенно если вы сначала копируете, а затем удаляете блоки.

Так что да, для безопасной дефрагментации без угрозы катастрофической потери данных вам нужно свободное место на диске.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .