Дефрагментация NTFS и EXT3
Среда, Октябрь 7, 2009 11:07
Вообще считается, что NTFS препятствует фрагментации. Но если быть точным можно сказать что фрагментация NTFS не сильно влияет на её производительность до поры до времени. От физического урона в виде лишних движений головок алгоритмы оптимизации, конечно, не спасают. Вообще диск под NTFS поделён на две зоны, это MFT (в этой зоне располагаются все данные о файлах и даже маленькие кусочки данных, то. Е. если файл достаточно маленький и может целиком поместиться в своей MFT зоне он пишется туда, в противном случае пишется в обычную зону данных.), которая занимает примерно 12% всего объёма, и всё остальное место для данных. Обычно запись в MFT невозможна и это препятствует фрагментации MFT, как следствие поиск-чтение большого количества файлов происходит быстрее. Когда диск заполняется и свободного места уже маловато, то MFT сокращается в два раза, плюс начинают заполняться дырки между уже стёртыми блоками данных. Всё это ведёт к тому, что при большом заполнении раздела его фрагментация резко возрастает. Фрагментации способствует и алгоритм нахождения свободного пространства: сначала данными заполняется всё пространство линейно до конца раздела, если данные продолжают поступать, то ищется самый большой промежуток между блоками, затем меньше и так далее до самого маленького пробела в один кластер.
В Windows присутствует стандартная утилита дефрагментации, но у ней есть некоторые ограничения. Любая операция по перемещению и поиску кластеров возможна только с числом кратным 16. Так на пример можно переместить за раз не более 16 кластеров с позиции кратной 16 кластерам в файле. С другой стороны в свободное пространство меньше 16 кластеров ничего нельзя записать.
Вывод: дефрагментация NTFS нужна, лучше всего её делать до заполнения раздела более чем на 90%, перед дефрагментацией нужно освободить примерно 20% свободного места, дефрагментацию лучше выполнять утилитами сторонних разработчиков, не использующих API от Windows.
EXT3 так же как и NTFS имеет алгоритмы противодействия фрагментации. При записи данных EXT3 выделяет блоки по 8 штук заранее Кеширование записи позволяет выстраивать данные перед записью из кеша в одну цепочку. С другой стороны есть и нерациональные моменты, на пример так как. Ext3 сохраняет данные из одного каталога в одной последовательности кластеров, то может получиться так, что будет получен фрагментированный кусок раздела, а рядом будет находиться свободное пространство. В зависимости от типа задач раздел может быть фрагментирован и при наличии свободного места. На пример интенсивно работающий почтовый сервер весьма неплохо фрагментирует данные, убедился на собственном опыте. Для оценки уровня фрагментации можно воспользоваться утилиткой ext2_frag.
Вот так выглядит проверка раздела на который изредка пишутся файлы размером примерно полтора – два гигабайта, типичная коллекция видео.
Summary for /dev/sda5 (block size 4096 bytes):
number of blocks files fragmented percent fragments/file
————————————————————–
1 1 0 0.00 1.00
<= 12 1 0 0.00 1.00
<= 524 0 0 0.00 0.00
<= 1036 0 0 0.00 0.00
<= 4108 0 0 0.00 0.00
> 4108 65 65 100.00 27.54
————————————————————–
all files 67 65 97.01 26.75
files > 1 block 66 65 98.48 27.14
Fragmentation index: 0.006 percent.
Вот так выглядит рабочий раздел активного почтового сервера.
Summary for /dev/sda2 (block size 4096 bytes):
number of blocks files fragmented percent fragments/file
————————————————————–
1 494015 0 0.00 1.00
<= 12 761875 24245 3.18 1.05
<= 524 70942 11974 16.88 2.21
<= 1036 1438 579 40.26 10.25
<= 4108 1031 555 53.83 21.36
> 4108 92 82 89.13 206.25
————————————————————–
all files 1329393 37435 2.82 1.13
files > 1 block 835378 37435 4.48 1.21
Fragmentation index: 1.705 percent.
Процент фрагментации небольшой но он весьма хорошо отличается у обоих разделов.
К сожалению мне не известно качественной программы для дефрагментации ext3. Единственное решение я вижу в этой ситуации это копирование данных на новый раздел.
Вывод: ext3 подвержена фрагментации, но степень фрагментации зависит типа задач выполняемых с разделом. Рекомендуется проверять степень фрагментации и при необходимости переносить данные в другое место, а раздел переформатировать.
