stringtranslate.com

Дефрагментация

Визуализация фрагментации , а затем дефрагментации

В обслуживании файловых систем дефрагментация — это процесс, который уменьшает степень фрагментации . Это достигается путем физической организации содержимого запоминающего устройства, используемого для хранения файлов, в наименьшее количество смежных областей (фрагментов, экстентов ). Она также пытается создать более крупные области свободного пространства с помощью уплотнения , чтобы воспрепятствовать возврату фрагментации. Некоторые утилиты дефрагментации пытаются хранить файлы меньшего размера в одном каталоге вместе, поскольку к ним часто обращаются последовательно.

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

Причины фрагментации

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

Пример

Примеры пяти состояний фрагментации

На пустом диске есть пять файлов, от A до E, каждый из которых использует 10 блоков пространства (в этом разделе блок является единицей распределения файловой системы ; размер блока устанавливается при форматировании диска и может быть любого размера, поддерживаемого файловой системой). На пустом диске все эти файлы будут выделены один за другим (см. пример 1 на изображении). Если файл B должен быть удален, есть два варианта: пометить пространство для файла B как пустое, чтобы использовать его снова позже, или переместить все файлы после B так, чтобы пустое пространство оказалось в конце. Поскольку перемещение файлов может занять много времени, если нужно переместить много файлов, обычно пустое пространство просто остается там, помеченным в таблице как доступное для новых файлов (см. пример 2 на изображении). [nb 1] Когда выделяется новый файл F, требующий 6 блоков пространства, его можно поместить в первые 6 блоков пространства, в котором ранее находился файл B, и 4 блока, следующие за ним, останутся доступными (см. пример 3 на изображении). Если добавляется еще один новый файл, G, и ему требуется всего 4 блока, он может занять пространство после F и перед C (пример 4 на изображении).

Однако если файл F затем необходимо расширить, есть три варианта, поскольку пространство, следующее сразу за ним, больше недоступно:

  1. Переместите файл F туда, где его можно создать как один непрерывный файл нового, большего размера. Это будет невозможно, если файл больше, чем наибольшее непрерывное пространство из доступных. Файл также может быть настолько большим, что операция займет нежелательно много времени.
  2. Перемещайте все файлы после F, пока один из них не освободит достаточно места, чтобы снова сделать его смежным. Это представляет ту же проблему, что и в предыдущем примере: если файлов мало или данных для перемещения немного, это не большая проблема, но если файлов тысячи или даже десятки тысяч, времени на перемещение всех этих файлов недостаточно.
  3. Добавьте новый блок в другом месте и укажите, что F имеет второй экстент (см. пример 5 на изображении). Повторите это сотни раз, и файловая система будет иметь несколько небольших свободных сегментов, разбросанных во многих местах, а некоторые файлы будут иметь несколько экстентов. Когда файл имеет много таких экстентов, время доступа к этому файлу может стать чрезмерно долгим из-за всех случайных поисков, которые диск должен будет выполнить при его чтении.

Кроме того, концепция «фрагментации» не ограничивается только отдельными файлами, имеющими несколько экстентов на диске. Например, группа файлов, обычно считываемых в определенной последовательности (например, файлы, к которым программа обращается при загрузке, которые могут включать определенные DLL , различные файлы ресурсов, аудиовизуальные медиафайлы в игре), может считаться фрагментированной, если они не находятся в последовательном порядке загрузки на диске, даже если эти отдельные файлы не фрагментированы ; головки чтения/записи должны будут искать эти (нефрагментированные) файлы случайным образом, чтобы получить к ним последовательный доступ. Некоторые группы файлов могли быть изначально установлены в правильной последовательности, но со временем разойтись, поскольку некоторые файлы в группе удаляются. Обновления являются распространенной причиной этого, поскольку для обновления файла большинство программ обновления обычно сначала удаляют старый файл, а затем записывают новый, обновленный на его место. Однако большинство файловых систем не записывают новый файл в то же физическое место на диске. Это позволяет несвязанным файлам заполнять оставшиеся пустые пространства.

Смягчение

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

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

Помимо дефрагментации программных файлов, дефрагментатор также может сократить время, необходимое для загрузки программ и открытия файлов. Например, дефрагментатор Windows 9x включал Intel Application Launch Accelerator, который оптимизировал программы на диске, размещая дефрагментированные программные файлы и их зависимости рядом друг с другом в том порядке, в котором программа их загружает, чтобы загружать эти программы быстрее. [1] В Windows хороший дефрагментатор будет читать файлы Prefetch , чтобы идентифицировать как можно больше таких групп файлов и размещать файлы внутри них в последовательности доступа.

В начале жесткого диска внешние дорожки имеют более высокую скорость передачи данных, чем внутренние. Размещение часто используемых файлов на внешних дорожках увеличивает производительность. [2] Сторонние дефрагментаторы, такие как MyDefrag, перемещают часто используемые файлы на внешние дорожки и дефрагментируют эти файлы. [3]

Улучшения в современных жестких дисках, такие как кэш RAM , более высокая скорость вращения пластин, очередь команд ( SCSI / ATA TCQ или SATA NCQ ) и большая плотность данных, в некоторой степени снижают негативное влияние фрагментации на производительность системы, хотя увеличение количества обычно используемых данных нивелирует эти преимущества. Однако современные системы получают огромную выгоду от огромных емкостей дисков, доступных в настоящее время, поскольку частично заполненные диски фрагментируются гораздо меньше, чем полные диски, [4] и на HDD высокой емкости тот же раздел занимает меньший диапазон цилиндров, что приводит к более быстрому поиску. Однако среднее время доступа никогда не может быть меньше половины оборота пластин, а вращение пластин (измеряемое в об/мин) является скоростной характеристикой HDD, которая испытала самый медленный рост за десятилетия (по сравнению со скоростью передачи данных и временем поиска), поэтому минимизация количества поисков остается выгодной в большинстве приложений с большим объемом памяти. Дефрагментация заключается именно в этом: обеспечение максимум одного поиска для каждого файла, при этом учитываются только поиски по несмежным дорожкам.

Разделение

Распространенной стратегией оптимизации дефрагментации и снижения влияния фрагментации является разбиение жесткого диска(ов) таким образом, чтобы отделить разделы файловой системы, которые испытывают гораздо больше операций чтения, чем записи, от более изменчивых зон, где файлы создаются и удаляются часто. Каталоги, содержащие профили пользователей, постоянно изменяются (особенно с каталогом Temp и кэшем веб-браузера, создающими тысячи файлов, которые удаляются за несколько дней). Если файлы из профилей пользователей хранятся на выделенном разделе (как это обычно делается в рекомендуемых файловых системах UNIX , где они обычно хранятся в разделе /var), дефрагментатор работает лучше, поскольку ему не нужно иметь дело со всеми статическими файлами из других каталогов. (В качестве альтернативы дефрагментатору можно указать просто исключить определенные пути к файлам.) Для разделов с относительно небольшой активностью записи время дефрагментации значительно сокращается после первой дефрагментации, поскольку в будущем дефрагментатору потребуется дефрагментировать только небольшое количество новых файлов.

Оффлайн дефрагментация

Наличие неперемещаемых системных файлов, особенно файла подкачки , может затруднить дефрагментацию. Эти файлы можно безопасно перемещать, когда операционная система не используется. Например, ntfsresize перемещает эти файлы для изменения размера раздела NTFS . Инструмент PageDefrag может дефрагментировать системные файлы Windows, такие как файл подкачки и файлы, в которых хранится реестр Windows , запускаясь во время загрузки до загрузки графического интерфейса. Начиная с Windows Vista эта функция не поддерживается полностью и не обновлялась.

В NTFS по мере добавления файлов на диск основная таблица файлов (MFT) должна увеличиваться для хранения информации о новых файлах. Каждый раз, когда MFT не может быть расширена из-за того, что на пути находится какой-либо файл, MFT приобретает фрагмент. В ранних версиях Windows ее нельзя было безопасно дефрагментировать, пока раздел был смонтирован, поэтому Microsoft написала жесткий блок в API дефрагментации . Однако, начиная с Windows XP , все большее число дефрагментаторов теперь могут дефрагментировать MFT, поскольку API дефрагментации Windows был улучшен и теперь поддерживает эту операцию перемещения. [5] Даже с учетом улучшений первые четыре кластера MFT остаются неперемещаемыми API дефрагментации Windows, в результате чего некоторые дефрагментаторы сохраняют MFT в двух фрагментах: первые четыре кластера там, где они были размещены при форматировании диска, а затем остальную часть MFT в начале диска (или там, где стратегия дефрагментатора считает это наилучшим местом).

Твердотельные диски

При чтении данных с обычного электромеханического жесткого диска контроллер диска должен сначала относительно медленно поместить головку на дорожку, где находится данный фрагмент, а затем подождать, пока пластина диска вращается, пока фрагмент не достигнет головки. Твердотельный накопитель (SSD) основан на флэш-памяти без подвижных частей, поэтому произвольный доступ к фрагменту файла на флэш-памяти не страдает от этой задержки, что делает дефрагментацию для оптимизации скорости доступа ненужной. Кроме того, поскольку флэш-память может быть записана только ограниченное количество раз, прежде чем она выйдет из строя, дефрагментация на самом деле вредна (за исключением смягчения катастрофического сбоя ). Однако Windows по-прежнему автоматически дефрагментирует SSD (хотя и менее энергично), чтобы не допустить достижения файловой системой максимального уровня фрагментации (когда метаданные не могут представлять больше никаких фрагментов файла). После достижения максимального предела фрагментации последующие попытки записи на диск терпят неудачу. [6]

