Структура тому з файловою системою NTFS.

Розглянемо тепер структуру файлової системи NTFS. Ми тут зачепим тільки основні моменти. Одним з основних понять, використовуваних при роботі з NTFS, є поняття тому (volume). Можливо також створення відмовостійкого тому, що займає кілька розділів, тобто використання RAID-технології. Як і багато інших систем, NTFS поділяє весь корисний дисковий простір тому на кластери — блоки даних, адресуємі як одиниці даних. NTFS підтримуєрозміри кластерів від 512 байт до 64 Кбайт; стандартом же вважається кластер розміром 2 чи 4Кбайт.

Весь дисковий простір у NTFS поділяється на дві нерівні частини (рис.12.1). Перші 12 % диска приділяються під так звану MFT-зону — простір, що може займати, збільшуючись у розмірі, головний службовий метафайлMFT(master file table — це спеціальний файл, головна системна структура даних, яка і дозволяє визначати місцезнаходження всіх інших файлів). Запис яких-небудь даних у цю область неможлива. МFТ-зона завждитримається порожньою - це робиться для того, щоб самий головний, службовий файл(MFT) по можливості не фрагментувавсяпри своєму росту. Інші 88 % тому являють собою звичайний простір для збереження файлів.

Рис. 12.1. Структура тому NTFS.

MFT (master file table, загальна таблиця файлів) являє собою централізований каталог всіх інших файлів диску, у тому числі і себе самого. MFT поділений на записи фіксованого розміру в 1 Кбайт, і кожен запис відповідає якому-небудь файлу (у загальному значенні цього слова). Перші 16 файлів носять службовий характер і недоступні операційній системі — вони називаються метафайлами, причому найперший метафайл — сам MFT. Ці перші 16 елементів MFT — єдина частина диска, що має строго фіксоване положення. Копія цих же 16 записів зберігається в середині тому для надійності, оскільки вони дуже важливі. Інші частини MFT-файлу можуть розташовуватися як і будь-який інший файл, у довільних місцях диску — відновити його положення можна за допомогою його самого, «зачепивши» за саму основу — за перший елемент MFT.

Згадані перші 16 файлів NTFS (метафайли) носять службовий характер кожний з них відповідає за який-небудь аспект роботи системи. Метафайли знаходяться в кореневому каталозі NTFS-тому. Усі вони починаються із символу імені «$», хоча одержати яку-небудь інформацію про них стандартними засобами складно. У табл.12.1 приведені основні відомі метафайли і їхнє призначення. Таким чином, можна довідатися, наприклад, скільки операційна система витрачає на каталогізацію тому, подивившись на розмір файлу $MFT.

Таблиця 12.1. Метафайли NTFS

Ім‘я метафайла   Призначення метафайла
$MFT Сам Master File Table
$MFTmirr Копія перших 16 записів MFT, яка розміщена посередині тому
$LogFile Файл підтримки операцій журналювання
$Volume Службова інформація — мітка тому, версія файлової системи і т. д.
$AttrDef Список стандартних атрибутів файлів на томі
  Кореневий каталог
$Bitmap Карта вільного місця тому
$Boot Завантажуючий сектор (якщо розділ завантажуючий)
$Quota Файл, в якому записані права користувачів на використання дискового простору (цей файл почав працювати тільки в Windows 2000 з системою NTFS 5.0)
  $Upcase Файл – таблиця відповідності заглавних і прописних букв в іменах файлів. В NTFS імена файлів записуються в Unicode (що складає 65 тисяч різних символів) і шукати великі і малі еквіваленти в даному випадку – нетривіальна задача

 

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

Файл у томі з NTFS ідентифікується так званим файловим посиланням (File Referens), яке представлене як 64-розрядне число. Файлове посилання складається з номера файлу, що відповідає позиції його файлового запису в MFT, і номера послідовності. Останній збільшується всякий раз, коли дана позиція MFT використовується повторно, що дозволяє файловій системі NTFS виконувати внутрішні перевірки цілісності.

