Частина 1
У динамічному світі софта є щось, що не змінюється часом десятиліттями. Я говорю про файлові системи. Актуальна зараз NTFS (New Technology File System) з'явилася майже 20 років тому, в 1993-му, разом з принципово новою ОС - Windows NT 3.1. І з тих пір NTFS сумлінно трудиться на сотнях мільйонів Windows-ПК по всьому світу. Але тепер для неї з'явилася заміна: ReFS .
20 років потому
Однак у всього є межа, і у можливостей файлових систем - теж. Сьогодні можливості NTFS підійшли до своїх кордонів: перевірка ємних носіїв даних займає надто багато часу, "Журнал" гальмує доступ, а максимальний розмір файлів вже практично досягнуто. Розуміючи це, Microsoft реалізувала в Windows 8 нову файлову систему - ReFS (Resilient File System - відмовостійка файлова система). Вважається, що ReFS забезпечує кращий захист даних на ємних і швидких жорстких дисках. Напевно у неї є і свої недоліки, але до початку по-справжньому масового використання в Windows 8 говорити про них важко. Так що поки спробуємо розібратися у внутрішньому устрої та переваги ReFS.
Спочатку ReFS була відома під кодовою назвою "Protogon". Вперше про неї широкому загалу приблизно рік назад розповів Стівен Сінофскі - президент підрозділу Windows в Microsoft, який відповідає за розробку і маркетинг Windows і Internet Explorer.
Розповів такими словами: "Сьогодні система NTFS є найбільш широко використовуваної, передовий і функціонально багатою файлової системою. Але переосмислюючи Windows, а ми в даний момент розробляємо Windows 8, - ми не зупиняємося на досягнутому. Тому разом з Windows 8 ми також впроваджуємо абсолютно нову файлову систему . ReFS створена на основі NTFS, тому в ній збереглися найважливіші можливості сумісності, в той же час вона розроблена і спроектована з урахуванням потреб нового покоління технологій і сценаріїв зберігання даних. У Windows 8, ReFS буде введена тільки як частина Windows Server 8, такий же підхід ми використовували для впровадження всіх попередніх файлових систем. Звичайно ж, на прикладному рівні клієнтам надаватиметься доступ до даних ReFS такий же, як до даних NTFS. Не можна забувати про те, що NTFS все ще є провідною технологією в індустрії серед файлових систем для ПК ".
Дійсно, вперше ReFS ми побачили в серверної ОС Windows Server 8. Нова файлова система розроблена все ж таки не з нуля. Наприклад для відкриття, закриття, читання і запису файлів ReFS використовує ті ж інтерфейси доступу API, що і NTFS. Також з NTFS перекочували багато добре знайомі можливості - наприклад, шифрування диска Bitlocker і символічні посилання для бібліотек. Зате зникло, наприклад, стиснення даних і ряд інших функцій.
Основні інновації ReFS зосереджені в області створення структур файлів і папок, а також управління ними. Їх завдання - забезпечити автоматичне виправлення помилок, максимальне масштабування і роботу в режимі постійної підключеності (Always Online).
архітектура ReFS
Дискова реалізація структур ReFS кардинально відрізняється від інших файлових систем Microsoft. Реалізувати свої ідеї розробники Microsoft змогли, застосувавши в ReFS концепцію B + -дерев, знайому по базах даних. Папки в файлової системі структуровані у вигляді таблиць з файлами в якості записів. Вони, в свою чергу, отримують певні атрибути, що додаються в якості підтаблиць, створюючи ієрархічну деревоподібну структуру. Навіть вільне місце на диску організовано у вигляді таблиць.
Поряд з реальною 64-бітної нумерацією всіх елементів системи це виключає появу "вузьких місць" при подальшому її масштабування.
Як результат, ядром системи в ReFS стала таблиця об'єктів - центральний каталог, в якому перераховані всі таблиці в системі. Є у такого підходу важлива перевага: ReFS відмовилася від складного управління журналом і фіксує нову інформацію про фото у вільному місці - це запобігає її перезапісиваніе.
"Листами Каталогу" є типізовані записи. Для об'єкта-папки існують три основні типи записів: описатель каталогу, індексна запис і описувач вкладеного об'єкта. Всі такі записи упаковані у вигляді окремого B + -дерева, що має ідентифікатор папки; корінь цього дерева є листом B + -дерева "Каталогу", що дозволяє упакувати в папку практично будь-яку кількість записів. На нижньому рівні в листах B + -дерева папки знаходиться в першу чергу запис описателя каталогу, що містить основні дані про папку (ім'я, "стандартна інформація", атрибут імені файлу і т.д.).
Далі в каталозі поміщені індексні записи: короткі структури, що містять дані про елементи, що містяться в папці. Ці записи значно коротше, ніж в NTFS, - це в меншій мірі перевантажує тому метаданими.
В кінці поміщені записи елементів каталогу. Для папок ці елементи містять ім'я паки, ідентифікатор папки в "Каталозі" та структуру "стандартної інформації". Для файлів ідентифікатор відсутній - замість цього структура містить всі основні дані про фото, включаючи корінь B + -дерева фрагментів файлу. Відповідно, файл може складатися практично з будь-якого числа фрагментів.
Подібно NTFS, в ReFS принципово різниться інформація про файл (метадані) і вміст файлу (призначені для користувача дані). Однак захисні функції надаються і тим, і іншим однаково. Метадані за замовчуванням вживають запобіжних засобів за допомогою контрольних сум - такий самий захист (за бажанням) можна дати і призначених для користувача даних. Ці контрольні суми розташовуються на диску на безпечну відстань один від одного - так буде простіше відновити дані у разі виникнення помилки.
Розмір метаданих порожній файлової системи становить близько 0.1% від розміру самої файлової системи (тобто близько 2 Гб на том 2 Тб). Деякі основні метадані дублюються для більшої стійкості від збоїв.
Варіант ReFS, який ми побачили в Windows Server 8 Beta, має підтримку кластерів даних розміром тільки 64 Кб і кластерів метаданих розміром 16 Кб. Поки параметр "Розмір кластера" при створенні томи ReFS ігнорується і завжди приймається замовчує. при форматуванні файлової системи єдиним доступним варіантом для вибору розміру кластера також є 64 Кб.
Визнаємо: такого розміру кластера більш ніж вистачить для організації файлових систем будь-якого розміру. Побічним ефектом, правда, стає відчутна надмірність при зберіганні даних (файл розміром в 1 байт на диску займе повний блок 64 Кб).
під другий частини статті ми розглянемо захищеність файлової системи ReFS від збоїв (включаючи збої устаткування) і навмисних атак.
Віктор Демидов