Дефрагментация дисков – основные понятия и изменения в Windows 7

Одной из функций, которая, по мнению пользователей, нуждается в изменениях ( на одну лишь эту тему я получил более сотни сообщений ) , является утилита для дефрагментации . И мы выполнили это желание . У утилита долгая история, связанная с значительными проблемами с производительностью . Для многих она до сих пор остается загадкой. Поэтому пользователи решили, что если система не так шустра, как хотелось бы, необходимо запустить таинственный процесс дефрагментации . ВWindowsVistaбыло решено передать этот процесс автопилоту, чтобы вы навсегда позабыть о нем . На практике случилось так: если пользователь отключал на ночь компьютер, процедурадефрагментации так никогда и не запускалась . С момента выпуска WindowsVista мы получили массу отзывов пользователей, желающих знать больше о состоянии фрагментации диска , а такжеполучить полный контроль над самим процессом дефрагментации . И в сегодняшней статье мы поговорим об изменениях, внесенных в утилиту на базе полученных отзывов . При прочтении комментариев к статьям и электронных сообщений стало очевидным, что было бы неплохо углубитьсявдеталипроцесса , а также оценить ощущаемый и реальныйприростыпроизводительности от данных изменений . В качестве авторов статьи сегодня выступили Раджив Нагар ( RajeevNagar ) и Мэтт Гарсон ( MattGarson ) , являющиесяпрограммными менеджерами командыFileSystem . – Стивен

Сегодня речь пойдет о процессе дефрагментации дисков в Windows 7. Перед тем, как перейти к обсуждению нововведений в Windows 7, давайте немного поговорим о том, что такое фрагментация.

В ряду различных устройств хранения информации, наполняющих канал связи между жестким диском и процессором, жесткий диск является, пожалуй, менее скоростным по сравнению с другими устройствами и обладает более высокой латентностью. Показатели времени чтения/записи для жестких дисков измеряются в миллисекундах (как правило, 2-5 мс). Кажется, что быстро, но пока не сравнишь с циклом процессора с тактовой частотой в 2 ГГц, составляющим 10 нс, после которых информации оказывается в L1-кэше.

Эта брешь в производительности в течение двух последних десятилетий только лишь увеличивалась.

clip_image002

Рис.1 Увеличение производительности процессоров и дисков в последние годы

clip_image004

Рис.2 Улучшения производительности за счет различных технологий

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

Увеличению общей производительности системы ввода/вывода посвящена масса исследований, приведших к появлению двух принципов, которым ОС пытается соответствовать:

  1. Выполнять меньше операций ввода/вывода, то есть минимизировать количество обращений на чтение/запись на диск.
  2. При возникновении запроса на ввод/вывод передать данные большими порциями.

Правила весьма логичны и рациональны, поэтому понять их просто:

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

Такие файловые системы, как NTFS призваны соответствовать двум обозначенным правилам. Рассмотрим, к примеру, воспроизведение композиции «Hotel California», исполненной группой «The Eagles» (кстати, одна из моих любимых групп). Когда я впервые сохраняю mp3-файл объемом 5 Мб на диске, отформатированном под файловую систему NTFS, файловая система начинает искать свободное место для того, чтобы разместить 5 Мб данных рядом в одном месте. Логически связанная информация (например, содержимое одного файла или папки), как правило, читается/записывается приблизительно в одно и то же время. Обычно я слушаю «Hotel California» целиком, а не какую-то отдельную его часть. В ходе трехминутного воспроизведения компьютер будет последовательно подгружать с диска порции логически связанного контента (то есть частей файла) до тех пор, пока воспроизведение не завершится. Если система знает, что все порции файла расположены в одном месте, она может инициировать запросы больших объемов информации (с предварительной буферизацией данных, которые, по мнению системы, будут задействованы в ближайший момент времени), что позволяет минимизировать механические перемещения головки жесткого диска и, как следствие, сократить общий объем операций ввода/вывода.

