Файлові системи BSD, Solaris, Unix

Як зазначено в статті про основи файлових систем, файлова система (скорочено ФС) є невід'ємною частиною будь-якої операційної системи (ОС). І більшість операційних систем, як правило, використовують власні "рідні" типи ФС, які можуть підтримуватись лише частково або зовсім не підтримуватись в інших середовищах. Коли йдеться про сімейство Unix, ця ОС і її варіанти, такі як BSD і Solaris, традиційно використовували UFS, яка пізніше була оновлена до UFS2. Через деякий час у Solaris з'явилась файлова система нового покоління під назвою ZFS. Вона набула широкої популярності і швидко з'явилась на інших платформах. У цій статті ви можете знайти короткий огляд цих двох найпоширеніших типів ФС і дізнатися про їхні ключові особливості.

Зверніть увагу: Деякі з цих операційних систем можуть пропонувати підтримку читання та запису для інших форматів, як-от FAT/FAT32 у Microsoft Windows і Ex2/Ext3/Ext3 у Linux, які більш детально розглянуті у відповідних статтях.

Зміст:

UFS/UFS2

UFS (UNIX File System, файлова система UNIX) походить від Berkeley Fast File System (FFS, Швидкої файлової системи Berkeley), яка була розроблена Групою досліджень комп’ютерних наук (Computer Science Research Group чи коротко CSRG) Каліфорнійського університету в Берклі та випущена в 1983 році разом із дистрибутивом 4.2 BSD UNIX. Робота над UFS тривала, і, зрештою, він став основним форматом для комп'ютерів, що працюють під BSD та іншими системами, похідними від Unix. Зараз, незважаючи на те, що UFS є досить застарілою з точки зору функціональності, вона залишається досить затребуваною з огляду на її високу стабільність.

В UFS простір для зберігання поділено на Групи циліндрів (Cylinder Groups). Розташування циліндрів та іншу важливу службову інформацію можна знайти у Суперблоці (Superblock). У системі UFS файл представлений окремим індексним дескриптором (так званий inode чи інод) разом із блоками даних, які складають його вміст. Кожна Група циліндрів відстежує власні вільні блоки та індексні дескриптори за допомогою спеціальних бітових мап (bitmaps).

Індексний дескриптор включає всі атрибути файлу, окрім його імені. Він також містить прямі адреси перших 12 блоків даних. Якщо блоків більше, наступні адреси вказують на непрямі блоки, які зберігають адреси прямих блоків. З іншого боку, каталог складається із записів, які пов’язують номери індексних дескрипторів з іменами файлів, що знаходяться в даному каталозі.

Хоча UFS створює один індексний дескриптор для кожного файлу, вона у той же час дозволяє зберігати той самий файл у кількох каталогах і під різними іменами. Такі файли мають спільний індексний дескриптор і відомі як жорсткі посилання. У цьому випадку індексний дескриптор вказує точну кількість посилань на нього.

За ці роки UFS зазнала багато змін. У 2003 році на заміну оригінальної UFS була запущена UFS2, пристосована для розгортання на мультитерабайтних пристроях зберігання даних. Крім того, багато постачальників Unix створили свої власні адаптації UFS. Наприклад, Sun Microsystems додала журналювання до своєї версії UFS у Solaris 7. Ця файлова система записує всі оновлення метаданих у журналі перед фактичним їх застосуванням до будь-яких своїх структур, таким чином забезпечуючи їх захист від збоїв, які можуть статися в процесі.

В результаті, між різними реалізаціями UFS можуть існувати значні відмінності. Отже, попри те, що ця родина файлових систем відома під єдиною назвою UFS, багато з її варіацій можуть бути адаптовані для певних цілей або мати власні розширення, несумісні з іншими варіантами Unix.

ZFS

ZFS (Zettabyte File System, Файлова система Zettabyte) була створена в 2001 році компанією Sun Microsystems для своєї власної ОС Solaris. У 2005 році її зробили відкритою та інтегрували в інші платформи, включаючи BSD. Коли корпорація Oracle придбала Sun у 2010 році, подальший розвиток ZFS став її прерогативою. З цієї причини було створено окремий проект під назвою OpenZFS, який дозволив підтримувати код ZFS у відкритому доступі і залишати цю ФС доступною для громадськості поза закритою екосистемою Oracle. Менше з тим, ZFS не вдалося включити безпосередньо в ядро Linux через конфлікт ліцензій, через що, для вирішення цієї проблеми, була запущена ініціатива ZFSonLinux (ZoL). Усе це призвело до появи кількох окремих «гілок» ZFS.

Загалом ZFS кардинально змінила уявлення про те, що таке файлова система. Вона пропонує нативні можливості керування томами, подібні до тих, які надають технології на основі RAID, а також багато інших унікальних функцій.

ZFS може охоплювати кілька носіїв даних. У цьому разі їхні ресурси об'єднуються в єдиний спільний простір (пул) зберігання. Він може включати один або кілька віртуальних пристроїв, які називаються vdev. Кожен vdev описується окремою міткою, яка також містить його Уберблок (Uberblock). Останній має функції, подібні до функцій Суперблоку (Superblock) в інших файлових системах.

Розподіл простору для зберігання виконується блоками змінного розміру. Ці блоки організовуються як об'єкти різних типів, наприклад, об'єкти файлів і об'єкти каталогів. Спеціальна структура під назвою dnode містить запис про тип об'єкта та його розмір і вказує на блоки, у яких зберігається його фактичний вміст. У dnode може бути до трьох вказівників (або покажчиків) на блоки. Такий вказівник може посилатися або на блок листа, який зберігає фактичні дані, або на непрямий блок, який, у свою чергу, вказує на інший блок.

Подібні між собою об'єкти групуються у набори об'єктів. Кожен об'єкт у такому наборі можна ідентифікувати за його номером. Низка dnode, що їх описує, також зберігається як об'єкт, на який вказує спеціальний dnode, який називається metadnode. Спеціальний набір об'єктів під назвою Meta Object Set зберігає метадані, які характеризують увесь простір (пул) для зберігання.

ZFS також використовує механізм Копіювання при записуванні (Copy-on-Write (CoW)). Він завжди створює копію блоку, який потрібно змінити, замість того, щоб напряму замінити його. Після завершення операції вказівник на блок оновлюється, щоб він містив адресу щойно записаного блоку, тоді як вихідна версія залишається незмінною.

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

Підказка: Більш детальну інформацію про ймовірність успішного відновлення даних із цих ФС можна знайти в статтях про особливості відновлення даних з різних ОС та про шанси на відновлення даних. Сам процес описаний в інструкції з відновлення даних з Unix, Solaris і BSD.

Якщо ви хочете дізнатися більше про файлові системи інших середовищ, будь ласка, прочитайте відповідну статтю:

Останнє оновлення: 26 квітня 2023

Якщо вам сподобалася ця стаття, поділіться нею у соцмережах: