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, который оптимизировал программы на диске, размещая дефрагментированные программные файлы и их зависимости рядом друг с другом в том порядке, в котором программа их загружает, чтобы ускорить загрузку этих программ. [1] В Windows хороший дефрагментатор прочитает файлы предварительной выборки , чтобы идентифицировать как можно больше таких групп файлов, и поместит в них файлы в порядке доступа.

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

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

Разделение

Распространенной стратегией оптимизации дефрагментации и уменьшения воздействия фрагментации является разделение жесткого диска(ов) таким образом, чтобы отделить разделы файловой системы, на которые приходится гораздо больше операций чтения, чем операций записи, от более нестабильных зон, где файлы создаются и удаляются. часто. Каталоги, содержащие профили пользователей, постоянно изменяются (особенно в каталоге 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. Архивировано 6 октября 2010 г. в Wayback Machine . Cwdixon.com. Проверено 28 июля 2013 г.
  2. ^ The Ultimate Defragger - Место ЛаРуда. Ларуд.нет (19 января 2012 г.). Проверено 28 июля 2013 г.
  3. ^ "MyDefrag v4.2.8" . Архивировано из оригинала 16 февраля 2010 г. Проверено 14 августа 2014 г. На большинстве жестких дисков начало диска значительно быстрее конца, иногда даже на 200 процентов! Вы можете измерить это самостоятельно с помощью таких утилит, как *HD Tune. Таким образом, MyDefrag ориентирован на перемещение всех файлов в начало диска.
  4. ^ Сердар Егулалп (20 сентября 2005 г.). «Новые жесткие диски уменьшают необходимость дефрагментации диска». SearchWindowsServer.com: Краткое руководство по дефрагментации диска . Архивировано из оригинала 3 июня 2008 года . Проверено 27 декабря 2008 г.
  5. ^ «Windows XP: улучшения ядра создают более надежную, мощную и масштабируемую операционную систему - журнал MSDN, декабрь 2001 г.» Архивировано из оригинала 24 апреля 2003 г. Проверено 19 декабря 2006 г.msdn.microsoft.com: «Другим большим улучшением [в Windows XP] является поддержка онлайн-дефрагментации MFT и большинства метаданных каталогов и файлов»
  6. Генсельман, Скотт (3 декабря 2014 г.). «Реальная и полная история — дефрагментирует ли Windows ваш SSD?». Блог Скотта Хансельмана . Майкрософт . Архивировано из оригинала 22 декабря 2014 года.
  7. ^ Нортон, Питер (октябрь 1994 г.). Полное руководство Питера Нортона по DOS 6.22 . Сэмс. п. 521.
  8. ^ М. Козерок, Чарльз (17 апреля 2001 г.). «Версии NTFS». Руководство для ПК. Архивировано из оригинала 24 сентября 2015 г. Проверено 20 февраля 2015 г.
  9. ^ Сторонние инструменты дефрагментации диска для Windows. Архивировано 28 ноября 2011 г. на Wayback Machine . Support.microsoft.com (23 августа 2011 г.). Проверено 28 июля 2013 г.
  10. ^ «Дефрагментация диска - Предыстория и разработка улучшений Windows 7» . Архивировано из оригинала 13 июня 2014 г. Проверено 15 июня 2014 г.
  11. ^ «Новые параметры дефрагментации в Windows 8» . 13 ноября 2011 г. Архивировано из оригинала 20 февраля 2015 г. Проверено 15 июня 2014 г.
  12. ^ "Страницы руководства FreeBSD" . Проект FreeBSD. Архивировано из оригинала 21 февраля 2015 года . Проверено 21 февраля 2015 г.
  13. ^ «Ядро Linux 3.0, раздел 1.1. Btrfs: автоматическая дефрагментация, очистка, повышение производительности» . kernelnewbies.org . 21 июля 2011 г. Архивировано из оригинала 30 марта 2016 г. Проверено 5 апреля 2016 г.
  14. ^ «HTG объясняет: почему Linux не нуждается в дефрагментации» . Как компьютерщик . Архивировано из оригинала 19 июля 2013 г. Проверено 1 августа 2013 г.
  15. ^ 5.10. Файловые системы. Архивировано 27 мая 2013 г. на Wayback Machine . Tldp.org (09.11.2002). Проверено 22 июня 2013 г.
  16. ^ Эрик Бервальдт: Оптимизация организации данных на диске. Архивировано 6 сентября 2014 г. на Wayback Machine.
  17. ^ «Поддержка журналируемой файловой системы» . электростанция . Архивировано из оригинала 8 декабря 2008 г. Проверено 27 декабря 2008 г.
  18. ^ «Фрагментация в томах HFS Plus». Архивировано из оригинала 18 ноября 2012 года . Проверено 2 сентября 2020 г. Как мы видели, том HFS+, по-видимому, довольно хорошо противостоит фрагментации в Mac OS X 10.3.x, и я не считаю, что фрагментация является настолько серьезной проблемой, чтобы требовать превентивных мер (например, инструмента дефрагментации).
  19. ^ «Обнаружение точки фрагментации файла для восстановления фрагментированных файлов с использованием последовательной проверки гипотез». US8407192 B2. Архивировано из оригинала 21 февраля 2015 года . Проверено 21 февраля 2015 г.
  20. Ривз, Ник (26 октября 1990 г.). «Проектный документ формата Е». Архивировано из оригинала 7 апреля 2013 года . Проверено 24 мая 2013 г.

Источники

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