Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DP_chornovik.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
7.32 Mб
Скачать

2.1.2. Ntfs

NTFS (від англ. New Technology File System — «файлова система нової технології») — стандартна файлова система для сімейства операційних систем Microsoft Windows NT. NTFS замінила файлову систему FAT, яка використовувалася в MS-DOS і попередніх до Windows NT версіях Microsoft Windows. NTFS підтримує систему метаданих і використовує спеціалізовані структури даних для зберігання інформації про файли для поліпшення продуктивності, надійності і ефективності використання дискового простору.

NTFS має вбудовані можливості розмежовувати доступ до даних для різних користувачів і груп користувачів, а також призначати квоти (обмеження на максимальний обсяг дискового простору, займаний тими чи іншими користувачами). NTFS використовує систему журналювання для підвищення надійності файлової системи. У Файловій системі NTFS відсутнє розділення на атрибути. Розрізняють декілька версій NTFS: v1.2 використовується в Windows NT 3.51 і Windows NT 4.0, v3.0 поставляється з Windows 2000, v3.1 — з Windows XP і Windows Server 2003. Іноді останні версії позначають як v4.0, v5.0 і v5.1 відповідно до версій Windows NT, з якими вони поставляються.

Файлова система NTFS є видатним досягненням структуризації: кожним елементом системи є файл - навіть службова інформація. Найголовніший файл на NTFS називається MFT, або Master File Table - загальна таблиця файлів. Саме він розміщується в MFT зоні і є централізованим каталогом решти всіх файлів диска, і, як не парадоксально, себе самого. MFT поділений на записі фіксованого розміру (зазвичай 1 Кбайт), і кожен запис відповідає якому або файлу (у загальному сенсі цього слова). Перші 16 файлів носять службовий характер і недоступні операційній системі - вони називаються метафайлами, причому найперший метафайл - сам MFT. Ці перші 16 елементів MFT - єдина частина диска, що має фіксоване положення. Цікаво, що друга копія перших трьох записів, для надійності - вони дуже важливі - зберігається рівно посередині диска. Решта MFT-файл може розташовуватися, як і будь-який інший файл, в довільних місцях диска - відновити його положення можна за допомогою його самого, зачепившись за саму основу - за перший елемент MFT.

Метафайли. Перші 16 файлів NTFS (метафайли) носять службовий характер. Кожен з них відповідає за який-небудь аспект роботи системи. Перевага настільки модульного підходу полягає у вражаючій гнучкості - наприклад, на Fat-і фізичне пошкодження в самій області FAT фатально для функціонування всього диска, а NTFS може змістити, навіть фрагментувати по диску, всі свої службові області, обійшовши будь-які несправності поверхні - окрім перших 16 елементів MFT. Метафайли знаходяться кореневому каталозі NTFS диска - вони починаються з символу імені "$", хоча отримати яку-небудь інформацію про них стандартними засобами складно. Цікаво, що і для цих файлів вказаний цілком реальний розмір - можна дізнатися, наприклад, скільки операційна система витрачає на каталогізацію всього вашого диска, подивившись розмір файлу $MFT. У наступній таблиці приведені використовувані в даний момент метафайли і їх призначення.

Отже, у системи є файли - і нічого окрім файлів. Що включає це поняття на NTFS? Перш за все, обов'язковий елемент - запис в MFT, адже, як було сказано раніше, всі файли диска згадуються в MFT. У цьому місці зберігається вся інформація про файл, за винятком власних даних. Ім'я файлу, розмір, положення на диску окремих фрагментів, і так далі Якщо для інформації не вистачає одного запису MFT, то використовуються декілька, причому не обов'язково підряд.

Опційний елемент - потоки даних файлу. По-перше, файл може не мати даних - у такому разі на нього не витрачається вільне місце самого диска. По-друге, файл може мати не дуже великий розмір. Тоді йде в хід досить вдале рішення: дані файлу зберігаються прямо в MFT, в місці, що залишилося від основних даних, в межах одного запису MFT. Файли, що займають сотні байт, зазвичай не мають свого "фізичного" втілення в основній файловій області - всі дані такого файлу зберігаються в одному місці - в MFT.

Досить цікаво йде справа і з даними файлу. Кожен файл на NTFS, загалом, має декілька абстрактна будова - у нього немає як таких даних, а є потоки (streams). Один з потоків і носить звичний нам сенс - дані файлу. Але більшість атрибутів файлу - теж потоки! Таким чином, виходить, що базова суть у файлу тільки одна - номер в MFT, а все решта опційно. Дана абстракція може використовуватися для створення досить зручних речей - наприклад, файлу можна "приліпити" ще один потік, записавши в нього будь-які дані - наприклад, інформацію про автора і зміст файлу, як це зроблено в Windows 2000 (найправіша закладка у властивостях файлу, що переглядаються з провідника). Цікаво, що ці додаткові потоки не видно стандартними засобами: спостережуваний розмір файлу - це лише розмір основного потоку, який містить традиційні дані. Можна, наприклад, мати файл нульової довгі, при стиранні якого звільниться 1 Гбайт вільного місця - просто тому, що яка-небудь хитра програма або технологія приліпила в йому додатковий потік (альтернативні дані) гігабайтного розміру. Але насправді у нинішній момент потоки практично не використовуються, так що побоюватися подібних ситуацій не слід, хоча гіпотетично вони можливі. Просто майте на увазі, що файл на NTFS - це глибше і глобальніше поняття, ніж можна собі уявити просто проглядаючи каталоги диска. Ну і наприкінці: ім'я файлу може містити будь-які символи, включаючи порожнистий набір національних алфавітів, оскільки дані представлені в Unicode - 16-бітовому уявленні, яке дає 65535 різних символів. Максимальна довжина імені файлу - 255 символів.

Каталоги. Каталог на NTFS є специфічним файлом, що зберігає посилання на інші файли і каталоги, створюючи ієрархічну будову даних на диску. Файл каталога поділений на блоки, кожен з яких містить ім'я файлу, базові атрибути і посилання на елемент MFT, який вже надає повну інформацію про елемент каталога. Внутрішня структура каталога є бінарним деревом. Ось що це означає: для пошуку файлу з даним ім'ям в лінійному каталозі, такому, наприклад, як у FAT, операційній системі доводиться проглядати всі елементи каталога, поки вона не знайде потрібний. Бінарне ж дерево розташовує імена файлів так, щоб пошук файлу здійснювався швидшим способом - за допомогою отримання двозначних відповідей на питання про положення файлу. Питання, на яке бінарне дерево здатне дати відповідь, таке: у якій групі, щодо даного елементу, знаходиться шукане ім'я - вище або нижче? Ми починаємо з такого питання до середнього елементу, і кожна відповідь звужує зону пошуку в середньому в два рази. Файли, скажімо, просто відсортовані за абеткою, і відповідь на питання здійснюється очевидним способом - порівнянням початкових букв. Область пошуку, звужена в два рази, починає досліджуватися аналогічним чином, починаючи знову ж таки з середнього елементу.

Журналювання. NTFS - відмовостійка система, яка цілком може привести себе в коректний стан при практично будь-яких реальних збоях. Будь-яка сучасна файлова система заснована на такому понятті, як транзакція - дія, що здійснюється цілком і коректно або не здійснюване взагалі. У NTFS просто не буває проміжних (помилкових або некоректних) станів - квант зміни даних не може бути поділений на до і після збою, приносячи руйнування і плутанину - він або здійснений, або скасований.

Приклад 1: здійснюється запис даних на диск. Раптом з'ясовується, що в те місце, куди ми тільки що вирішили записати чергову порцію даних, писати не вдалося - фізичне пошкодження поверхні. Поведінка NTFS в цьому випадку досить логічно: транзакція запису відкатується цілком - система усвідомлює, що запис не проведений. Місце позначається як збійне, а дані записуються в інше місце - починається нова транзакція.

Приклад 2: складніший випадок - йде запис даних на диск. Раптом, відключається живлення і система перезавантажується. На якій фазі зупинився запис, де є дані, а де нісенітниця? На допомогу приходить інший механізм системи - журнал транзакцій. Річ у тому, що система, усвідомивши своє бажання писати на диск, помітила в метафайлі $LogFile це свій стан. При перезавантаженні це файл вивчається на предмет наявності незавершених транзакцій, які були перервані аварією і результат яких непередбачуваний, - всі ці транзакції відміняються: місце, в яке здійснювався запис, позначається знову як вільне, індекси і елементи MFT приводяться в із стан, в якому вони були до збою, і система в цілому залишається стабільна. Ну а якщо помилка відбулася при записі в журнал? Теж нічого страшного: транзакція або ще і не починалася (йде тільки спроба записати наміри її провести), або вже закінчилася - тобто йде спроба записати, що транзакція насправді вже виконана. У останньому випадку при наступному завантаженні система сама цілком розбереться, що насправді все і так записано коректно, і не оберне уваги на "незавершену" транзакцію.

Потрібно все-таки пам'ятати, що журналювання - не абсолютна панацея, а лише засіб здатний істотно скоротити число помилок і збоїв системи. Навряд чи рядовий користувач NTFS хоч коли-небудь відмітить помилку системи або вимушений буде запускати chkdsk - досвід показує, що NTFS відновлюється в повністю коректний стан навіть при збоях в дуже завантажені дисковою активністю моменти. Ви можете навіть оптимізувати диск і в самий розпал цього процесу натиснути reset - вірогідність втрат даних навіть в цьому випадку буде дуже низка. Важливо розуміти, проте, що система відновлення NTFS гарантує коректність файлової системи, а не ваших даних. Якщо ви проводили запис на диск і отримали аварію - ваші дані можуть і не записатися.

Стиснення. Файли NTFS мають один досить корисний атрибут - "стислий". Річ у тому, що NTFS має вбудовану підтримку стиснення дисків - те, для чого раніше доводилося використовувати Stacker або Doublespace. Будь-який файл або каталог в індивідуальному порядку може зберігається на диску в стислому вигляді - цей процес абсолютно прозорий для додатків. Стиснення файлів має дуже високу швидкість і лише одна велика негативна властивість - величезна віртуальна фрагментація стислих файлів, яка, правда, нікому особливо не заважає. Стиснення здійснюється блоками по 16 кластерів і використовує так звані "віртуальні кластери" - знову ж таки граничне гнучке рішення, що дозволяє добитися цікавих ефектів, - наприклад, половина файлу може бути стисла, а половина - ні. Це досягається завдяки тому, що зберігання інформації про компресованість певних фрагментів дуже схоже на звичайну фрагментацію файлів: наприклад, типовий запис фізичної розкладки для реального, не стислого, файлу:

  • кластери файлу з 1 по 43-ій зберігаються в кластерах диска починаючи з 400-го;

  • кластери файлу з 44 по 52-ій зберігаються в кластерах диска починаючи з 8530-го ... ;

Фізична розкладка типового стислого файлу:

  • кластери файлу з 1 по 9-ій зберігаються в кластерах диска починаючи з 400-го;

  • кластери файлу з 10 по 16-ій ніде не зберігаються;

  • кластери файлу з 17 по 18-ій зберігаються в кластерах диска починаючи з 409-го;

  • кластери файлу з 19 по 36-ій ніде не зберігаються.

З основними перевагами та недоліками файлових систем FAT16, FAT32 та NTFS можна ознайомитися в таблиці (2.3).

Таблиця 2.3 - Порівняльна характеристика файлових систем.

FAT

FAT32

NTFS

Системи, що підтримують даний різновид ФС

DOS, Windows9Х, NT всіх версій

Windows98, NT5

NT4, NT5

Максимальний розмір тома

2 Гб

Майже без обмежень

Майже без обмежень

Максимальне число файлів в томі

Близько 65 тисяч

Майже без обмежень

Майже без обмежень

Ім’я файлу

З підтримкою імен - 255 символів, системний набір символів

З підтримкою довгих імен - 255 символів, системний набір символів

З підтримкою довгих імен - 255 символів, будь-які символи будь-яких алфавітів

Можливі атрибути файлу

Базовий набір

Базовий набір

Все, що прийде в геніальну голову виробникам ПЗ

Безпека

Ні

Ні

Так (починаючи з NT5.0 вбудована можливість фізично шифрувати дані)

Стиснення

Ні

Ні

Так

Стійкість до збоїв

Середня

Погана (засоби оптимізації по швидкості призвели до появи слабких місць.)

Повна – автоматичне відновлення системи при будь-яких збоях (окрім фізичних помилок запису, коли пишеться одне, а записується інше)

Продовження таблиці 2.3.

FAT

FAT32

NTFS

Економічність

Мінімальна (великі розміри кластерів на великих дисках)

Покращена за рахунок зменшення розмірів кластерів

Мінімальна (дуже ефективна і різнобічна система зберігання даних)

Швидкодія

Висока для малого числа файлів, але швидко зменшується з появою великої кількості файлів в каталогах.

Повністю аналогічно FAT, але на дисках великого розміру (десятки гігабайт) починаються серйозні проблеми із загальною організацією даних

Система не дуже ефективна для малих і звичайних розділів (до 1 Гбайт), але робота з величезними масивами даних і значними каталогами організована як не можна ефективніше і дуже сильно перевершує за швидкістю інші системи

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]