Кожен файл у NTFS представлений за допомогою потоків (streams), тобто в нього немає «просто даних» як таких, а є «потоки». Для правильного розуміння досить вказати, що один з потоків і носить звичний нам зміст – дані файлу. Але більшість атрибутів файлу - це теж потоки. У такий спосіб виходить, що базова сутність у файлі тільки одна - номер у MFT, а все інше, включаючи і його потоки, - опційно. Даний підхід може ефективно використовуватися - наприклад, файлу можна «приліпити» ще один потік, записавши в нього будь-які дані. У Windows 2000 у такий спосіб записана інформація про автора і зміст файлу (одна з закладок у властивостях файлу, що переглядаються, наприклад, із провідника). Цікаво, що ці додаткові потоки не видні стандартними засобами роботи зфайлами:
розмір основного потоку, що спостерігається, що містить традиційні дані. Можна, приміром, мати файл нульової довжини, при стиранні якого звільниться 1 Гбайт вільного місця - просто тому, що яка-небудь хитра програма чи технологія «приліпила» до нього додатковий потік (альтернативні дані) такого великого розміру. Але насправді в даний час потоки практично не використовуються, так що побоюватися подібних ситуацій не потрібно, хоча гіпотетично вони можливі. Просто необхідно мати на увазі, що файл у NTFS — це більш глибоке поняття, чим можна собі представити, переглядаючи каталоги диска.

Стандартні ж атрибути для файлів і каталогів у томі NTFS мають фіксовані імена і коди типу, вони перераховані в табл.12.2.

 

Таблиця 12.2. Атрибути файлів в системі NTFS

Системний атрибут Опис атрибута
Стандартна інформація про файл Традиційні атрибути Read Only, Hidden, Archive, System, відмітки часу, включаючи час створення або останньої модифікації, число каталогів, які посилаються на файл
Список атрибутів Список атрибутів, з яких складається файл, і файлове посилання на файловий запис і MFT, в якому розміщений кожен з атрибутів. Останній використовується, якщо файлу необхідно більше одного запису в MFT
Ім‘я файлу Ім‘я файлу в символах Unicode. Файл може мати декілька атрибутів – імен файлу, подібно тому як це має місце в UNIX-системах. Це трапляється, коли є зв‘язок POSIX з даним файлом або, якщо в файла є автоматично згенероване ім‘я в форматі 8.3
Дескриптор захисту Структура даних захисту (ACL), охороняючи файл від несанкціонованого доступу. Атрибут “дескриптор захисту” визначає, хто господар цього файлу і хто має доступ до нього
Дані Дані файлу. В NTFS в файлі по замовчуванню є один безіменний атрибут даних, і він може мати доповнюючи іменовані атрибути даних. В каталогу немає атрибуту даних по замовчуванню, але він може мати необов‘язкові іменовані атрибути даних
Корінь індексу, розміщення індексу, бітова карта (тільки для каталогів)   Атрибути, які використовуються для індексів імен файлів у великих каталогах
Розширені атрибути HPFS Атрибути, які використовуються для реалізації розширених атрибутів HPFS для підсистеми OS/2 і OS/2-клієнтів файл-серверів Windows NT

 

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

Ім'я файлу в NTFS, на відміну від файлових систем FAT і HPFS, може містити будь-які символи, включаючи повний набір національних алфавітів, тому що дані представлені в Unicode — 16-бітному представленні, що дає 65 535 різних символів. Максимальна довжина імені файлу в NTFS — 255 символів.

Великий внесок в ефективність файлової системи вносить організація каталогу. Каталог у NTFS являє собою спеціальний файл, що зберігає посилання на інші файли і каталоги, створюючи ієрархічну будову даних на диску. Файл каталогу поділений на блоки, кожний з який містить ім'я файлу, базові атрибути і посилання на елемент MFT, що вже надає повну інформацію про елемент каталогу. Головний каталог диска — кореневий — нічим не відрізняється від звичайних каталогів, крім спеціального посилання на нього з початку метафайла MFT.

Внутрішня структура каталогу являє собою бінарне дерево, подібно тому як це організовано в HPFS. До речі, при створенні файлової системи NTFS розроблювачі вирішили використовувати максимально можливу кількість ефективних рішень з HPFS. На жаль, не було взято на озброєння розбивку всього дискового простору на зони, у кожній з який зберігалася б інформація про наявні вільні кластери. У результаті відмовлення від цього підходу і введення механізму транзакцій, швидкість роботи файлової системи NTFS істотно нижче швидкості роботи системи HPFS.

Отже, як нам тепер відомо, бінарне дерево каталогу розташовує імена файлів таким чином, щоб пошук файлу здійснювався за допомогою одержання двохзначних відповідей на питання про положення файлу. Бінарне дерево здатне дати відповідь на питання: у якій групі, щодо даного елемента, знаходиться шукане ім'я — вище чи нижче? Ми починаємо з такого питання до середнього елемента, і кожна відповідь звужує зону пошуку в середньому в два рази. Якщо уявити, що файли відсортовані за алфавітом, то відповідь на питання здійснюється очевидним способом - порівнянням початкових букв. Область пошуку, звужена в два рази, починає досліджуватися аналогічним чином, починаючи знову ж із середнього елемента.

Помітимо, що додавати файл у каталог у виді дерева не набагато складніше, ніж у лінійний каталог системи FAT. Це співставлені по часу операції. Для того щоб додати новий файл у каталог, потрібно спочатку переконатися, що файлу з таким ім'ям там ще немає. Тому в системі FAT з лінійною організацією записів каталогу в нас з'являються труднощі не тільки з пошуком файлу. І це компенсує саму простоту додавання файлу в каталог.

Можливості файлової системи NTFS по обмеженню доступу до файлів і каталогів.

Розглянемо основні можливості, зв'язані як з організацією різних прав доступу до файлів і каталогів при використанні мережного доступу, так і локальні обмеження на файли і каталоги. NTFS розглядає каталоги (папки) і файли як різнотипні об'єкти і веде окремі (хоча і перекриваючі) списки прав доступу для кожного типу. Нижче перераховані права NTFS, призначені папкам (відповідні права для файлів приведені нижче):

· немає доступу (no access) (None)(немає);

· повний доступ (full control) (А11)(А11) (усі) (усі);

· право читання (read) (RX)(RX) (читання) (читання);

· право додавання (add) (WX)(not specified) (запис/виконання не зазначене);

· право додавання і читання (add&read) (RWX)(RX) (читання/запис/виконання) (читання/виконання);

· право перегляду (list) (RX)(not specified) (читання/виконання)(не зазначене);

· право зміни (change) (R\VXD)(RWXD) (читання/запис/ виконання/видалення) (читання/запис/виконання/видалення).

Зверніть увагу на два вирази в дужках, зазначені після імені права доступу. Перший вираз відноситься до самої папки, а другий — до усіх файлів, що можуть бути створені всередині неї. Наприклад, при повному доступі для папки дозволяються будь-які дії, однак користувач з повним доступом до папки також буде мати повне право доступу до всіх створених у ній файлів (якщо тільки права доступу до файлу не були змінені його власником чи адміністратором). Іншими словами, у NTFS файли і папки за замовчуванням успадковують права доступу, встановлені для їхньої батьківської папки, однак ці права можуть бути змінені будь-яким користувачем, якому дозволено змінювати права доступу для відповідних об'єктів NTFS. Файли в NTFS можуть мати наступні права:

· повний доступ (full control) (All) (її);

· немає доступу (no access) (None) (немає);

· право зміни (change) (RWXD) (читання/запис/виконання/видалення);

· право читанні (read) (RX) (читання/виконання).

Для прав доступу NTFS, як і для прав загальних каталогів, діє принцип поглинання. Виключення складає право «немає доступу», що скасовує доступ всіх інших прав.

При мережному підключенні користувачів права NTFS можуть вступити в конфлікт із правами загальних каталогів. У такій ситуації застосовується право доступу з найбільш жорсткими обмеженнями. У багатьох виникають проблеми з розумінням одержуваних при мережному доступі обмежень. Однак тут можна легко розібратися, якщо пам'ятати, що при доступі по мережі до каталогів і файлів, що розташовуються на томах з NTFS, у нас виходять задіяними два послідовних механізми. Спочатку ми одержуємо доступ до файлів, що був визначений мережними механізмами. Це право «немає доступу» — «no access», право на «читання» — «read», право «зміна» — «change» і «повний доступ» — «full control». Після цього набирають сили обмеження на файли і каталоги, визначені властивостями NTFS. Тобто нам потрібно перебороти послідовно дві перешкоди. Іншими словами, підсумкові права на папки і файли будуть визначатися максимальними обмеженнями, що були задані в кожнім з механізмів.

Крім перерахованих прав є ще так званий спеціальний доступ (Special Access). Якщо вибрати, це право доступу, то насправді з'являється можливість вибирати кілька прав одночасно з наступного переліку:

· повний доступ (full control) (Аll);

· читання (read) (R);

· запис (write) (W);

· виконання (execute) (X);

· видалення (delete) (D);

· зміна дозволів (change permissions) (P);

· зміна власника (take ownership) (О).

В принципі можна було б вибирати будь-які сукупності перерахованих дозволів, однак на практиці це, на жаль, не працює. Наприклад, не можна вказати право X (виконання) без права R (читання), хоча в інших системах керування файлами таке право забезпечується. Воно дозволяє виконувати програму, файл якої позначений таким атрибутом, але не дає можливості її скопіювати. Багато інших комбінацій спеціальних дозволів теж не працюють належним образом і це треба обов'язково мати на увазі. Краще користуватися штатними правами на файли і каталоги, що були перераховані вище.

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

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

