Требуется ли для дефрагментации жесткого диска хоть какое-то свободное место? Если да, то сколько?

591
potatoman

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

Требуется ли для дефрагментации жесткого диска хоть какое-то свободное место? Если да, то сколько?

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

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

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

0
Почему вы хотите дефрагментировать? Держите ваши pagefile.sys и hiberfil.sys в отдельном разделе user2497 6 лет назад 0
Почему вы не хотите дефрагментировать? Дефрагментация помогает чтению жесткого диска, не так ли? potatoman 6 лет назад 0
Да - я рекомендую вам настроить раздел 40-50 ГБ для данных подкачки и гибернации, поскольку подкачка особенно просто записывает куда угодно, ВСЕ по основному объему. Это преступник номер один. Я могу предоставить ссылку, или вы можете Google. Я могу рассказать вам, почему Microsoft пошла с моделью обмена файлами, но SE смягчает матом. hiberfil.sys по размеру не будет превышать ОЗУ, а pagefile.sys будет. user2497 6 лет назад 0
Какая ОС? Какая файловая система? Christopher Hostage 6 лет назад 0

2 ответа на вопрос

2
kai-dj

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

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

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

Это в целом хороший ответ, но мне любопытно, почему вы бы ссылались на Win XP, а не на более свежую версию. fixer1234 6 лет назад 0
Ну, я не был очень внимательным. Знаете ли вы, сколько требуется W10? potatoman 6 лет назад 0
Разве это не зависит от автора ответа, чтобы определить? Ramhound 6 лет назад 0
Я знал для XP, после того, как я перешел на Linux ^^ kai-dj 6 лет назад 2
1
Mokubai

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

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

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

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

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

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

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

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