Фрагментация файлов является очень старой проблемой любой операционной системы на протяжении всей истории развития компьютерной индустрии, которая означает, что один логический файл, находясь вроде бы на одном жестком диске в виде логической единицы, на самом деле разобран на мелкие части. Mac OS X собственными средствами старается минимизировать фрагментацию файлов путем записи всех кусочков рядом если файл открыт, весит более 20МБ и содержит более восьми фрагментов. Правда, эта мера хороша для предотвращения фрагментации файлов, но не она не спасает от фрагментации свободного места на жестком диске.

Что это за фрагментация свободного места на диске?

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

А в чем, собственно, проблема, спросит любой маковод. Просто что в этом случае увеличивается время доступа к файлам как для записи, так и для чтения. А это отрицательно влияет как на состояние жесткого диска и воспроизводимый им шум, так и на скорость отклика системы. А так как Mac OS X достаточно сильно использует кэширование фалов, система будет попросту тормозить, поскольку кэш будет разбросан по всему жесткому диску.

Как увидеть фрагментацию свободного места на диске?

Если у вас закрались подозрения, что пора бы провести дефрагментацию, я предлагаю воспользоваться бесплатной консольной утилитой hsfdebug (ссылка в самом низу страницы). Файл hfsdebug кладем в любую директорию и в Терминале выполняем такую команду (потребуется ввести пароль администратора):

sudo путь к файлу/hfsdebug -0 | sort -n

Эта команда выведет на экран все блоки свободного пространства, сортируя по возрастанию. К примеру, у меня получилось очень много строк, примерно таких:

10391 0×134e488 0×1350d1e 40.59 MB
10993 0×11004e7 0×1102fd7 42.94 MB
11691 0×152cd74 0×152fb1e 45.67 MB
12229 0×26d1a05 0×26d49c9 47.77 MB
14537 0×2693cdc 0×26975a4 56.79 MB
24090 0×129b388 0×12a11a1 94.10 MB
57704 0×12a9b0c 0×12b7c73 225.41 MB
68490 0×133c5dc 0×134d165 267.54 MB
69680 0×12c82f7 0×12d9326 272.19 MB

Это значит, что наибольший «островок» свободного пространства равен 272.19 МБ и по-убывающей к самому маленькому в 100 КБ. В целом, это не удивительно, поскольку я достаточно часто ставил много разных приложений, качал из интернета файлы, удалял их. В общем, совершал достаточно много файловых операций и порядочно издеваюсь над Леопардом. Для наиболее любопытных можно воспользоваться еще одной командой, которая выводи процент фрагментации файлов (точнее, процент её НЕ-дефрагментированности).

sudo ./hfsdebug -f -t 5

Выполнение займет некоторое время, но в результате получится что-то вроде этого:

Out of 1214506 non-zero data forks total, 1209938 (99.624 %) have no fragmentation.
Out of 4135 non-zero resource forks total, 4074 (98.525 %) have no fragmentation.

Такие высокие проценты говорят о том, что Mac OS X отлично справляется со своими задачами и не допускает фрагментацию файлов.

Зачем еще требуется дефрагментация свободного места?

К примеру, если вы хотите создать раздел BootCamp, вам потребуется сплошной кусок свободного места на жестком диске. В противном случае пользователь просто будет уведомлен, что «Раздел не может быть создан, переустановите OSX и попробуйте снова». А все из-за того, что Mac OS X попросту не предоставляет инструмент для дефрагментации жесткого диска. В этом случае Apple рекомендует сделать полное резервное копирование данных, отформатировать жесткий диск, повторно установить операционную систему и восстановить файлы. На мой взгляд, не самое дружелюбное поведение ОС.

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

Инструменты для дефрагментации

Прежде чем переходить к дефрагментации, для увеличения эффекта можно воспользоваться, к примеру, утилитой Onyx для очистки системного и пользовательского кэша. А для самой дефрагментации можно использовать специальные утилиты.

iDefrag — утилита разработана специально для дефрагментации и предусматривает целый ряд алгоритмов для этого. К примеру «Compact», один из алгоритмов работы, размещает все файлы в начале диска, а свободное место — в конце. Эта процедура занимает минимальное время. Скачать демо-версию можно здесь. Стоит программа около 30$.

Drive Genius — более мощная программа, которая позволяет производить полный комплекс профилактических действий, работать с разделами на жестком диске и восстанавливать данные. На сайте программы написано, что технический персонал Apple использует утилиту для работы с проблематичным железом. Drive Genius стоит 99$.

TechTool Pro 5 — приложение претендует на роль универсального инструмента на Маке. Среди его функций есть и дефрагментация. TechTool Pro 5 стоит 98$.

А после дефрагментации можете попробовать заново посмотреть свободное пространство с помощью команды в Терминале — картина должна существенно измениться.


Читайте также: