Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Альтернативная энергия

Беспроводные выключатели nooLite

Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Глава 16. Обратная сторона файловой системы

Предыдущий раздел Оглавление Следующий раздел

16.3. Индексные дескрипторы файлов

Каждому файлу на диске соответствует один и только один индексный дескриптор файла, который идентифицируется своим порядковым номером — индексом файла. Это означает, что число файлов, которые могут быть созданы в файловой системе, ограничено числом индексных дескрипторов, которое либо явно задается при создании файловой системы, либо вычисляется исходя из физического объема дискового раздела.

Строение индексного дескриптора файла приведено в табл. 16.4.

Таблица 16.4. Структура индексного дескриптора

Название поля

Тип

Описание

i_mode

USHORT

Тип и права доступа к данному файлу

i_uid

USHORT

Идентификатор владельца файла (Owner Uid)

i_size

ULONG

Размер файла в байтах

i_atime

ULONG

Время последнего обращения к файлу (Access time)

i_ctime

ULONG

Время создания файла

i_mtime

ULONG

Время последней модификации файла

i_dtime

ULONG

Время удаления файла

i_gid

USHORT

Идентификатор группы (GID)

i_links_count

USHORT

Счетчик числа связей (Links count)

i_blocks

ULONG

Число блоков, занимаемых файлом

i_flags

ULONG

Флаги файла (File flags)

i_reserved1

ULONG

Зарезервировано для ОС

i_block

ULONG[15]

Указатели на блоки, в которых записаны данные файла (это поле подробно описано в разд. 16.4)

i_version

ULONG

Версия файла (для NFS)

i_file_acl

ULONG

ACL файла

i_dir_acl

ULONG

ACL каталога

i_faddr

ULONG

Адрес фрагмента (Fragment address)

i_frag

UCHAR

Номер фрагмента (Fragment number)

i_fsize

UCHAR

Размер фрагмента (Fragment size)

i_pad1

USHORT

Заполнение

i_reserved2

ULONG[2]

Зарезервировано

Поле типа и прав доступа к файлу представляет собой двухбайтовое слово, каждый бит которого служит флагом, индицирующим отношение файла к определенному типу или установку одного конкретного права на файл.

Таблица 16.5. Структура поля, задающего тип и права доступа

Идентификатор

Значение

Назначение флага (поля)

S_IFMT

F000

Маска для типа файла

S_IFSOCK

A000

Доменное гнездо (socket)

S_IFLNK

C000

Символическая ссылка

S_IFREG

8000

Обычный (regular) файл

S_IFBLK

6000

Блок-ориентированное устройство

S_IFDIR

4000

Каталог

S_IFCHR

2000

Байт-ориентированное (символьное) устройство

S_IFIFO

1000

Именованный канал (fifo)

S_ISUID

0800

SUID — бит смены владельца

S_ISGID

0400

SGID — бит смены группы

S_ISVTX

0200

Бит сохранения задачи (sticky bit)

S_IRWXU

01C0

Маска прав владельца файла

S_IRUSR

0100

Право на чтение

S_IWUSR

0080

Право на запись

S_IXUSR

0040

Право на выполнение

S_IRWXG

0038

Маска прав группы

S_IRGRP

0020

Право на чтение

S_IWGRP

0010

Право на запись

S_IXGRP

0008

Право на выполнение

S_IRWXO

0007

Маска прав остальных пользователей

S_IROTH

0004

Право на чтение

S_IWOTH

0002

Право на запись

S_IXOTH

0001

Право на выполнение

Среди индексных дескрипторов имеется несколько дескрипторов, которые зарезервированы для специальных целей и играют особую роль в файловой системе (табл. 16.6).

Таблица 16.6. Особые индексные дескрипторы

Идентификатор

Значение

Описание

EXT2_BAD_INO

1

Индексный дескриптор, в котором перечислены адреса дефектных блоков на диске (Bad blocks inode)

EXT2_ROOT_INO

2

Индексный дескриптор корневого каталога файловой системы (Root inode)

EXT2_ACL_IDX_INO

3

ACL inode

EXT2_ACL_DATA_INO

4

ACL inode

EXT2_BOOT_LOADER_INO

5

Индексный дескриптор загрузчика (Boot loader inode)

EXT2_UNDEL_DIR_INO

6

Инлексный дескриптор каталога для удаленных файлов (Undelete directory inode)

EXT2_FIRST_INO

11

Первый незарезервированный индексный дескриптор

Самый важный дескриптор в этом списке — дескриптор корневого каталога. Этот дескриптор указывает на корневой каталог, который, подобно всем каталогам, представляет собой связанный список, состоящий из записей переменной длины. Каждая запись имеет следующую структуру (табл. 16.7):

Таблица 16.7. Структура дескриптора, описывающего корневой каталог

Название поля

Тип

Описание

Inode

ULONG

Номер индексного дескриптора (индекс) файла

Rec_len

USHORT

Длина этой записи

Name_len

USHORT

Длина имени файла

Name

CHAR[0]

Имя файла

Использование записей переменной длины позволяет использовать длинные имена файлов без пустой траты дискового пространства. Отдельная запись в каталоге не может пересекать границу блока (т. е. должна быть расположена целиком внутри одного блока). Поэтому, если очередная запись не помещается целиком в данном блоке, она переносится в следующий блок, а предыдущая запись продолжается таким образом, чтобы она заполнила блок до конца.


Предыдущий раздел Оглавление Следующий раздел

Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют