Ntfs дозволяють оптимізувати використання диска і розширити функціональність програм

NTFS, власна файлова система Windows 2000, безперервно удосконалювалася з часу випуску Windows NT 3.1. Вона від самого початку мав можливостями високорівневою файлової системи, але в Windows 2000 з`явилися важливі зміни, які були зроблені в зв`язку з необхідністю вирішувати проблеми, що виникають на корпоративному рівні при переході організацій на NT. Наприклад, завдяки консолідації інформації про безпеку підвищується ефективність повсякденної роботи з NTFS- інші функції, такі, як управління квотами, повинні використовуватися в прикладних програмах або активізуватися і застосовуватися адміністратором.

На цей раз я розповім про можливості версії NTFS 5.0 (NTFS5), що увійшла до складу Windows 2000, і про вплив нових функцій на поведінку і формат диска NTFS. Приступаючи до читання статті, важливо чітко розуміти основні принципи побудови дискової структури NTFS, а також мати уявлення про головну таблиці файлів (Master File Table, MFT), типах атрибутів і резидентних і нерезидентних атрибутах. Детально основи NTFS описані в статті Шона Дейлі "NTFS5 проти FAT32» (Windows 2000 Magazine / RE №4, 2000). Під врізки «Досліджуємо дискові структури NTFS»Розказано про деякі інструментах перегляду і джерелах інформації про елементи внутрішньої структури даних NTFS.

Універсальна індексація

Деякі нові властивості NTFS5 ґрунтуються на фундаментальній особливості NTFS, іменованої індексацією атрибутів (attribute indexing). Індексація атрибутів полягає в сортуванні елементів з атрибутом певного типу за допомогою ефективного механізму зберігання, що забезпечує швидкий перегляд. У версіях NTFS, що передували Windows 2000, індексація допускалася тільки для індексного атрибута $ I30, в якому зберігаються елементи каталогу. У процесі індексації атрибутів елементи каталогу сортуються по імені і зберігаються в B + дереві (форма двійкового дерева, в кожному вузлі якого зберігається кілька елементів). На рисунку 1 показано запис MFT каталогу, в трьох вузлах якої міститься дев`ять елементів, по три в кожному вузлі. Корінь B + дерева знаходиться в атрибуті index root (корінь індексу). У записі MFT каталогу дев`ять елементів не вміщується, тому деякі елементи доводиться зберігати в іншому місці. Для цього NTFS виділяє два буфера розміщення індексів (index allocation) для зберігання двох записів (як правило, корінь індексу і буфери розміщення індексів мо-гут зберігати елементи для більш ніж трьох файлів, в залежності від довжини імен). Розмір запису MFT - 1 Кбайт, а розмір буферів розміщення індексів - 4 Кбайт.

Червоні стрілки вказують, що елементи NTFS зберігаються в алфавітному порядку. Якщо запустити програму, яка відкриває файл e.bak в показаному на малюнку каталозі, то NTFS читає атрибут індексного кореня, що містить елементи для d.new, h.txt і i.doc, і порівнює рядок e.bak з ім`ям першого елемента, d .new. NTFS робить висновок, що алфавітний номер e.bak більше, ніж d.new, і переходить до наступного елементу - h.txt. Повторивши операцію порівняння, NTFS з`ясовує, що алфавітний номер e.bak менше, ніж h.txt. Потім NTFS відшукує в записі каталогу h.txt номер віртуального кластера (virtual cluster number, VCN) індексного буфера, що містить елементи каталогу, алфавітні номера яких менше, ніж h.txt, але більше, ніж d.new. VCN є порядковий номер кластера в файлі або каталозі. На підставі інформації про розміщення кластерів NTFS перетворює VCN в логічний номер кластера (Logical Cluster Number, LCN), т. Е. Номер кластера щодо початку томи. Якщо елемент каталогу для h.txt не містить VCN індексного буфера, NTFS робить висновок, що каталог h.txt не містить файлу e.bak і повідомляє про невдале завершення пошуку.

Отримавши VCN початкового кластера індексного буфера, NTFS читає буфер розміщення індексів і переглядає його в пошуках збігів. На рисунку 1 перший же елемент індексного буфера збігається з критерієм пошуку, і NTFS читає номер запису MFT e.bak з елемента каталогу e.bak. В елементах каталогу зберігається і інша інформація: зокрема, тимчасові позначки (наприклад, час створення і останньої зміни), розмір і атрибути. NTFS зберігає цю інформацію і в запису MFT файлу, але, завдяки дублюванню інформації в елементі каталогу, читати запис MFT файлу при складанні списків каталогів і виконанні простих файлових запитів не потрібно.

Елементи каталогів сортуються за алфавітом, і саме тому в списках каталогів NTFS файли завжди розташовуються в алфавітному порядку. На відміну від NTFS, FAT не сортуються каталог, тому списки FAT НЕ сортовані. Крім того, оскільки елементи NTFS зберігаються в B + дереві, механізм пошуку конкретних файлів у великих каталогах дуже еффектівен- зазвичай досить переглянути лише частина каталогу. Даний підхід відрізняється від лінійного методу FAT, при використанні якого для пошуку одного імені іноді доводиться переглядати весь каталог.

У версіях NTFS, що передували Windows 2000, індексувалися лише імена файлів, але NTFS5 забезпечує універсальну індексацію, зберігаючи в індексах довільні дані і сортуючи елементи даних не по імені, а за іншими параметрами. Універсальна індексація використовується для управління дескрипторами безпеки, інформацією про квоти, точках повторної обробки й ідентифікацію файлових об`єктів, т. Е. Елементами NTFS5, про які йде мова в даній статті.

консолідована безпеку

NTFS завжди мала функціями безпеки, що дозволяють адміністратору вказати користувачів, яким дозволений або заборонений доступ до тих чи інших файлів і каталогів. У версіях NTFS, що передували Windows 2000, дескриптор безпеки кожного файлу і каталогу зберігався в його власному атрибуті безпеки. У більшості випадків адміністратори призначають єдині параметри безпеки всьому дереву каталогів, що призводить до дублювання дескрипторів безпеки для всіх файлів і підкаталогів, до яких застосовуються параметри. Таке дублювання може призвести до значних втрат дискового простору в багатокористувацьких середовищах, таких, як Windows 2000 Server Terminal Services і NT Server 4.0, Terminal Server Edition (WTS), де дескриптори безпеки можуть містити елементи для багатьох облікових записів. NTFS5 оптимізує виділення дискового простору для зберігання дескрипторів безпеки, зберігаючи лише один примірник кожного дескриптора безпеки на томі в центральному файлі метаданих з ім`ям $ Secure.

alt = "Як працює файл метаданих $ Secure" width = "390" height = "261" / gt;
Малюнок 2. Як працює файл метаданих $ Secure.

