Устройство файловой системы
Файловая система построена из трех основных компонентов (табл. 4.1):
r суперблок (superblock);
r массив индексных дескрипторов (inode list);
r блоки хранения данных.
Таблица 4.1. Устройство файловой системы
Магнитный диск | ||||
Суперблок | Массив индексных дескрипторов | Данные | ||
Блок1 | Блок2 | Блок3 | ... | БлокN |
Cуперблок содержит основную информацию, необходимую для монтирова- ния и работы файловой системы:
r тип файловой системы;
r размер и количество блоков в файловой системе;
r количество индексных дескрипторов;
r время последнего монтирования;
r информация о том, была ли отмонтирована файловая система;
r счетчик числа монтирований;
r список свободных блоков и индексных дескрипторов и т. п.
Если суперблок файловой системы испорчен, то монтирование файловой сис- темы без его восстановления невозможно. Современные файловые системы специально сохраняют в заранее известных блоках диска копии суперблока для возможности их использования при восстановлении файловой системы.
Индексные дескрипторы или, иначе, метаданные — это данные о самих фай- лах. В индексных дескрипторах сохраняются следующие сведения о файлах:
r владелец и группа пользователей файла;
r права доступа к файлу;
r тип файла;
r количество имен у файла (link count);
r дата доступа к файлу (файл открыт на чтение);
r дата модификации (файл открыт на запись);
r дата изменения метаданных;
r количество блоков, занятое файлом;
r указатели на блоки данных файла.
Каталоги предоставляют собой особый тип файлов, содержащих таблицу, в которой хранятся имена файлов, находящихся в данном каталоге, и соот- ветствующие им номера индексных дескрипторов (inode). Эти записи связы- вают имена файлов с их индексными дескрипторами, а те, в свою очередь, предоставляют информацию о местонахождении блоков данных файла. В блоках данных нет никакой информации, способной указать номер индекс- ного дескриптора файла, которому принадлежит этот блок данных. Точно так же, в индексном дескрипторе не хранится имя файла, который данный ин- дексный дескриптор описывает. Именно каталоги определяют положение файла в дереве файловой системы, т. к. сам файл не содержит информации о месте его нахождения.
На один и тот же индексный дескриптор может указывать несколько имен файлов. Это фиксируется счетчиком имен файла (link counter) в индексном дескрипторе. Если у файла имеется несколько имен, то говорят, что между этими именами существует жесткая связь (hard link). То есть разные имена файлов указывают на одни метаданные и, следовательно, на одни и те же блоки данных. Все имена файла абсолютно эквивалентны, и изменение со- держимого этих файлов будет совершенно синхронным. Нет никакой воз- можности определить, какое имя у файла было изначально, а какое появи- лось потом.
У каталогов имеются как минимум два имени:
r обычное имя каталога, находящееся в родительском каталоге (например,
/home/user1);
r имя "точка" (.) — имя текущего каталога.
При появлении в любом каталоге подкаталога количество имен у этого ката- лога увеличивается на единицу, т. к. в дочернем каталоге всегда содержится имя "две точки" (..) — имя родительского каталога.
Количество имен у файла можно определить с помощью команды ls -l, а полу- чить номера индексных дескрипторов можно, используя ls -i (пример 4.23).
Пример 4.23. Определение номера индексного дескриптора |
$ ls -ldi /etc
6 drwxr-xr-x 87 root root 6064 Oct 14 00:13 /etc
Из полученного листинга видно, что номер inode каталога /etc равен 6, а ко- личество имен у него 87, следовательно, количество подкаталогов в нем рав- няется 85.
Подробную информацию об индексном дескрипторе файла можно получить, используя команду stat (пример 4.24).
Пример 4.24. Команда stat |
$ stat /etc
File: | `/etc' | |||
Size: | Blocks: 12 | IO Block: 4096 | Directory | |
Device: | 305h/773d | Inode: 6 | Links: 87 |
|
+0600
+0500
+0500
Зарезервированы три номера для индексных дескрипторов:
r 0 — свободный индексный дескриптор (для удаленных файлов в индекс- ный дескриптор записывается номер 0);
r 1 — зарезервировано для будущего использования, но в GNU/Linux ис- пользуются для файловых систем, порожденных ядром (проверьте катало- ги /proc и /sys);
r 2 — inode корневой файловой системы и точек монтирования файловых систем.
Дата добавления: 2015-06-12; просмотров: 691;