Так почему же возникает явление фрагментации файлов, если файловая система стремится размещать информацию последовательно? Модификация хранящейся информации (добавление, изменение или удаление) приводит к изменениям в размещении информации на диске и может привести к его фрагментации. Так, к примеру, удаление файла приводит к перераспределению пространства и вызывает появление «дыр» на карте распределения блоков. Это явление носит название фрагментации доступного свободного пространства. С течением времени системе становится все трудней и трудней отыскивать последовательно расположенные свободные сектора, что ведет к фрагментации и новой информации. Очевидно, что процедура удаления является далеко не единственной причиной фрагментации: как говорилось выше, другие файловые операции, такие как редактирование или добавление новой информации к уже существующей, также приводят к возникновению этого неприятного явления.

Так каким же образом может помочь дефрагментация? Процедура дефрагментации позволяет размещать данные на жестком диске более оптимально и обладает следующими преимуществами:

  1. Весь логически связанный и ранее фрагментированный контент будет размещен по соседству
  2. Все свободное пространство также будет объединено, чтобы новый контент, записываемый на диск, был размещен более эффективно

Нижерасположенная диаграмма поможет проиллюстрировать то, о чем мы говорим. Первая иллюстрация отражает идеальное состояние диска – есть три файла (A, B и C), которые размещены в смежных секторах; фрагментации нет. Вторая иллюстрация показывает фрагментированный диск – порция данных, ассоциированных с файлом A, размещена не в смежном секторе (в связи с увеличением размера файла). Третья иллюстрация показывает, как будет выглядеть карта распределения после дефрагментации.

clip_image006

Рис. 3 Схема дефрагментации диска

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

В течением времени необходимость в дефрагментации лишь увеличивалась, поскольку исторически фрагментация была проблемой, которая оказывала серьезное влияние на производительность. На рассвете компьютерной эры, когда объемы дисков измерялись мегабайтами, они заполнялись гораздо быстрее, чем сейчас, поэтому фрагментация случалась гораздо чаще. Кэши памяти были весьма ограничены и отзывчивость системы в значительной степени зависела от производительности дисковой системы. Это привело к тому, что пользователям приходилось запускать процедуру дефрагментации еженедельно или даже чаще! Сегодня доступность дисков высокой емкости частично решила проблему фрагментации. Да и память стала более настолько доступной, что ее, как правило, достаточно для кэширования активно используемых данных. Все это вместе с изменениями в стратегии распределения данных, кэшированием и функциями предварительной выборки помогает увеличить общую отзывчивость системы. И хотя разрыв между скоростями процессора и диска продолжает увеличиваться, а фрагментация никуда не исчезает, программные и аппаратные технологии позволяют Windows нивелировать влияние фрагментации на производительность и увеличивают отзывчивость системы.

Как же оценивать фрагментацию на базе существующих программного и аппаратного обеспечений? Первый вопрос может звучать так: настолько часто случается фрагментацияи какие имеет масштабы? 500 Гб информации с 1% фрагментацией – это вовсе не одно и то же, что 500 Гб с 50% фрагментацией. Во-вторых, каковы реальные потери производительности от фрагментациина современных программном и аппаратном обеспечениях? Очень немногие сегодня помнят различные продукты, появлявшиеся в течение последних двух десятилетий и предлагавшие различные технологии увеличения производительности (например, дефрагментацию оперативной памяти, сжатие диска и т.д.), большая часть которых потеряла смысл ввиду преимуществ современных приложений и устройств.

Степень и масштаб фрагментации на обычных домашних компьютерах сильно разнится в зависимости от объемов применяемых дисков, заполнения дискового пространства и схем его использования. Другими словами, однозначного ответа нет. Количественное выражение влияния фрагментации на производительность ‑ вопрос весьма интересный, хотя его очень трудно рассчитать. Более-менее правдоподобная оценка потерь производительности от фрагментации требует следующего:

  • Доступности системы, которая с течением времени аккумулировала фрагментацию по типичной схеме использования. Но, как отмечено выше, нет единой схемы использования. Так, к примеру, частота и масштабы фрагментации компьютера, используемого исключительно для доступа к Интернету, будут существенно отличаться от таковых для файлового сервера.
  • Выбора корректных тестовых приложений, измеряющих дисковую производительность при первом и последующих запусках приложения.
  • Многократного повторения статистически значимых измерений.

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

