MFT та його структура - Студопедія
Файлова система NTFS є визначне досягнення структуризації: кожен елемент системи є файл – навіть службова інформація. Найголовніший файл на NTFS називається MFT, чи Master File Table – загальна таблиця файлів. Саме він розміщується в MFT зоні і є централізованим каталогом всіх інших файлів диска, у тому числі й себе самого. MFT поділений на записи фіксованого розміру (зазвичай 1 Кбайт), і кожен запис відповідає якомусь файлу (загалом цього слова). Перші 16 файлів носять службовий характер і недоступні операційній системі - вони називаютьсяметафайлами, причому найперший метафайл - сам MFT. Ці перші 16 елементів MFT – єдина частина диска, має фіксоване становище. Цікаво, що друга копія перших трьох записів для надійності (вони дуже важливі) зберігається рівно посередині диска. Решта MFT-файл може розташовуватись, як і будь-який інший файл, у довільних місцях диска – відновити його положення можна за допомогою його самого, «зачепившись» за саму основу - за перший елемент MFT.
Метафайли.Перші 16 файлів NTFS (метафайли) мають службовий характер. Кожен із них відповідає за будь-який аспект роботи системи. Перевага такого модульного підходу полягає в разючій гнучкості - наприклад, на FAT-е фізичне пошкодження в самій області FAT фатально для функціонування всього диска, а NTFS може змістити, навіть фрагментувати по диску, всі свої службові області, обійшовши будь-які несправності поверхні - крім перших 16 елементів MFT.
Метафайли знаходяться в кореневому каталозі NTFS диска – вони починаються із символу імені «$», хоча отримати будь-яку інформацію про них стандартними засобами складно.
Примітка. Для цих файліввказаний цілком реальний розмір – можна дізнатися, наприклад, скільки операційна система витрачає на каталогізацію всього диска, подивившись розмір файлу $MFT.
У наступній таблиці наведено метафайли та їх призначення.
| $MFT | сам MFT |
| $MFTmirr | копія перших 16 записів MFT, розміщена посередині диска |
| $LogFile | файл підтримки журналу |
| $Volume | службова інформація – мітка тому, версія файлової системи, т.д. |
| $AttrDef | список стандартних атрибутів файлів на томі |
| $. | кореневий каталог |
| $Bitmap | карта вільного місця тому |
| $Boot | завантажувальний сектор (якщо розділ завантажувальний) |
| $Quota | файл, у якому записані права користувачів використання дискового простору (почав працювати лише у NT5) |
| $Upcase | файл - таблиця відповідності великих і великих літер імен файлів на поточному томі. Потрібний в основному тому, що NTFS імена файлів записуються в Unicode, що становить 65 тисяч різних символів, шукати великі і малі еквіваленти яких дуже нетривіально. |
Файли і потоки. Отже, у системи є файли - і нічого крім файлів. Що включає це поняття на NTFS?
Насамперед, обов'язковий елемент – запис у MFT, у цьому місці зберігається вся інформація про файл, за винятком власне даних. Ім'я файлу, розмір, положення на диску окремих фрагментів і т.д. Якщо інформації бракує однієї записи MFT, то використовуються кілька, причому обов'язково поспіль.
Ім'я файлу може містити будь-які символи, включаючи порожній набір національних алфавітів, оскільки дані представлені вUnicode - 16-бітна вистава, яка дає 65535 різних символів. Максимальна довжина імені файлу – 255 символів.
Каталоги. Каталог на NTFS являє собою специфічний файл, що зберігає посилання на інші файли та каталоги, створюючи ієрархічну будову даних на диску. Файл каталогу поділений на блоки, кожен з яких містить ім'я файлу, базові атрибути та посилання на елемент MFT, який надає повну інформацію про елемент каталогу. Внутрішня структура каталогу є бінарним деревом. Ось що це означає: для пошуку файлу з даним ім'ям у лінійному каталозі, такому, наприклад, як у FAT-а, операційній системі доводиться переглядати всі елементи каталогу, доки вона не знайде потрібний. Бінарне ж дерево має у своєму розпорядженні імена файлів таким чином, щоб пошук файлу здійснювався більш швидким способом - за допомогою отримання двозначних відповідей на питання про положення файлу. Питання, на яке бінарне дерево здатне дати відповідь, таке: в якій групі, щодо даного елемента, перебуває шукане ім'я – вище чи нижче? Ми починаємо з такого питання до середнього елемента, і кожна відповідь звужує зону пошуку в середньому вдвічі. Файли, скажімо, просто відсортовані за абеткою, і відповідь на запитання здійснюється у очевидний спосіб – порівняння початкових букв. Область пошуку, звужена вдвічі, починає досліджуватися аналогічним чином, починаючи знову ж таки із середнього елемента.
Висновок – для пошуку одного файлу серед 1000, наприклад, FAT доведеться здійснити в середньому 500 порівнянь (найбільш ймовірно, що файл буде знайдено на середині пошуку), а системі на основі дерева – всього близько 10 (2^10 = 1024). Економія часу пошуку очевидна.