Жесткие диски SMR

Хотя многие жесткие диски SMR принимают команду TRIM , жесткие диски SMR по-прежнему нуждаются в дефрагментации для повышения производительности. [ необходима цитата ]

Подход и дефрагментаторы по типу файловой системы

Утилита дефрагментации Windows

Смотрите также

Примечания

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

Ссылки

  1. ^ Cwdixon.com Архивировано 2010-10-06 на Wayback Machine . Cwdixon.com. Получено 2013-07-28.
  2. ^ The Ultimate Defragger - LaRud's Place. Larud.net (19.01.2012). Получено 28.07.2013.
  3. ^ "MyDefrag v4.2.8". Архивировано из оригинала 2010-02-16 . Получено 2014-08-14 . На большинстве жестких дисков начало жесткого диска значительно быстрее конца, иногда на целых 200 процентов! Вы можете измерить это самостоятельно с помощью таких утилит, как * HD Tune. Таким образом, MyDefrag ориентирован на перемещение всех файлов в начало диска.
  4. ^ Serdar Yegulalp (20 сентября 2005 г.). "Новые жесткие диски снижают потребность в дефрагментации диска". SearchWindowsServer.com: Краткое руководство по дефрагментации диска . Архивировано из оригинала 3 июня 2008 г. Получено 27 декабря 2008 г.
  5. ^ "Windows XP: улучшения ядра создают более надежную, мощную и масштабируемую ОС -- MSDN Magazine, декабрь 2001 г.". Архивировано из оригинала 24-04-2003 . Получено 19-12-2006 .msdn.microsoft.com: «Другим большим улучшением [в Windows XP] является поддержка онлайн-дефрагментации MFT и большинства метаданных каталогов и файлов»
  6. ^ Хансельман, Скотт (3 декабря 2014 г.). «Реальная и полная история — дефрагментирует ли Windows ваш SSD?». Блог Скотта Хансельмана . Microsoft . Архивировано из оригинала 22 декабря 2014 г.
  7. ^ Нортон, Питер (октябрь 1994 г.). Полное руководство Питера Нортона по DOS 6.22 . Сэмс. п. 521.
  8. ^ M. Kozierok, Charles (2001-04-17). "NTFS Versions". PC Guide. Архивировано из оригинала 2015-09-24 . Получено 2015-02-20 .
  9. ^ Сторонние инструменты дефрагментации диска для Windows Архивировано 28 ноября 2011 г. на Wayback Machine . Support.microsoft.com (23 августа 2011 г.). Получено 28 июля 2013 г.
  10. ^ "Дефрагментация диска – Предыстория и разработка улучшений Windows 7". Архивировано из оригинала 2014-06-13 . Получено 2014-06-15 .
  11. ^ "Новые параметры дефрагментации в Windows 8". 13 ноября 2011 г. Архивировано из оригинала 2015-02-20 . Получено 15-06-2014 .
  12. ^ "FreeBSD Man Pages". Проект FreeBSD. Архивировано из оригинала 21 февраля 2015 г. Получено 21 февраля 2015 г.
  13. ^ "Дефрагментация". Документация BTRFS . Получено 2024-07-26 .
  14. ^ "Администрация". Документация BTRFS . Получено 2024-07-26 .
  15. ^ "HTG объясняет: почему Linux не нужна дефрагментация". How-To Geek . Архивировано из оригинала 2013-07-19 . Получено 2013-08-01 .
  16. ^ 5.10. Файловые системы Архивировано 27.05.2013 на Wayback Machine . Tldp.org (09.11.2002). Получено 22.06.2013.
  17. ^ Эрик Бервальдт: Оптимизация организации данных на диске Архивировано 06.09.2014 на Wayback Machine
  18. ^ "Поддержка журнальной файловой системы". eComStation . Архивировано из оригинала 2008-12-08 . Получено 2008-12-27 .
  19. ^ "Фрагментация в томах HFS Plus". Архивировано из оригинала 18 ноября 2012 г. Получено 2 сентября 2020 г. Как мы видели, том HFS+, похоже, довольно хорошо противостоит фрагментации в Mac OS X 10.3.x, и я не думаю, что фрагментация станет настолько серьезной проблемой, чтобы требовать упреждающих мер (например, инструмента дефрагментации).
  20. ^ "Обнаружение точки фрагментации файла для реконструкции фрагментированных файлов с использованием последовательной проверки гипотез". US8407192 B2. Архивировано из оригинала 21 февраля 2015 г. Получено 21 февраля 2015 г.
  21. Reeves, Nick (26 октября 1990 г.). "E format design document". Архивировано из оригинала 7 апреля 2013 г. Получено 24 мая 2013 г.

Источники

Внешние ссылки