В Windows XP любой файл, разбитый на несколько элементов, считается фрагментированным. В Windows Vista в случае, если фрагменты достаточно велики, все по-другому – алгоритм дефрагментации был изменен так, чтобы игнорировать фрагменты файла объемом более 64 Мб. В результате утилиты для дефрагментации в XP и Vista будут сообщать о различной степени фрагментации одного и того же тома. Какой результат считать правильным? Перед тем, как ответить на этот вопрос, нужно понять, почему процедура дефрагментации в Vista была изменена. В Vista мы проанализировали влияние дефрагментации и определили, что наибольшую выгоду от дефрагментации можно получить, когда фрагменты файлов объединены в довольно большие скопления. Влияние латентности диска в таком случае выглядит незначительно в сравнении с латентностью, связанной с последовательным чтением файла. Это значит, что существует такая точка, а точнее объем, после которого объединять фрагменты файла не имеет смысла. На самом деле, это оказывает негативное влияние на производительность. Например, для дефрагментации фрагментов объемом 64 Мб и более требуется значительное количество операций ввода/вывода, что противоречит одному из принципов, о которых говорилось выше, и файловая система нагружается поиском протяженных участков свободного пространства. В таком сценарии, когда небольшая фрагментация файлов не оказывает влияния на производительность, правильным ответом будет ничего не предпринимать!

Следует особо отметить, что несмотря на то, что понять концепцию фрагментации и ее влияния достаточно просто, на деле все оказывается гораздо сложнее, поскольку ее реальное влияние требует всеобъемлющей оценки системы. Отличия в реализации между Windows XP и Vista отражают оценку типичного программного и аппаратного обеспечений, используемых пользователями. В разговоре о дефрагментации важно понимать, что есть огромное количество факторов, которые влияют на отзывчивость системы и которые должны приниматься в расчет.

Механизм и сама процедура дефрагментации в Windows 7 основаны на кропотливом анализе влияния на отзывчивость системы.

В Windows Vista мы избавились ото всех элементов интерфейсов, которые информировали пользователя о статусе дефрагментации. Мы получили массу негативных отзывов по поводу этого решения, поэтому оценив все за и против, мы создали для дефрагментации новый графический интерфейс! В результате в Windows 7 вы можете наблюдать за процессом дефрагментации. Более того, при необходимости процедуру дефрагментации можно безопасно приостановить. Нижеприведенные снимки экранов иллюстрируют простоту наблюдения:

clip_image008

clip_image010

Рис. 4. Управление дефрагментацией

В Windows XP процедура дефрагментации могла быть запущена лишь самим пользователем, то есть возможности запуска по расписанию предусмотрено не было. Такая возможность была добавлена Windows Vista, но предложенная нами реализация не позволяла осуществлять одновременную дефрагментацию нескольких томов. В Windows 7 этого ограничения нет и теперь возможно дефрагментировать несколько томов одновременно! Представленные ниже иллюстрации показывают, каким образом можно планировать задачу дефрагментации нескольких дисков:

clip_image012

clip_image014

Рис. 5. Задание времени выполнения дефрагментации

Среди остальных изменений, скрытых в глубинах Windows 7, следует отметить следующие:

  • Дефрагментация в Windows 7 носит всеобъемлющий характер – многие файлы, которые в Windows Vista и более ранних версиях Windows по каким-либо причинам не могли быть перемещены, теперь могут быть дефрагментированы. В частности, это касается различных файлов с метаданными NTFS. Возможность перераспределения файлов с метаданными NTFS выгодна еще и тем, что освобождает некоторое пространство на диске, поскольку позволяет системе упаковывать системные файлы и файлы метаданными более плотно.
  • При обнаружении твердотельных дисков Windows автоматически отключает дефрагментацию на нем. Природа SSD-дисков такова, что дефрагментация им попросту не нужна, а в большинстве случаев и вредна, потому что сокращает срок работы.
  • По умолчанию дефрагментация на Windows Server 2008 R2 отключена. Принимая во внимание неоднородность рабочих нагрузок на сервер, дефрагментация должна включаться и настраиваться исключительно администратором, понимающим эти рабочие нагрузки.

Идеальным решением по использованию дефрагментации в Windows 7 является простое наблюдение за тем, как ОС все сделает сама! Дефрагментация настроена на периодический запуск в фоне с целью минимизировать ее влияние на системную производительность. Эффективное размещение данных на диске обеспечит максимальную отзывчивость системы и позволит наслаждаться бессмертным творением «The Eagles» безо всяких зависаний и замираний.

Радживи Мэтт