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

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

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

Lines Club

Ищем достойных соперников.




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

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

Всё является файлом

Пред. 

Глава 9. Файловая система Linux

 След.


Всё является файлом

Стартовое руководствоWe ознакомило вас с понятиями владельца файла и разрешениями для файла, но для того, чтобы действительно понять файловую систему UNIX® (а это также касается и файловых систем Linux), необходимо, чтобы мы заново определили понятие «Что такое файл.»

Сейчас «всё» действительно означает всё. Жесткий диск, раздел на жестком диске, параллельный порт, подключение к веб-сайту, карта Ethernet - всё это файлы. Даже каталоги являются файлами. Linux различает много типов файлов в дополнение к стандартным файлам и каталогам. Обратите внимание, что здесь под типом файла мы подразумеваем не содержимое файла: в GNU/Linux, как и в любой другой системе UNIX®, файл, будь то изображение PNG, двоичный файл или что-либо еще, - это просто поток байтов. Разделение файлов согласно их содержимому оставляется приложениям.

Различные типы файлов

Если вы помните, когда вы выполняете команду ls -l, символ перед правами доступа определяет тип файла. Мы уже видели два типа файлов: обычные файлы (-) и каталоги (d). Когда вы бродите по дереву файлу и просматриваете содержимое каталогов, вы можете также встретить и другие типы файлов:

  1. Файлы символьного режима: эти файлы являются либо специальными системными файлами (типа /dev/null, который мы уже рассматривали), либо периферийными устройствами (последовательные или параллельные порты), характерной особенностью которых является то, что их содержимое (если оно есть) не буферизуется (т.е. оно не хранится в памяти). Такие файлы идентифицируются буквой c.
  2. Файлы блочного режима: эти файлы являются периферийными устройствами, и, в отличие от символьных файлов, их содержимое буферизуется. Например, файлами этой категории являются жесткие диски, разделы на жестком диске, дисководы, CD-ROM и так далее. Примеры файлов блочного доступа: /dev/hda, /dev/sda5. В информации, выводимой командой ls -l, они идентифицируются буквой b.
  3. Символические ссылки: эти файлы являются очень распространенными и часто используется в процедуре запуска системы Mandrakelinux (см. главу Глава 11, Загрузочные файлы: init sysv). Как следует из их имени, их цель - связывать файлы символическим способом, что означает, что они являются файлами, содержащими путь к другому файлу. Они могут и не указывать на существующий файл. Очень часто их называют «мягкими ссылками», и идентифицируются они буквой «l».
  4. Именованные каналы: если вы были удивлены, то так оно и есть, да, они очень похожи на каналы, используемые в командах shell'а, но с той разницей, что у этих каналов и в самом деле есть имена. Однако они очень редки и маловероятно, что вы встретите их во время своего путешествия по дереву файлов. На всякий случай, чтобы вы знали, они идентифицируются буквой p. Чтобы узнать больше об этом, загляните в «Анонимные каналы и именованные каналы».
  5. Сокеты: это тип файла для всех сетевых подключений, но только некоторые из них имеют названия. А самое главное, что существует несколько типов сокетов, а связь может быть установлена только через один из этих типов, но это уже выходит за рамки данной книги. Такие файлы идентифицируются буквой s.

Вот примеры для каждого из файлов:

$ ls -l /dev/null /dev/sda  /etc/rc.d/rc3.d/S20random /proc/554/maps \
/tmp/ssh-queen/ssh-510-agent
crw-rw-rw-    1 root     root       1,   3 May  5  1998 /dev/null
brw-rw----    1 root     disk       8,   0 May  5  1998 /dev/sda
lrwxrwxrwx    1 root     root           16 Dec  9 19:12 /etc/rc.d/rc3.d/
  S20random -> ../init.d/random*
pr--r--r--    1 queen  queen         0 Dec 10 20:23 /proc/554/maps|
srwx------    1 queen  queen         0 Dec 10 20:08 /tmp/ssh-queen/
  ssh-510-agent=
$

Inode'ы

Inode'ы - это фундаментальная часть любой файловой системы UNIX® наряду с парадигмой «Всё является файлом». Слово «inode» - это сокращение от Information NODE (информационный узел).

Inode'ы хранятся на диске в таблице inode. Они существуют для всех типов файлов, которые могут храниться в файловой системе, включая каталоги, именованные каналы, файлы символьного режима и так далее. Отсюда вытекает другая известная фраза: «Inode это есть файл». При помощи inode'ов UNIX® идентифицирует файл уникальным способом.

Да, вы верно все прочитали: в UNIX® вы идентифицирует файл не по его имени, а по номеру его inode[22]. Причина этого заключается в том, что один и тот же файл может иметь несколько имен или вообще не иметь имени. В UNIX® имя файла - это просто пункт в каталоге inode. Такой пункт называется ссылкой. Давайте рассмотрим ссылки более подробно.



[22] Важно: обратите внимание, что номера inode уникальны в пределах файловой системы, т.е. inode с таким же номером может существовать в другой файловой системе. Это приводит к различению дисковых inode'ов и inode'ов "в памяти". Два дисковых inode'а могут иметь один и тот же номер, если они находятся на двух различных файловых системах, inode'ы "в памяти" имеют номера, уникальные для всей системы. Одно из решений получения уникальности, например, - хэш номера дискового inode'а против идентификатора блочного устройства.


Пред. 

Уровень выше

 След.

Сравнение нескольких файловых систем 

Начало

 Ссылки




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

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