Слайд 1 Тема 8
Реалізація файлових систем
План лекції
Фізична організація FAT.
Фізична організація Ufs.
Фізична організація
Ext2fs.
Фізична організація Ext4fs.
Фізична організація /proc.
Віртуальна файлова система VFS.
Файлова система NTFS.
Слайд 21.Фізична організація FAT
Логічний розділ, відформатований під файлову систему FAT, містить
такі розділи:
Завантажувальний сектор (boot sector) містить програму початкового завантаження ОС.
Основна
копія FAT.
Резервна копія FAT.
Кореневий каталог (root directory) займає фіксовану ділянку у 32 сектора (16 кБ), що дозволяє зберігати 512 записів про файли і каталоги (кожний запис – 32Б).
Область даних призначена для розміщення усіх файлів і усіх каталогів, крім кореневого каталогу.
Слайд 3Особливості FAT
1. Елемент (індексний покажчик) FAT може мати такі значення:
Кластер
вільний
Кластер використовується (номер наступного кластера)
Останній кластер файлу
Дефектний кластер
Резервний
2. Розрядність елементів:
FAT12
– 12 біт – максимум 4096 кластерів.
FAT16 – 16 біт – максимум 65536 кластерів. Максимальний розмір розділу 4 ГБ (кластер 64 кБ).
FAT32 – 32 біт – максимум 232 = 4294967296 кластерів.
3. Кожний запис у каталозі – 32 Б:
Ім’я файлу – 11 Б у форматі 8.3.
Довге ім’я файлу – до 255 двохбайтних символів Unicode.
Довге ім’я поміщається порціями по 13 символів у записи, що безпосередньо йдуть за основним записом каталогу (кожний такий запис містить ще 6 Б службової інформації).
Слайд 42.Фізична організація ufs (UNIX File System)
Слайд 5Фізична організація ufs (UNIX File System)
(продовження)
Розділ містить завантажувальний блок, після
якого кілька разів
повторюється послідовність:
Суперблок – містить загальну інформацію про
файлову систему:
- Розмір файлової системи.
- Розмір області індексних дескрипторів.
- Число індексних дескрипторів.
- Список вільних блоків.
- Список вільних індексних дескрипторів.
Блок групи циліндрів – описує кількість індексних дескрипторів і блоків даних, що розташовані у цій групі циліндрів диска.
Область індексних дескрипторів. Дескриптори розташовані за їхніми номерами.
Область даних. Містить звичайні файли і каталоги (у тому числі кореневий каталог). Спеціальні файли в області даних не відображені.
Слайд 6Особливості ufs
1. Індексний дескриптор містить:
Ідентифікатор власника файлу.
Тип файлу.
Права доступу до
файлу.
Час останньої модифікації файлу, час останнього звернення до файлу, час
останньої модифікації індексного дескриптора.
Кількість посилань на цей дескриптор (імен файлу).
Адресна інформація (була розглянута нами раніше).
Розмір файлу в байтах.
2. Запис про файл у каталозі містить усього два поля: ім’я файлу і номер індексного дескриптора. Ім’я файлу в ufs може мати довжину до 255 символів (код ASCII – по одному байту на символ).
3. Розмір індексного дескриптора – 64 кБ.
4. Розмір блоку – 4 або 8 кБ.
Слайд 73.Фізична організація ext2fs (Linux)
Група блоків на відміну від групи циліндрів
у ufs не прив’язана до геометрії диску.
При створенні файлу намагаються
знайти для нього індексний дескриптор у тій групі блоків, де міститься його каталог.
За допомогою бітових карт ведуть облік вільних блоків і індексних дескрипторів.
Розмір бітової карти – 1 кБ, отже група може містити до 8192 блоків.
Розмір блоку – 1 кБ.
Розмір індексного дескриптора – 128 байт.
Слайд 84.Файлова система ext4fs (Linux)
1. Відрізняється від ext2fs наявністю журналу.
2. Можуть
бути задані три режими роботи з журналом:
Режим журналу (journal):
- Усі
зміни даних зберігаються у журналі.
- Суттєво впливає на продуктивність.
Упорядкований режим (ordered):
- Зберігаються тільки зміни в метаданних.
- Блоки даних зберігаються на диску перед метаданними, тому
ймовірність їх ушкодження низька.
- Це режим за умовчанням.
Режим мінімального записування. Зберігаються лиш зміни в метаданних.
3. Журнал зберігають у схованому файлі .journal у кореневому каталозі.
Слайд 95.Файлова система /proc (UNIX, Linux)
1. Це спеціальна файлова система, яка
насправді взагалі не працює з диском.
2. Вміст кожного файлу і
каталогу генерує програмне забезпечення у відповідь на запит файлової операції.
3. Кожному процесу відповідає каталог файлової системи /proc. Наприклад, процесу з PID=25 відповідає каталог /proc/25.
4. Зчитування файлів цього каталогу надає певну інформацію про процес:
/proc/
/cmdinfo – вміст командного рядка.
/proc//cpu – відомості про поточне завантаження процесора.
/proc//status – різноманітна статистика.
5. У сучасних системах доступна також інша інформація.
/proc/modules – завантажені модулі ядра.
/proc/mounts – змонтовані файлові системи.
/proc/devices – зовнішні пристрої.
/proc/cpuinfo – процесори.
/proc/meminfo – стан пам’яті.
6. /proc/sys і /proc/sys/kernel надають доступ до внутрішніх змінних ядра. Можна не лише зчитувати значення, а й записувати нові, змінюючи тим самим характеристики системи без перекомпіляції ядра і без перезавантаження системи.
Слайд 106.Віртуальна файлова система VFS
1. Основною метою є забезпечення роботи ОС
з максимально широким набором різних файлових систем:
Дискові файлові системи: ext2fs,
ext3fs, ext4fs, ReiserFS, ufs, xfs, FAT, NTFS, ISO9660.
Мережні файлові системи: NFS, SMB.
Спеціальні (віртуальні) файлові системи: /proc.
2. Рівень VFS забезпечує доступ через стандартні файлові системні виклики до будь-якого рівня програмного забезпечення, що реалізує інтерфейс файлової системи.
3. Програмні модулі, що реалізують інтерфейс файлової системи, називаються модулями підтримки файлових систем.
Слайд 11Доступ до файлу з процесу у Linux
Слайд 127.Файлова система NTFS
Була розроблена як основна файлова система для ОС
Windows NT на початку 90-х років.
Підтримує великі файли і великі
диски.
Стійка до відмов.
Забезпечує високу швидкість операцій.
Має гнучку структуру, що дозволяє додавання нових типів записів і атрибутів файлів.
Підтримує довгі символьні імена (до 255 символів Unicode).
Забезпечує керування доступом до каталогів і файлів.
Слайд 13Структура тому NTFS
1. Основою структури є головна таблиця файлів (Master
File Table, MFT):
MFT містить щонайменше 1 запис для кожного файлу
тому (у тому числі для самої себе), розмір запису однаковий для усього тому і може бути 1, 2 або 4 кБ (типово 2 кБ).
Усі файли тому ідентифікуються номером файлу, який визначається його позицією в MFT.
2. Увесь том є послідовністю кластерів (а не лише область даних):
Порядковий номер кластера у томі називають логічним номером кластера (Logical Cluster Number, LCN).
Номери кластерів зберігаються у 64-розрядних покажчиках.
3. Базова одиниця розподілу дискового простору в NTFS – це не один кластер, а неперервна область кластерів, яку називають відрізком, або екстентом. Екстент задається логічним номером його першого кластера і кількістю кластерів в екстенті.
4. Завантажувальний сектор містить:
Стандартний блок параметрів BIOS.
Кількість кластерів у томі.
Початковий логічний номер кластера основної копії MFT і дзеркальної копії MFT.
5. Копія завантажувального сектора знаходиться у середині тому.
6. Перший екстент MFT містить 16 стандартних записів, які створюють під час форматування, про системні файли NTFS.
7. Нульовий запис MFT містить опис самої MFT, зокрема, адреси усіх її екстентів:
Безпосередньо після форматування MFT має один екстент, за яким записані системні файли.
В момент створення першого не системного файлу створюють другий екстент MFT.
Слайд 14Структура тому NTFS
(продовження)
Слайд 16Розміщення на диску файлів NTFS
1. Файли малого розміру (small):
Складаються щонайменше
з таких атрибутів:
- Стандартна інформація (SI – standard information).
- Ім’я
файлу (FN – file name).
- Дані (Data).
- Дескриптор захисту (SD – security descriptor).
Можуть бути повністю розміщені у запису MFT (усі атрибути резидентні).
2. Великі файли (large). Атрибут Data є нерезидентним, у його резидентній частині зберігають покажчики на усі екстенти.
3. Дуже великі файли (huge):
Якщо файл має багато атрибутів або сильно фрагментований, атрибут Data не вміщує усіх покажчиків на екстенти.
У такому випадку файл займає кілька записів MFT.
Основний запис називають базовим записом файлу, а решту – записами переповненняю.
4. Надвеликі файли (extremely huge):
У базовому записі може не вистачати місця для записів переповнення.
Атрибут Attribute List можна зробити нерезидентним.
Можна застосовувати подвійну непряму адресацію (нерезидентний атрибут посилається на інші нерезидентні атрибути).