Материалы о рабочей средеПравда о дефрагментации

Уэс Миллер (Wes Miller)

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

Если только ваш компьютер не стоит в углу и никогда не включается, информация на его жестком диске все больше и больше фрагментируется. Через несколько минут я покажу вам, как это происходит, а пока что позвольте предложить вам несколько фактов из истории дефрагментации.

Дефрагментация и ОС Windows NT

В ОС Windows NT® не было встроенной программы дефрагментации диска. В то время считалось, что такая программа и не нужна. В конце концов, файловая система NTFS создавалась с расчетом на оптимизацию, и для жесткого диска с этой файловой системой фрагментация была не столь вредна, как для жесткого диска с файловой системой FAT. Но со временем даже производительность жесткого диска с файловой системой NTFS может пострадать от неоптимального размещения файлов на диске. Потребность в дефрагментации стимулировала формирование рынка средств дефрагментации, созданных сторонними разработчиками. У ИТ-специалистов большой популярностью пользовалось программное обеспечение Diskeeper компании Executive Software (в настоящее время сменившей название на Diskeeper Corporation). Когда с появлением ОС Windows 2000 в операционной системе появилась поддержка средств дефрагментации, корпорация Майкрософт приобрела у компании Executive Software лицензию на используемую технологию. В ОС Windows® 2000 программа дефрагментации представляла собой подключаемый модуль для консоли управления Microsoft® (dfrg.msc), который можно было вызвать, щелкнув значок диска кнопкой мыши или вручную запустив файл defrag.exe из командной строки. Программа не позволяла запускать дефрагментацию по расписанию. Тем не менее, многие ИТ-специалисты создавали сценарии по автоматизации дефрагментации, используя встроенные в операционную систему средства. По сравнению с более ранней версией файл Defrag.exe в ОС Windows XP и Windows Server® 2003 был несколько усовершенствован и поддерживал некоторые возможности автоматизации. Но все равно для автоматизации процесса необходимо было написать соответствующий сценарий.

Некоторые компании, в том числе компания Winternals Software (где я работал раньше), разрабатывали корпоративное программное обеспечение для дефрагментации. Большинство таких программ работают сходным образом. Они включают централизованную консоль, агент, который работает с клиентскими ПК (все время или только по требованию) и схему, определяющую время и характер выполнения операции дефрагментации.

В ОС Windows Vista® средства дефрагментации жесткого диска компьютера продолжают традиции предыдущих операционных систем. В этой операционной системе оптимизирован дефрагментатор и поддерживаются новые возможности, например дефрагментация небольших фрагментов файлов (не более 64 МБ), что сокращает продолжительность дефрагментации, так как в этом случае не тратится время на большие фрагменты файлов. Механизм дефрагментации в ОС Windows Vista и Windows Server 2008 превосходит по мощности механизм дефрагментации, использованный в более ранних версиях ОС Windows. Кроме того, дефрагментация запускается автоматически, не требуя настройки расписания вручную. Однако если вы работаете в большой организации или хотите оптимизировать работу компьютеров, и для поставленных целей вам не хватает встроенных возможностей дефрагментации, вам, возможно, придется приобрести программное обеспечение другого разработчика. Как и в более ранних версиях, при дефрагментации больших томов, для которых активно используется сжатие NTFS, могут возникнуть некоторые трудности. В этом случае также стоит воспользоваться средствами дефрагментации других разработчиков.

Почему происходит фрагментация?

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

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

Представьте себе жесткий диск, на котором файлы организованы безупречным образом и расположены вплотную друг к другу, не оставляя в промежутках между собой свободного места на диске. Допустим, вы открываете файл, редактируете его и затем собираетесь его сохранить. Если объем файла увеличился, ОС Windows может либо сохранить целый файл в другом месте на диске (например, после файла N), либо сохранить после файла N только новые данные. В последнем случае файл 2 становится фрагментированным. Если далее изменить файл 1, получится уже два фрагментированных файла. Так постепенно, по мере редактирования других файлов, жесткий диск становится в значительной степени фрагментированным, и для доступа к определенному файлу приходится собирать такой файл по фрагментам, сохраненным в разных местах жесткого диска. Фрагментация типична для жестких дисков, на которых хранятся большие файлы баз данных, объемные файлы жесткого диска, используемые в виртуальной среде, и большое количество видео- и аудиофайлов. Конечно, фрагментация не так ощутима при использовании жестких дисков большой емкости, но сама по себе проблема фрагментации при увеличении объема жесткого диска не исчезает. Кроме того, в результате фрагментации заметно замедляется работа переносных компьютеров предыдущего поколения с жесткими дисками небольшой емкости: падает быстродействие системы, увеличивается продолжительность загрузки, а чтобы открыть или сохранить файл, требуется все больше времени.

Основная проблема даже не в том, насколько фрагментированным является жесткий диск в целом, а в том, насколько фрагментированными становятся отдельные файлы. С момента появления первых дефрагментаторов жестких дисков с цветными диаграммами, каждый пользователь мечтал, чтобы представленная диаграмма представляла собой прямоугольник одного цвета. Но самом деле пользователям нужно совсем не это. Некоторые решения дефрагментации пытаются привести жесткие диски в состояние двух монолитных блоков: цветной блок (данные файлов) и белый блок (свободное место на диске). К сожалению, это весьма неудачный результат, если вы преследуете цель максимально сократить частоту и затраты на дефрагментацию. Если вы произвели сжатие всех файлов, разместив их в одной части диска, практически не оставив там свободного места, при редактировании файлов изменения будут сохраняться в конце данных файла. Поэтому такая дефрагментация фактически приводит к фрагментации сразу же при следующем редактировании любого файла. Вместо двух четко организованных блоков жесткого диска, качественная дефрагментация не всегда представляет собой идеальную картинку. На рис. 1 представлена тестируемая система до дефрагментации. Теперь посмотрите на рис. 2, на котором изображена та же система после дефрагментации, выполненной ОС Windows.

Рис. 1 Жесткий диск до дефрагментации

Рис. 1** Жесткий диск до дефрагментации **(Щелкните изображение, чтобы увеличить его)

Рис. 2 Жесткий диск после дефрагментации

Рис. 2** Жесткий диск после дефрагментации **(Щелкните изображение, чтобы увеличить его)

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

Рис. 3 Отчет о дефрагментации

Рис. 3** Отчет о дефрагментации **

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

Важно проводить дефрагментацию регулярно

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

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

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

Figure 5 Мифы о дефрагментации

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

Figure 4 Распространенные проблемы дефрагментации

Проблема Вероятность
Снижение производительности системы. Высокая. Степень снижения производительности зависит от использования системы.
Проблематичность или невозможность восстановления случайно удаленных файлов. Высокая. Работа большинства средств восстановления файлов зависит от эвристики (необходимой для определения типа данных) и расстояния между файловыми кластерами. Если фрагменты файла расположены друг от друга далеко, операция восстановления может быть затруднена или невозможна.
Дефрагментация является дорогостоящей операцией. Средняя. Существует прямая пропорциональная зависимость между интенсивностью использования системы и объемом изменений файлов, происходящих с течением времени. Например, если пользователи часто редактируют файлы, но сохраняют их только в общих ресурсах сервера, фрагментация будет достаточно умеренной.
Может произойти повреждение жесткого диска. Низкая. Такое маловероятно. Чем интенсивнее вы используете компьютер (никогда не выключаете компьютер, часто редактируете, изменяете или удаляете файлы), тем больше вероятность, что это может произойти. Но уровень современного аппаратного обеспечения позволяет исключить вероятность повреждения жесткого диска просто из-за редактирования файла.
   

Дефрагментация как компонент инфраструктуры

Необходимо серьезно обдумать необходимость регулярной дефрагментации для всех компьютеров. Вы можете использовать дефрагментатор, встроенный в ОС Windows, или выбрать решение стороннего разработчика. В основном, выбор зависит от того, сколько дополнительной работы вы намерены выполнить. В ОС Windows XP и в более поздних версиях операционной системы можно добавить файл defrag.exe в качестве назначенного задания. В статье базы знаний support.microsoft.com/kb/555098 описывается, как это сделать. Дефрагментация переносного компьютера имеет ряд особенностей. С одной стороны, лучше проводить дефрагментацию жесткого диска, когда переносной компьютер включен (в идеале, когда он работает от сети). В то же время, нежелательно занимать ресурсы процессора или жесткого диска, когда пользователь работает. К сожалению, если пользователь не работает за переносным компьютером, компьютер, скорее всего, отключен от сети и находится либо в ждущем, либо в спящем режиме (при этом управление питанием и выполнение назначенных заданий невозможно). В компании Winternals (как, наверное, и в любой другой компании), мы потратили много времени, стараясь создать идеальный сценарий дефрагментации для пользователей переносных компьютеров. Если вы используете ОС Windows Vista, решением проблемы может выступить встроенный дефрагментатор и назначенные задания с улучшенным энергосбережением по сравнению с предыдущими версиями. Если этого недостаточно, придется воспользоваться решениями сторонних разработчиков для мобильных ПК. Некоторые из таких решений просто запускают операцию дефрагментации, уведомляют пользователя о том, что операция была выполнена, сообщают, когда она была выполнена (и как часто выполняется) и сколько времени для этого потребовалось.

Кроме выполнения дефрагментации жестких дисков мобильных ПК, иногда приходится решать проблемы фрагментации не только на уровне файловой системы. Эта проблема не возникает при работе с настольными или переносными ПК, но для серверов, Microsoft Exchange, SQL ServerTM или других хранилищ данных тоже может потребоваться дефрагментация. В этом случае надо решить, выполнять ли ее до или после дефрагментации файловой системы.

Если вы используете дефрагментатор другого разработчика, убедитесь, что он использует прикладной программный интерфейс дефрагментации Windows. Начиная с ОС Windows NT 4.0, в ОС Windows используется собственный программный интерфейс дефрагментации, позволяющий предотвратить непредвиденную потерю данных. Например, если в процессе перемещения файла отключается питание системы, мало приятного в том, что перемещение фрагмента не будет завершено и может привести к потере данных или даже невозможности загрузить операционную систему.

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

Дополнительные средства

Теперь вы уже наверняка признали важность и ценность дефрагментации. Даже если вы не используете средства дефрагментации сторонних производителей, возможно, вас заинтересует средство PageDefrag, разработанное Марком Русиновичем (Mark Russinovich), которое можно загрузить на веб-узле Microsoft Sysinternals (см. microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx). Как уже отмечалось выше, файл подкачки Windows нельзя дефрагментировать во время работы операционной системы. Точно так же дело обстоит с файлами реестра Windows и журналами событий. При помощи небольшого драйвера средство PageDefrag позволяет дефрагментировать эти заблокированные файлы до того, как ОС Windows закончит загрузку и заблокирует их. Чтобы воспользоваться этим драйвером, просто запустите средство PageDefrag и установите запуск средства при следующей загрузке или при каждой загрузке. При перезагрузке системы (в том месте, где раньше проводилась проверка диска) будет произведена дефрагментация файлов, указанных в списке (см. рис. 6).

Рис. 6 Файлы, дефрагментируемые при помощи средства PageDefrag

Рис. 6** Файлы, дефрагментируемые при помощи средства PageDefrag **

После завершения работы средства PageDefrag операционная система продолжит загрузку в нормальном режиме. Если вы хотели бы узнать больше о средстве PageDefrag, Лэнс Уитни (Lance Whitney) писал об этом средстве в сентябрьском выпуске «Обзора служебных программ» (см. technetmagazine.com/issues/2007/09/UtilitySpotlight). Средство PageDefrag поддерживается только в ОС Windows NT 4.0, Windows 2000, Windows XP и Windows Server 2003. В настоящее время оно не поддерживается в ОС Windows Vista.

Кроме средства PageDefrag, на веб-узле Sysinternals можно также загрузить другое средство Contig, которое позволяет вручную дефрагментировать конкретный файл (см. microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx). Оно может быть полезно, если при выполнении стандартной операции дефрагментации не удалось дефрагментировать определенный файл, или если после выполнения операции дефрагментации он снова стал фрагментированным, в отличие от остальных файлов тома.

Средство Contig также можно использовать для дефрагментации целого каталога или подкаталога, используя специальные шаблоны. Таким образом можно выполнить дефрагментацию всех файлов в каталоге ОС Windows, независимо от местоположения файлов.

Contig –s c:\Windows\*.*

При выборе параметра –v операция дефрагментации будет проходить явно, а при выборе команды –q она будет производиться в фоновом режиме.

Уэс Миллер (Wes Miller) — менеджер по разработке в компании Pluck (www.pluck.com), г. Остин, штат Техас. Ранее он работал в компании Winternals Software в том же городе, а также в должности руководителя программы и руководителя по продукту Windows в корпорации Майкрософт. Связаться с Уэсом можно по адресу technet@getwired.com.

© 2008 Корпорация Майкрософт и компания CMP Media, LLC. Все права защищены; полное или частичное воспроизведение без разрешения запрещено.