|
Файловая система Linux - стр.3
|
|
|
Файлы
Файлы представляют собой совокупности данных, имеющие собственные имена. Имя файла является его идентификатором. Это означает то, что в одном каталоге не могут храниться несколько файлов, имеющих одинаковое имя.
Вся необходимая операционной системе информация о файле, кроме его символьного имени, хранится в специальной системной таблице, называемой индексным дескриптором (inode) файла. Индексные дескрипторы всех файлов имеют одинаковый размер - 64 байта и содержат данные о типе файла, о физическом расположении файла на диске (описанные далее 13 элементов), размере в байтах, о дате создания, последней модификации и последнего обращения к файлу, о привилегиях доступа и некоторую другую информацию. Индексные дескрипторы пронумерованы и хранятся в специальной области файловой системы. Номер индексного дескриптора является уникальным именем файла. Соответствие между полными символьными именами файлов и их уникальными именами устанавливается с помощью иерархии каталогов.
В системе Ext2fs данные не фрагментированы, но хранятся небольшими блоками. По умолчанию размер блока составляет 1 Кб, система поддерживает также размер и в 2 и 4 Кб. Операции же ввода/вывода осуществляются большими порциями, что обеспечивается объединением запросов физически смежных блоков в кластер.
В файловой системе Ext2fs действует разделение на множественные группы блоков. При размещении файла группы выбираются следующим образом:
• для размещения данных, как правило, выбирается группа, где размещается сам индекс inode,
• для размещения индекса inode и файлов, не являющихся каталогами, выбирается группа, соответствующая родительскому каталогу файла.
В общем случае файл может располагаться в несмежных блоках дисковой памяти. Логическая последовательность блоков в файле задается набором из 13 элементов. Первые 10 элементов предназначаются для непосредственного указания номеров первых 10 блоков файла. Если размер файла превышает 10 блоков, то в 11 элементе указывается номер блока, в котором содержится список следующих 128 блоков файла. Если файл имеет размер более, чем 10+128 блоков, то используется 12-й элемент, содержащий номер блока, в котором указываются номера 128 блоков, каждый из которых может содержать еще по 128 номеров блоков файла. Таким образом, 12-й элемент используется для двухуровневой косвенной адресации. В случае, если файл больше, чем 10+128+1282 блоков, то используется 13 элемент для трехуровневой косвенной адресации. При таком способе адресации предельный размер файла составляет 2 113 674 блока.
В зависимости от хранимой информации на логическом уровне рассмотрения различают следующие типы файлов:
• Пользовательские - файлы, создаваемые и управляемые пользователем
• Системные - файлы, содержащие данные, необходимые для функционирования системы. Например, файл /etc/passwd - системный файл, обновляющийся каждый раз при добавлении к системе нового пользователя.
• Исполнимые - файлы-программы, исполняемые системой.
Соглашения об именах файлов
• Имя может содержать до 256 символов
• Имя может содержать символы обоих регистров (верхнего и нижнего). Регистр символов в именах различается, то есть файлы Linux и linux - это различные файлы и могут располагаться в одном каталоге.
• Разрешается включать в имя дополнительные символы:"-" (тире),"_" (подчеркивание)"." (точка).
• Имя не должно содержать метасимволы, такие как "*" (звездочка), "?" (знак вопроса), обратный слеш, пробел (вообще, пробел является допустимым символом, если имя файла взять в двойные кавычки или экранировать пробел обратным слэшем, но в целях совместимости, лучше символ пробела не использовать), так как они имеют особое значение в оболочке Linux.
Каталоги
Как все файловые системы Linux поддерживает понятие каталога. Под каталогами понимаются папки (области на диске), в которых могут храниться файлы и другие каталоги. Каталог, содержащий другой каталог, по отношению к последнему называется родительским, а хранящийся в нем каталог - его подкаталогом. Так, например: если в каталоге "parent" создать каталог "children", то "parent" будет родительским каталогом для "children", а тот, в свою очередь, его подкаталогом.
Внутри системы каталоги хранятся на диске так же, как и обычные файлы, однако их содержимое обрабатывается несколько по-другому. Каждый элемент каталога состоит из связанных записей, содержащих следующую информацию:
• Длина записи
• Имя файла
• Номер индекса inode, на который ссылается запись
Каталоги хранятся отдельно друг от друга с распределением по всем доступным группам.
Файловая система Linux имеет иерархическую структуру, она организована в виде дерева с одной исходной вершиной, называемой корневым каталогом. Корневой каталог является родительским каталогом для всей файловой системы. Для обозначения корневого каталога используется символ слеш "/". Рис.2 отражает иерархию файловой системы.
Рис.2 Иерархия файловой системы
Для имен каталогов действуют те же ограничения, что и для имен файлов. Символ "/" считается символом каталога и его присутствие рядом с именем файла в режиме просмотра свидетельствует о том, что это каталог.
|
|
|
|
|