У файлі $ Secure зберігаються два індексних атрибута - $ SDH і $ SII - і атрибут потоку даних, іменований $ SDS (див. Малюнок 2). NTFS5 призначає кожному унікальному дескриптору на томі внутрішній ідентифікатор безпеки NTFS (не плутати з SID, унікально ідентифікує комп`ютери і облікові записи користувачів) і хешірует дескриптор безпеки відповідно до простим хеш-алгоритмом. Хеш-значення - потенційно неунікальне скорочене уявлення дескриптора. Елементи в індексі $ SDH відображають хеш-значення дескриптора безпеки на область зберігання дескриптора безпеки в атрибуті даних $ SDS, а індекс $ SII відображає на область зберігання дескриптора безпеки в атрибуті даних $ SDS ідентифікатори безпеки NTFS5.

Призначивши дескриптор безпеки файлу або каталогу, NTFS отримує хеш-значення дескриптора і переглядає індекс $ SDH в пошуках збігів. NTFS сортує елементи індексу $ SDH згідно хеш-значенням відповідного дескриптора безпеки і зберігає елементи в B + дереві. Виявивши для дескриптора збіг в індексі $ SDH, NTFS визначає зміщення дескриптора безпеки елемента із запису $ SDS Offset і зчитує дескриптор безпеки з атрибута $ SDS. Якщо збігаються хеш-значення, але не дескриптори безпеки, то NTFS шукає ще один збігається елемент в індексі $ SDH. Якщо NTFS виявляє повний збіг, то файл або каталог, до якого призначений дескриптор безпеки, може встановити зв`язок з дескриптором безпеки в атрибуті $ SDS.

NTFS встановлює зв`язок, зчитуючи ідентифікатор безпеки з елемента $ SDH і зберігаючи його в атрибуті $ STANDARD_INFORMATION файлу або каталогу. В атрибуті $ STANDARD_INFORMATION системи NTFS, який мають всі файли і каталоги, зберігається базова інформація про фото, в тому числі атрибути і тимчасові мітки. У Windows 2000 цей атрибут розширено, в ньому з`явилася додаткова інформація, наприклад ідентифікатор безпеки файлу.

Якщо NTFS не може виявити в індексі $ SDH елемента з дескриптором безпеки, що збігається з призначеним, значить, новий дескриптор унікальний для томи, і NTFS призначає йому новий внутрішній ID безпеки. Внутрішні ID безпеки NTFS є 32-розрядні величини, а ідентифікатори SID зазвичай в кілька разів довше, тому уявлення ідентифікаторів SID ідентифікаторами безпеки NTFS дозволяє заощадити місце в атрибуті $ STANDARD_INFORMATION. Потім NTFS додає дескриптор безпеки в атрибут $ SDS, який сортується в B + дереві по ID безпеки NTFS, і доповнює індекси $ SDH і $ SII елементами, що вказують на зміщення дескриптора в масиві даних $ SDS.




Коли програма намагається відкрити файл або каталог, NTFS шукає дескриптор безпеки файлу або каталогу за допомогою індексу $ SII.

NTFS читає внутрішній ID безпеки файлу або каталогу з атрибута $ STANDARD_INFORMATION записи MFT, а потім використовує індекс $ SII файлу $ Secure для пошуку елемента ID в атрибуті $ SDS. По зсуву в атрибуті $ SDS система NTFS зчитує дескриптор безпеки і завершує перевірку безпеки. NTFS5 не видаляти елементи файлу $ Secure, навіть якщо з ним не пов`язано жодного файлу або каталогу на томі. Наявність невидалених елементів не призводить до значної втрати дискового простору, так як число унікальних дескрипторів безпеки на більшості томів, навіть використовуваних протягом тривалого часу, порівняно невелика.

Завдяки універсальної індексації NTFS5 файли і каталоги з однаковими параметрами безпеки ефективно використовують загальні дескриптори. За допомогою індексу $ SII NTFS швидко відшукує дескриптори безпеки в файлі $ Secure в ході перевірок безпеки, а індекс $ SDH дозволяє швидко визначити, чи є у файлі $ Secure раніше збережений дескриптор безпеки, придатний для спільного використання з даним файлом або каталогом.

Точки монтування

Точки монтування дозволяють додатком зв`язати блок своїх даних з файлом або каталогом, а диспетчеру об`єктів Object Manager - здійснити новий пошук імені, коли прикладна програма виявляє точку повторної обробки. Крім даних в точці повторної обробки зберігається програмний код, який ідентифікує приналежність точки повторної обробки певного додатка. Самі по собі точки повторної обробки марні, але завдяки їм програмісти можуть нарощувати функціональність NTFS. У Windows 2000 передбачено кілька типів точок повторної обробки, в тому числі точки монтування томів, під`єднання каталогів NTFS і управління ієрархічними сховищами даних (Hierarchical Storage Management, HSM). Я поясню, як працюють всі ці функції, а потім детально розповім про реалізацію точок повторної обробки.

Будь-том NTFS доступний лише після того, як йому присвоєно символьне позначення. Точки монтування NTFS5 дозволяють прив`язати тому до каталогу монтування на батьківському томі NTFS5, що не привласнюючи символьного позначення дочірньому тому. В результаті з`являється можливість об`єднати кілька томів під однією літерою. Наприклад, якщо змонтувати тому, що містить каталог articles, до точки монтування з ім`ям C: documents, то можна використовувати шлях C: articles documents для доступу до файлів каталогу documents. Точка монтування є точкою монтування, дані якої складаються з внутрішньої імені томи. Внутрішнє ім`я має форму ?? Volume {XX-XX-XX-XX}, де X - числа, що утворюють глобальний унікальний ID (GUID), присвоєний тому операційною системою.

Відео: Windows 10 - Оптимізація жорсткого диска [HDD]

Якщо відкрити файл C: articles documents column.doc, то NTFS виявляє точку монтування, пов`язану з каталогом documents. NTFS читає зберігаються в ній дані точки повторної обробки (ім`я томи) і передає в Object Manager статус точки повторної обробки. Диспетчер введення / виведення перехоплює інформацію про стан справ, аналізує дані і визначає, що NTFS виявила точку монтування. Диспетчер введення / виведення змінює шукане ім`я і змушує Object Manager (компонент ядра, який відповідає пошуку імен) провести повторний пошук зі зміненим шляхом ?? Volume {GUID} documents column.doc. У процесі повторного пошуку аналіз імені documents co-lumn.doc продовжиться на змонтованому томі. Створити точки монтування і скласти їх список можна за допомогою оснастки Disk Management консолі управління Microsoft Management Console (MMC) або інструменту командного рядка Mountvol, що поставляється разом з Windows 2000.

Точки приєднання каталогів NTFS схожі на точки монтування, і диспетчер введення / виведення і Object Manager виконують під`єднання так само, як монтування. Однак точки приєднання встановлюють зв`язок з каталогами, а не з томами. Точки підключення Windows 2000 еквівалентні символьним посиланням UNIX (але на відміну від символьних посилань UNIX, точки під`єднання можна застосовувати до файлів). Якщо створити точку приєднання C: articles documents, пов`язану з каталогом D: documents, то можна звертатися до файлів в D: documents, використовуючи шлях C: articles documents. У точці приєднання зберігається інформація про перенаправлення шляху, і якщо NTFS виявляє точку приєднання, то, як і в випадку з точкою монтування, диспетчер введення / виведення змінює ім`я і ініціює повторний пошук імені. Принцип дії точки приєднання показаний на рисунку 3. Коли додаток відкриває C: directory1 file, NTFS виявляє точку повторної обробки в каталозі C: ​​ directory1, що вказує на каталог C: directory2. Диспетчер введення / виведення змінює ім`я на C: directory2 file, і додаток в результаті відкриває файл C: directory2 file.




alt = "Приклад точки повторної обробки." width = "390" height = "372" / gt;
Малюнок 3. Приклад точки повторної обробки.

У Windows 2000 немає інструментів для створення точок приєднання, і Microsoft офіційно не підтримує такі інструменти, так як використання шляхів з підключенням може порушити роботу деяких прикладних програм. Однак створювати під`єднання і складати їх списки можна за допомогою інструменту Linkd з набору ресурсів систем Microsoft Windows 2000 Resource Kit або безкоштовної утиліти Junction.
Повторний аналіз шляху використовується не в усіх точках повторної обробки. В системі HSM точки повторної обробки HSM служать для прозорої міграції рідко використовуваних файлів в резервне сховище даних. Коли HSM переносить файл в архів, вміст файлу видаляється, а на його місці створюється точка монтування. В даних точки повторної обробки міститься інформація, яка використовується системою HSM для пошуку файлу на архівному носії. Якщо згодом додаток звертається до зберігається в HSM файлу, то HSM-драйвер RsFilter.sys (Remote Storage Filter - фільтр віддаленого зберігання даних) перехоплює код повторної обробки, пересилається NTFS в Object Manager. Драйвер видаляє точку повторної обробки, витягує файл з архівної носія, а потім повторює первісний запит. На цей раз NTFS звертається до файлу, як до будь-якого іншого, і операції по переміщенню даних не впливають на роботу програми.

Якщо точка монтування пов`язана з файлом або каталогом, то NTFS створює для неї атрибут з ім`ям $ Reparse. У цьому атрибуті зберігаються код і дані точки повторної обробки. Тому NTFS без праці виявляє всі крапки повторної обробки на томі, а в файлі метаданих з ім`ям $ Extend $ Reparse зберігаються елементи, що зв`язують номера запису MTF файлу і каталогу точки повторної обробки з ассоцірованнимі з ними кодами повторної обробки. NTFS сортує елементи по номеру запису MTF в індексі $ R.

відстеження квот

alt = "Як працює файл метаданих $ Quota" width = "390" height = "286" / gt;

Малюнок 4. Як працює файл метаданих $ Quota.

NTFS зберігає інформацію про квотування в файлі метаданих $ Extend $ Quota, що складаються з індексів $ O і $ Q. На рисунку 4 показана структура цих індексів. Точно так же, як NTFS призначає кожному дескриптору безпеки унікальний внутрішній ID безпеки, кожному користувачеві призначається унікальний ID користувача. Коли адміністратор визначає інформацію про квоту для користувача, NTFS призначає ID користувача, відповідний ідентифікатором SID користувача. В індексі $ O створюється запис, яка відображає SID на ID користувача, індекс сортується по ID користувача- в індексі $ Q створюється запис для управління квотою. Запис управління квотою містить величину квоти, виділеної користувачеві, а також розмір займаного дискового простору.

Коли додаток створює файл або каталог, NTFS отримує SID користувача програми і відшукує відповідний ID користувача в індексі $ O. NTFS записує ID користувача в атрибут $ STANDARD_INFORMATION нового файлу або каталогу і зараховує всі дисковий простір, виділене файлу або каталогу, в рахунок квоти користувача. Потім NTFS відшукує елемент квоти в індексі $ Q і визначає, чи не перевищив користувач свого порога попередження або дискового ліміту. Якщо виділення нового простору призвело до перевищення порога, то NTFS вживає відповідних заходів: наприклад, заносить запис в журнал системних подій або забороняє користувачеві створити файл або каталог. У міру зміни розміру файлу або каталогу NTFS оновлює запис управління квотою, пов`язану з ID користувача в атрибуті $ STANDARD_INFORMATION. Система NTFS використовує метод універсальної індексації для ефективної прив`язки ID користувача до SID облікового запису і швидкого пошуку інформації про квоту користувача за його ідентифікатором.

Далі буде...

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

Марк Русинович - доктор філософії, редактор Windows 2000 Magazine. З ним можна зв`язатися за адресою: [email protected] або https://sysinternals.com/.

Досліджуємо дискові структури NTFS

Відео: FAQ дефрагментація і оптимізація HDD для NTFS

Для дослідження внутрішніх дискових структур NTFS існує кілька загальнодоступних інструментів. Серед них - DiskEdit, вбудований інструмент тестування NTFS, через недогляд Microsoft виявився на компакт-диску Windows NT 4.0 Service Pack 4 (SP4), одна з найпотужніших відомих мені програм перегляду NTFS. DiskEdit, вікно якого представлено на Екрані A, дозволяє ознайомитися зі структурами, що утворюють файли і каталоги, а також з даними атрибутів і перетворити шляху файлів і каталогів у вхідні коди таблиці MFT. Документація по DiskEdit відсутня, але я опублікував навчальний посібник в збірнику безкоштовних бюлетенів Sysinternals Newsletter (https://sysinternals.com/newsletter.htm). Щоб використовувати DiskEdit разом з Windows 2000, необхідно скопіювати файли ifsutil.dll, ulib.dll, untfs.dll і ufat.dll з каталогу winnt system32 системи Windows NT в каталог, в якому потрібно розмістити DiskEdit.

утиліта DiskEdit
Екран A. Утиліта DiskEdit.

Ті, у кого немає компакт-диска з SP4, можуть скористатися утилітою NTFS File Sector Information Utility (NFI), що поставляється Microsoft в складі пакету OEM Support Tools за адресою: http: support.microsoft.com/support/ kb / articles / q253 / 0 / 66.asp (Крім NFI в пакеті OEM Support Tools є утиліти налагодження і розширення відладчика ядра, за допомогою яких адміністратори і програмісти можуть аналізувати аварійні дампи).

За допомогою запускаються з командного рядка шаблонів NFI можна зібрати інформацію про конкретний файл або каталозі або про всі файли на томі, знайти файл або каталог, в якому розташований даний логічний сектор диска, а також відшукати файл або каталог, що містить конкретний фізичний сектор. Наприклад, команда

nfiC: 123

повідомляє ім`я файлу на томі C :, який міститься в 123 секторі томи. Щоб дослідити структури даних NTFS, можна скористатися цією ж командою, що не вказуючи номер сектора, і NFI видасть докладну інформацію про атрибути всіх файлів на диску. Можна ввести ім`я файлу метаданих, описаних в статті, і переглянути містяться в них атрибути. Наприклад, якщо виконати команду

nfi c: $ extend $ quota

на квотної томі, то буде видно, що файл $ Quota містить індекси з іменами $ O і $ Q:

File 24
$ Extend $ Quota
$ STANDARD_INFORMATION (resident)
$ FILE_NAME (resident)
$ INDEX_ROOT $ O (resident)
$ INDEX_ROOT $ Q (resident)

Ще одне джерело інформації про дискову структурі NTFS - книга Гері Неббета «Windows NT / 2000 Native API reference» (видавництво New Readers Publishing, 2000). У додатку наведені визначення багатьох дискових структур NTFS (в деяких випадках відображені зміни, внесені в Windows 2000) і міститься вихідний текст Win32-програми, за допомогою якої можна отримати доступ до структур даних в обхід драйвера файлової системи NTFS і створити дамп вмісту томи.

Поділися в соціальних мережах:

Схожі
Продуктивність btrfs vs. Ext4 vs. F2fs vs. Xfs vs. Ntfs в ядрі linux 4.7Продуктивність btrfs vs. Ext4 vs. F2fs vs. Xfs vs. Ntfs в ядрі linux 4.7
Яка файлова система краще exfat або ntfs?Яка файлова система краще exfat або ntfs?
Як відформатувати флешку в ntfsЯк відформатувати флешку в ntfs
Налаштування многозагрузочной системиНалаштування многозагрузочной системи
Нове покоління файлової системи для windows - refsНове покоління файлової системи для windows - refs
Перетворення файлової системи fat16 або fat32 в ntfs за допомогою windows xpПеретворення файлової системи fat16 або fat32 в ntfs за допомогою windows xp
Команда convertКоманда convert
Файлова система raw - що це?Файлова система raw - що це?
Команда format - форматування диска для роботи з windows.Команда format - форматування диска для роботи з windows.
Як змінити fat32 на ntfs без втрати данихЯк змінити fat32 на ntfs без втрати даних
» » Ntfs дозволяють оптимізувати використання диска і розширити функціональність програм