Файловая система UNIX V7

Хотя это старая файловая система основные элементы используются и современных UNIX системах.

Особенности:

· Имена файлов ограничены 14 символами ASCII, кроме косой черты "/" и NUL - отсутствие символа. (в последующих версиях расширены до 255)

· Поддержка ссылок.

· Контроль доступа к файлам и каталогам.

· Имена чувствительны к регистру, my.txt и MY.TXT это разные файлы.

· Используется схема i-узлов.

· Не делается различий между разными файлами (текстовыми, двоичными и д.р.).

· Поддерживаются символьные специальные файлы (для символьных устройств ввода-вывода).
- Если открыть файл /dev/lp и записать в него данные, то данные будут распечатаны на принтере.
- Если открыть файл /dev/tty и прочитать из него данные, то получим данные, введенные с клавиатуры.

· Поддерживаются блочные специальные файлы (для блочных устройств ввода-вывода, например /dev/hd1).

· Позволяет монтировать разделы в любое место дерева системы.

 

Расположение файловой системы UNUX

Суперблок содержит:

· Количество i-узлов

· Количество дисковых блоков

· Начало списка свободных блоков диска

При уничтожении суперблока, файловая система становится не читаемой.

Каждый i-узел имеет 64 байта в длину и описывает один файл (в том числе каталог).

 

Каталог содержит по одной записи для каждого файла.

 

Каталоговая запись UNIX V7 в 16 байт

Структура i-узела

Поле Байты Описание
Mode Тип файла, биты защиты, биты setuid и setgid
Nlinks Количество каталоговых записей, указывающий на этот i-узел
Uid Идентификатор владельца
Gid Номер группы
Size Размер файла в байтах
Addr Адрес первых 10 дисковых блоков файла и 3 косвенных блока
Gen Счетчик использования i-узла
Atime Время последнего доступа файла
Mtime Время последнего изменения файла
Ctime Время последнего изменения i-узла

 

Первые 10 дисковых блоков файла хранятся в самом i-узле, при блоке в 1Кбайт, файл может быть 10Кбайт.

Дополнительные блоки для i-узла, в случае больших файлов:

· Одинарный косвенный блок -дополнительный блок с адресами блоков файла, если файл не сильно большой, то один из адресов в i-узле указывает на дополнительный блок с адресами. Файл может быть 266Кбайт=10Кбайт+256Кбайт (256Кбайт <= 256 (2^8)-адресов блоков = 1Кбайт-размер блока / 4байта-размер адреса)

· Двойной косвенный блок- дополнительный блок с адресами одинарных косвенных блоков, если одного дополнительного блока не хватает. Файл может быть 65Мбайт=10Кбайт+2^8Кбайт+2^16Кбайт.

· Тройной косвенный блок - дополнительный блок с адресами двойных косвенных блоков, если одного одинарного косвенного блока не хватает. Файл может быть 16Гбайт=10Кбайт+2^8Кбайт+2^16Кбайт+2^24Кбайт.

i-узел UNIX V7