Три наступних важливі правила допоможуть визначити стан прав доступу при переміщенні, при копіюванні об'єктів NTFS:

· При переміщенні файлів у границях розділу NTFS зберігаються вихідні права доступу.

· При виконанні інших операцій ( чистворенні копіюванні файлів, а також їхньому переміщенні між розділами NTFS) успадковуються права доступу батьківської папки.

· При переміщенні файлів з розділу NTFS у розділ FAT усі права NTFS губляться.

Основні відмінності FAT і NTFS.

Якщо говорити про накладні витрати на збереження службової інформації, FAT відрізняється від NTFS більшою компактністю і меншою складністю. У більшості томів FAT на збереження таблиці розміщення, що містить інформацію про усі файли тому, витрачається менше 1 Мбайта. Настільки низькі накладні витрати дозволяють форматувати у FAT жорсткі диски малого обсягу і флопі-диски. У NTFS службові дані займають більше місця, ніж у FAT. Так, кожен елемент каталогу займає 2 Кбайт. Однак це має і свої переваги, тому що вміст файлів обсягом 1500 байт і менше може цілком зберігатися в елементі каталогу.

Система NTFS не може використовуватися для форматування флопі-дисків. Не варто користуватися нею для форматування розділів обсягом менше 50-100 Мбайт. Відносно високі накладні витрати приводять до того, що для малих розділів службові дані можуть займати до 25 % обсягу носія. Корпорація Microsoft рекомендує використовувати FAT для розділів об‘ємом 256 Мбайт і менше, a NTFS — для розділів обсягом 400 Мбайт і більше.

Наступний критерій порівняння — розмір файлів. Розділи FAT мають обсяг до 2 Гбайт, VFAT — до 4 Гбайт і FAT32 — до 4 Тбайт. Проте через особливості своєї внутрішньої будови розділи FAT найкраще працюють для розділів обсягом 200 Мбайт і менше. Розділи NTFS можуть досягати 16 Эбайт, однак на даний час через апаратних і інших системних причин, розмір файлів обмежується 2 Тбайт.

Розділи FAT можуть використовуватися практично у всіх операційних системах. За рідкісними винятками, з розділами NTFS можна працювати прямо тільки з Windows NT, хоча і існують для ряду ОС відповідні реалізації систол керування файлами для читання файлів з томів NTFS. Так, наприклад, утиліта (драйвер) NTFSDOS дозволяє читати дані NTFS на комп'ютері, завантаженому в режимі MS-DOS. Однак повноцінних реалізацій для роботи з NTFS поза системою Windows NT поки немає.

Розділи FAT не забезпечують локальної безпеки. З іншого боку, розділи NTFSзабезпечують локальну безпеку як файлів, так і каталогів. Для розділів FAT можуть встановлюватися загальні права, зв'язані з загальним доступом до каталогів у мережі. Однак такий захист не перешкодить користувачу з локальним входом одержати доступ до файлів свого комп'ютера. У відношенні безпеки NTFS виявляється кращим варіантом. Розділи NTFS можуть забороняти чи обмежувати доступ як вилучених, так і локальних користувачів. Отже, до захищених файлів зможуть звернутися лише тікористувачі, яким були надані відповідні права. Нагадаємо, що Windows NT містить спеціальну утиліту CONVERT.EXE, якаперетворить томи FAT в еквівалентні томи NTFS, однак для зворотнього перетворення (з NTFS у FAT) подібних утиліт не існує. Щоб виконати таке зворотнє перетворення, вам доведеться створити розділ FAT, скопіювати в нього файли з розділу NTFS і потім видалити оригінали. Важливо при цьому не забувати і про те, що при копіюванні файлів з NTFS у FAT губляться всі атрибути безпеки NTFS (нагадаємо, що в FAT не передбачені засоби для визначення і наступного збереження цих атрибутів). Останнім часом появилася ще одна дуже важлива обставина, зв'язана з тим, що обсяги дискових механізмів набагато перевищили максимально припустимий розмір, прийнятний для FAT, — 8,4 Гбайт. Ця межа пояснюється максимально можливими значеннями в адресі сектора, для якого, як мивже знаємо, приділяється всього 3 байти. Тому в переважній більшості випадків при роботі в середовищі Windows-систем використовують або FAT32, або NTFS. Остання, безумовно, краще, але вона не підтримується в широко розповсюджених ОС Windows 98 і нині все більш часто зустрічаєма Windows Millennium Edition.