Dutchman » Ср ноя 10, 2004 12:26 am
Кстати. Залез-таки в Ы-нет дабы освежить и углубить:
О вреде:
<!--QuoteBegin-журнал ксакеп+--><div class='quotetop'>QUOTE(журнал ксакеп)</div><div class='quotemain'><!--QuoteEBegin-->
При создании NTFS утверждалось, что она не подвержена фрагментации, хотя, как ты правильно понял, это - полный бред. Фрагментации подвержено даже ОЗУ, где механики не было и в помине. Просто, в отличие от FAT, она не так катастрофически сказывается на скорости - дают о себе знать вышеописанные навороты с резидентными файлами, небольшим размером кластера и индексированием атрибутов. Однако от физического перемещения головок жесткого диска это не спасает. Особо плачевно сказывается на быстродействии файловой системы фрагментация MFT.
Как было отмечено ранее, при приближении степени заполнения жесткого диска к 88%, размер зоны MFT уменьшается в два раза, и - далее со всеми остановками. Фактически на диске получается несколько заходов окончания диска. Не препятствует (скорее наоборот) фрагментации использование зашифрованных, сжатых и разреженных файлов. И даже сама логическая организации записи как бы 'старается' увеличить фрагментацию: сначала заполняются большие дырки, потом - маленькие. На этом веселье не заканчивается, скорее, наоборот:
Встроенное в ХР стандартное API дефрагментации позволяет перемещать за один раз не менее 16 кластеров. Начинаться эти кластеры должны с позиции виртуального номера кластера, кратной 16. Эдакое любимое число <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo-->. И все это - независимо от файловой системы. В результате 100% дефрагментация стандартными средствами ХР становится, проще говоря, невозможной. Лично, так сказать, убедиться в этом можно, запустив слепок стандартного дефрагментатора dfrg.msc (свойства диска - сервис - дефрагментация).
Ну а в ожидании, пока Microsoft исправит эту проблему, остается порекомендовать воспользоваться утилитами сторонних разработчиков, вроде Diskeeper.
<!--QuoteEnd--></div><!--QuoteEEnd-->
<!--QuoteBegin-статья+ про которую я говорил--><div class='quotetop'>QUOTE(статья @ про которую я говорил)</div><div class='quotemain'><!--QuoteEBegin-->В NT существует стандартное API дефрагментации. Обладающее интересным
ограничением для перемещения блоков файлов: за один раз можно перемещать
не менее 16 кластеров (!), причем начинаться эти кластеры должны с
позиции, кратной 16 кластерам в файле. В общем, операция осуществляется
исключительно по 16 кластеров. А из этого следует вот что:
В дырку свободного места менее 16 кластеров нельзя ничего переместить
(кроме сжатых файлов, но это неинтересные в данный момент тонкости).
Файл, будучи перемещенный в другое место, оставляет после себя (на новом
месте) "временно занятое место", дополняющее его по размеру до кратности
16 кластерам.
При попытке как-то неправильно ("не кратно 16") переместить файл,
результат часто непредсказуем. Что-то округляется, что-то просто не
перемещается… Тем не менее, всё место действия щедро рассыпается
"временно занятым местом" ("временно занятое место" служит для
облегчения восстановления системы в случае аппаратного сбоя и
освобождается через некоторое время, обычно где-то пол минуты).
Тем не менее, логично было бы использовать этот API, раз он есть. Его и
используют. И этот процесс дефрагментации состоит из следующих фаз:
Вынимание файлов из MFT зоны. Не специально – просто вернуть их туда
обратно не представляется возможным. Безобидная фаза, и даже в чем то
полезная.
Дефрагментация файлов. Безусловно, полезный процесс, несколько, правда,
осложняемый ограничениями кратности перемещений - файлы часто приходится
перекладывать сильнее, чем это было бы логично сделать по уму
Дефрагментация MFT, файла виртуальной памяти (pagefile.sys) и каталогов.
Возможна через API только в Windows2000, иначе - при перезагрузке,
отдельным процессом.
Складывание файлов ближе к началу - так называемая дефрагментация
свободного места. Вот об этом страшном процессе подробнее.
Допустим, мы хотим положить файлы подряд в начало диска. Кладем один
файл. Он оставляет хвост занятости дополнения до кратности 16. Кладем
следующий - после хвоста, естественно. Через некоторое время, по
освобождению хвоста, имеем дырку размером менее 16 кластеров, которую
потом невозможно заполнить через API дефрагментации! В результате, до
оптимизации картина свободного места выглядела так: много дырок примерно
одинакового размера. После оптимизации - одна дыра в конце диска, и
много маленьких (менее 16 кластеров) дырок в заполненном файлами
участке. Какие места в первую очередь заполняются? Правильно,
находящиеся ближе к началу диска мелкие дырки менее 16 кластеров. Любой
файл, плавно созданный на прооптимизированном диске, будет состоять из
дикого числа фрагментов, что потребует очередной оптимизации диска уже
через неделю! Таким образом, имеется два примерно равнозначных варианта.
Первый - часто оптимизировать диск таким дефрагментатором, смирясь при
этом с дикой фрагментацией заново созданных файлов. Второй вариант -
вообще ничего не трогать, и смириться с равномерной, но гораздо более
слабой фрагментацией всех файлов на диске. Но есть еще один способ –
использовать дефрагментатор, который игнорирует API. На сегодняшний день
существует один такой дефрагментатор – Norton SpeedDisk 5.x для NT. Все
остальные дефрагментаторы при одноразовом применении просто вредны. Если
вы запускали его хоть раз - нужно запускать его потом хотя бы раз в
месяц, чтобы избавится от фрагментации новоприбывающих файлов. В этом и
состоит основная суть сложности фрагметирования и дефрагментирования
файлов.
<!--QuoteEnd--></div><!--QuoteEEnd-->
Промежуточный вывод. Пересказ мой далек от исходного варианта.
О проблемах при заполнении диска:
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->Диск NTFS поделен на две зоны. В начала диска идет MFT зона - зона, куда растет MFT, Master File Table. Зона занимает минимум 12% диска, и запись данных в эту зону невозможна. Это сделано для того, чтобы не фрагментировался хотя бы MFT. Но когда весь остальной диск заполняется - зона сокращается ровно в два раза. И так далее. Таким образом мы имеем не один заход окончания диска, а несколько. В результате если NTFS работает при диске, заполненном на около 90% - фрагментация растет как бешенная.
Попутное следствие - диск, заполненный более чем на 88%, дефрагментировать почти невозможно - даже API дефрагментации не может перемещать данные в MFT зону. Может оказаться так, что у нас не будет свободного места для маневра.
Далее. NTFS работает себе и работает, и всё таки фрагментируется - даже в том случае, если свободное место далеко от истощения. Этому способствует странный алгоритм нахождения свободного места для записи файлов - второе серьезное упущение. Алгоритм действий при любой записи такой: берется какой-то определенный объем диска и заполняется файлом до упора.<!--QuoteEnd--></div><!--QuoteEEnd-->
До кучи из серии типс и трикс <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo-->:
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->Запустить процесс можно также из командной строки, вы будете лишены GUI, но процесс будет идти быстрее. Для этого в командной строке необходимо выполнить команду defrag.exe
<!--QuoteEnd--></div><!--QuoteEEnd-->
Глобальный вывод: нефиг диск до упора забивать.
Следствие: это не жизнь такая, это аниме много <!--emo&:)-->[img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]<!--endemo-->
Из следствия дилемма: когда только отсматривать успеваешь?
Возьмите листок и ручку, запишите все свои планы, после чего половину из них зачеркните. И забудьте.