ntfs фрагментация

За съжаление не мога да дам източника на тази статия. Изгубен безвъзвратно.

NT има стандартен API за дефрагментиране. Той има интересно ограничение за преместване на блокове от файлове: можете да преместите поне 16 клъстера наведнъж (!) и тези клъстери трябва да започват от позиция, която е кратна на 16 клъстера във файла. Като цяло операцията се извършва изключително върху 16 клъстера. Последствия:

  • Нищо не може да бъде преместено в свободното пространство на по-малко от 16 клъстера (с изключение на компресирани файлове, но това са тънкости).
  • Файлът, преместен на друго място, оставя след себе си (в новото местоположение) , допълвайки го по размер до кратно на 16 клъстера.
  • Когато се опитате по някакъв начин неправилно ( ) да преместите файл, резултатът често е непредвидим. Някои неща се заоблят, други просто не се движат. Цялата сцена обаче се разпада пищно. Вероятно те се грижат за нас, така че да изостанем на това място - така че алгоритъмът за дефрагментиране да не се забие.
  • се освобождава след известно време, обикновено около половин минута. Боже

Въпреки това би било логично да използвате този API. И го използват. Следователно стандартният процес на дефрагментиране, коригиран за ограниченията на API, преминава през следните фази, не непременно в този ред:

  • Извличане на файлове от MFT зоната. Не нарочно - просто не е възможно да ги върнете там. Безвредна фаза и дори донякъде полезна.
  • Дефрагментиране на файл. Несъмнено полезен процес, макар и донякъде сложен от ограниченията върху множеството движения - файловете често трябва да се преместват по-силно, отколкото би било логично да се направи разумно.
  • Дефрагментиране на MFT, виртуална машина ( pagefile.sys ) и директории. Достъпно чрез APIсамо в Windows2000, иначе - при рестартиране, като отделен процес, както в Diskeeper.
  • Сгъването на файлове по-близо до началото е така нареченото дефрагментиране на свободното пространство. Това е наистина ужасен процес:

Да кажем, че искаме да поставим файлове в един ред в началото на диска. Пускам един файл. Оставя опашката на заетостта на събирането до кратност 16. Поставяме следващата - след опашката, разбира се. След известно време, след освобождаването на опашката, имаме дупка