Журналювання. NTFS - відмовостійка система, яка цілком можепривести себе в коректний стан за практично будь-яких реальних збоїв. Будь-яка сучасна файлова система заснована на такому понятті, як транзакція - дія, що вчиняється цілком і коректно або не вчиняється взагалі. У NTFS просто не буває проміжних (помилкових або некоректних) станів - квант зміни даних не може бути поділений на до та після збою, приносячи руйнування та плутанину - він або скоєний, або скасований.
Приклад 1: здійснюється запис даних на диск. Раптом з'ясовується, що в те місце, куди ми тільки-но вирішили записати чергову порцію даних, писати не вдалося - фізичне пошкодження поверхні. Поведінка NTFS у разі досить логічно: транзакція запису відкочується цілком - система усвідомлює, що запис не проведено. Місце позначається як збійне, а дані записуються на інше місце - починається нова транзакція.
Приклад 2: складніший випадок - йде запис даних на диск. Раптом, бах - відключається живлення та система перезавантажується. На якій фазі зупинився запис, де є дані, а де нісенітниця? На допомогу приходить інший механізм системи – журнал транзакцій. Справа в тому, що система, усвідомивши своє бажання писати на диск, помітила в метафайлі $LogFile цей стан. При перезавантаженні цей файл вивчається на предмет наявності незавершених транзакцій, які були перервані аварією і результат яких непередбачуваний - всі ці транзакції скасовуються: місце, в яке здійснювався запис, позначається знову як вільне, індекси та елементи MFT наводяться у стан, в якому вони були до збою, і система загалом залишається стабільною.
Примітка. І все-таки пам'ятайте, що журналування - не абсолютна панацея, а лише засіб істотно скоротити кількість помилок та збоїв системи. Важливо розуміти, що системавідновлення NTFS гарантує коректність файлової системи, а чи не ваших даних. Якщо ви робили запис на диск і отримали аварію - ваші дані можуть і не записатися. Чудес не буває.
Стиснення. Файли NTFS мають один досить корисний атрибут – «стислий». Справа в тому, що NTFS має вбудовану підтримку стиснення дисків – те, для чого раніше доводилося використовувати спеціальні утиліти. Будь-який файл або каталог в індивідуальному порядку може зберігатися на диску в стислому вигляді - цей процес прозорий для додатків. Стиснення файлів має дуже високу швидкість і тільки одну велику негативну властивість - величезна віртуальна фрагментація стислих файлів, яка, щоправда, нікому особливо не заважає. Стиснення здійснюється блоками по 16 кластерів і використовує так звані «віртуальні кластери» - знову ж таки гранично гнучке рішення, що дозволяє досягти цікавих ефектів - наприклад, половина файлу може бути стиснута, а половина - ні.
Безпека. NTFS містить багато засобів розмежування прав об'єктів. Права файлової системи NTFS нерозривно пов'язані із самою системою - тобто вони, взагалі кажучи, необов'язкові до дотримання іншою системою, якщо їй дати фізичний доступ до диска.
Розробники операційних систем прагнуть забезпечити користувача можливістюпрацювати відразу з кількома файловими системами. У новому розумінні файлова система складається з багатьох складових, до яких входять і файлові системи в традиційному розумінні.
Нові файлові системи мають багаторівневу структуру, на верхньому рівні яких перемикач файлових систем, який називається встановлюваним диспетчером файлової системи - installable filesystem manager (IFS). Він забезпечує інтерфейс між запитами програми таконкретної файлової системою, до якої звертається. Перемикач файлових систем перетворює запити у формат, який сприймається наступним рівнем - рівнем файлових систем.
Кожен компонент рівня файлових систем виконаний у вигляді драйвера відповідної файлової системи та підтримує певну її організацію. Перемикач є єдиним модулем, який може звернутися до драйвера файлової системи. Програма не може звертатися до неї безпосередньо. Кожен драйвер файлової системи в процесі ініціалізації реєструється у перемикача, передаючи таблицю точок входу, які будуть використовуватися при наступних зверненнях.
Чи не знайшли те, що шукали? Скористайтеся пошуком: