Файловая система Unix - Unix filesystem

Версия 7 Unix структура файловой системы: подкаталоги "/" и "/ usr"
Обзор Unix макет файловой системы

В Unix и операционные системы вдохновленный этим, файловая система считается центральным компонентом операционной системы.[1] Это также была одна из первых частей системы, разработанная и реализованная Кен Томпсон в первой экспериментальной версии Unix, датированный 1969 г..[2]

Как и в других операционных системах, файловая система обеспечивает хранение и поиск информации, а также одну из нескольких форм межпроцессного взаимодействия, в том, что многие небольшие программы, которые традиционно образуют систему Unix, могут хранить информацию в файлах, чтобы другие программы могли их читать, хотя трубы дополнил его в этой роли, начиная с Третье издание. Кроме того, файловая система предоставляет доступ к другим ресурсам через так называемые файлы устройства это точки входа в терминалы, принтеры, и мышей.

Остальная часть этой статьи использует Unix как родовое имя для обозначения как исходной операционной системы Unix, так и ее множества рабочие.

Принципы

Файловая система выглядит как одна укоренившееся дерево каталогов.[1] Вместо обращения к отдельным томам, таким как разделы диска, съемный носитель и сетевые ресурсы как отдельные деревья (как сделано в ДОС и Windows: каждый водить машину имеет букву диска, которая обозначает корень дерева файловой системы), такие тома могут быть установленный в каталоге, в результате чего дерево файловой системы тома отображается как этот каталог в большом дереве.[1] Корень всего дерева обозначается /.

В оригинале Bell Labs Unix была обычная установка с двумя дисками, где первый диск содержал программы автозагрузки, а второй - файлы и программы пользователей. Этот второй диск был смонтирован в пустой каталог с именем usr на первом диске, в результате чего два диска будут отображаться как одна файловая система, а содержимое второго диска будет отображаться в / usr.

Каталоги Unix не содержать файлы. Вместо этого они содержат имена файлов в паре со ссылками на так называемые inodes, которые, в свою очередь, содержат как файл, так и его метаданные (владелец, разрешения, время последнего доступа и т. д., но без имени). Несколько имен в файловой системе могут относиться к одному и тому же файлу, эта функция называется жесткая ссылка.[1] Математические особенности жестких ссылок делают файловую систему ограниченным типом ориентированный ациклический граф, Хотя каталоги по-прежнему образуют дерево, поскольку обычно они не связаны жестко. (Как первоначально предполагалось в 1969 году, файловая система Unix фактически будет использоваться как общий граф с жесткими ссылками на каталоги, обеспечивающими навигацию, вместо имен путей.[2])

Типы файлов

Исходная файловая система Unix поддерживала три типа файлов: обычные файлы, каталоги, и «специальные файлы», также называемые файлами устройств.[1] В Распространение программного обеспечения Беркли (BSD) и Система V каждый добавил тип файла, который будет использоваться для межпроцессного взаимодействия: Добавлен BSD Розетки,[3] в то время как Система V добавила Файлы FIFO.

BSD также добавил символические ссылки (часто называемые «символическими ссылками») на ряд типов файлов, которые представляют собой файлы, которые ссылаются на другие файлы и дополняют жесткие ссылки.[3] Символические ссылки были смоделированы на основе аналогичной функции в Мультики,[4] и отличаются от жестких ссылок тем, что они могут охватывать файловые системы и их существование не зависит от целевого объекта. Другие системы Unix могут поддерживать дополнительные типы файлов.[5]

Обычный макет каталога

Существуют определенные соглашения о нахождении некоторых типов файлов, таких как программы, файлы конфигурации системы и пользовательские файлы. домашние каталоги. Впервые они были задокументированы в hier (7) страница руководства поскольку Версия 7 Unix;[6] последующие версии, производные и клоны обычно имеют аналогичную справочную страницу.[7][8][9][10][11][12]

Детали макета каталога со временем менялись. Хотя макет файловой системы не входит в Единая спецификация UNIX, существует несколько попыток стандартизировать (части) его, например Система V Двоичный интерфейс приложения, то Стандарт двоичной совместимости Intel, общая среда операционной системы и Linux Foundation с Стандарт иерархии файловой системы (FHS).[13]

Вот общий обзор общих расположений файлов в операционной системе Unix:

Каталог или файлОписание
/Слэш / один символ обозначает корень дерева файловой системы.
/ bin
Стенды для двоичные файлы и содержит некоторые основные утилиты, такие как ls или же cp, которые необходимы для монтирования / usr, если это отдельная файловая система, или для работы в однопользовательском (административном) режиме, когда / usr не может быть установлен. В System V.4 это символическая ссылка на / usr / bin. В противном случае он должен находиться в самой корневой файловой системе.
/ботинок
Содержит все файлы, необходимые для успешной загрузки. В Исследование Unix, это был один файл, а не каталог.[14] В настоящее время обычно в самой корневой файловой системе, если система, загрузчик и т. Д. Не требуют иного.
/ dev
Стенды для устройства. Содержит представления файлов периферийных устройств и псевдоустройства. Смотрите также: Администрация по присвоению имен и номеров в Linux. Должен находиться в самой корневой файловой системе.
/так далее
Содержит общесистемные файлы конфигурации и системные базы данных; это имя означает и так далее.[14] Первоначально также содержал «опасные утилиты обслуживания», такие как в этом,[6] но они обычно перемещаются в / sbin или где-нибудь еще. Должен находиться в самой корневой файловой системе.
/дома
Содержит домашние каталоги пользователей в Linux и некоторых других системах. В исходной версии Unix домашние каталоги находились в / usr вместо.[15] В некоторых системах используются или до сих пор используются разные местоположения: macOS есть домашние каталоги в / Пользователи, более старые версии BSD помещали их в / u, FreeBSD имеет / usr / home.
/ lib
Изначально основные библиотеки: C библиотеки, но не Фортран ед.[14] В современных системах он содержит разделяемые библиотеки, необходимые программам в / bin, и возможно загружаемый модуль ядра или же драйверы устройств. В дистрибутивах Linux могут быть варианты / lib32 и / lib64 для поддержки нескольких архитектур.
/средства массовой информации
Точка монтирования по умолчанию для съемных устройств, таких как USB-накопители, медиаплееры и т. Д. По здравому смыслу сам каталог, подкаталоги которого являются точками монтирования, находится в самом корневом разделе.
/ mnt
Стенды для устанавливать. Пустой каталог, обычно используемый системными администраторами в качестве временной точки монтирования. По здравому смыслу сам каталог, подкаталоги которого являются точками монтирования, находится в самом корневом разделе.
/ opt
Содержит локально установленное программное обеспечение. Возник в Система V, который имеет менеджер пакетов который устанавливает программное обеспечение в этот каталог (один подкаталог на пакет).[16]
/ proc
procfs виртуальный файловая система показывая информацию о процессы как файлы.
/корень
Домашний каталог для суперпользователь корень - то есть системный администратор. Домашний каталог этой учетной записи обычно находится в исходной файловой системе и, следовательно, не в / home (который может быть точкой монтирования для другой файловой системы) в случае, если необходимо выполнить определенное обслуживание, во время которого другие файловые системы недоступны. Такой случай может произойти, например, если жесткий диск выходит из строя и не может быть правильно смонтирован. По соглашению, этот каталог находится в самом корневом разделе; в любом случае это нет ссылка на * / home / root или что-то подобное.
/ sbin
Означает "системные (или суперпользовательские) двоичные файлы "и содержит основные утилиты, такие как в этом, обычно необходим для запуска, обслуживания и восстановления системы. Должен быть в самом корневом разделе.
/ SRV
Данные сервера (данные для услуг, предоставляемых системой).
/ sys
В некоторых Дистрибутивы Linux, содержит sysfs виртуальный файловая система, содержащий информацию об оборудовании и операционной системе. В системах BSD обычно символическая ссылка на исходные коды ядра в / usr / src / sys.
/ tmp
Место для временных файлов, которые не выдержат перезагрузки. Многие системы очищают этот каталог при запуске или использовании tmpfs реализовать это.
/ unix
Unix ядро в Research Unix и Система V.[14] С добавлением виртуальная память поддержка 3BSD, это было переименовано / vmunix.
/ usr
"Файловая система пользователя": изначально это каталог, содержащий домашние каталоги пользователей,[15] но уже третьим изданием Исследование Unix, ок. 1973, повторно использовался для разделения программ операционной системы на два диска (один из них - накопитель с фиксированной головкой на 256 КБ), так что основные команды либо появлялись в / bin или же / usr / bin.[17] Теперь он содержит исполняемые файлы, библиотеки и общие ресурсы, которые не являются критичными для системы, например X Window System, KDE, Perl и т. д. В старых системах Unix домашние каталоги пользователей могут по-прежнему отображаться в / usr наряду с каталогами, содержащими программы, хотя к 1984 г. это зависело от местные обычаи.[14]
/включают
Хранит заголовки разработки, используемые во всей системе. Заголовочные файлы в основном используются #включают директива в C язык, исторически именно так было выбрано название этого каталога.
/ lib
Хранит необходимые библиотеки и файлы данных для программ, хранящихся в / usr или где-нибудь еще.
/ libexec
Содержит программы, предназначенные для выполнения другими программами, а не непосредственно пользователями. Например, Отправить письмо исполняемый файл может быть найден в этом каталоге.[18] Не присутствовал в FHS до 2011 г .;[19] Дистрибутивы Linux традиционно перемещали содержимое этого каталога в / usr / lib, где они также находились в 4.3BSD.
/местный
Похоже на / usr в структуре, но его подкаталоги используются для дополнений, не входящих в состав дистрибутива операционной системы, например, пользовательских программ или файлов из BSD Коллекция портов. Обычно есть подкаталоги, такие как / USR / местные / библиотека или же / USR / местные / бен.
/Поделиться
Данные программы, не зависящие от архитектуры. В Linux и современных производных от BSD в этом каталоге есть подкаталоги, например человек за страницы, которые раньше отображались прямо под / usr в старых версиях.
/ var
Стенды для Переменная. Место для файлов, которые могут часто меняться - особенно по размеру, например, электронная почта, отправляемая пользователям в системе, или идентификатор процесса. заблокировать файлы.
/бревно
Содержит файлы системного журнала.
/Почта
Место, где хранится вся входящая почта. Пользователи (кроме корень) могут получить доступ только к своей почте. Часто этот каталог является символическая ссылка к / var / spool / mail.
/ катушка
Катушка каталог. Содержит задания на печать, почтовые катушки и другие задачи в очереди.
/ src
Место, где находится некомпилированный исходный код некоторых программ.
/ tmp
В / var / tmp Каталог - это место для временных файлов, которые следует сохранять между перезагрузками системы.

Смотрите также

Рекомендации

  • В этой статье использованы материалы из Citizendium статья "Файловая система Unix "под лицензией Creative Commons Attribution-ShareAlike 3.0 Непортированная лицензия но не под GFDL.
  1. ^ а б c d е Ричи, Д.; Томпсон, К. (Июль 1978 г.). «Система разделения времени UNIX». Bell System Tech. J. 57 (6): 1905–1929. CiteSeerX  10.1.1.112.595. Дои:10.1002 / j.1538-7305.1978.tb02136.x.
  2. ^ а б Ричи, Деннис М. (1979). Эволюция системы разделения времени Unix. Языковой дизайн и методология программирования конф.
  3. ^ а б Леффлер, Сэмюэл Дж.; МакКьюзик, Маршалл Кирк; Карелс, Майкл Дж.; Квартирант, Джон С. (Октябрь 1989 г.). Разработка и реализация операционной системы 4.3BSD UNIX. Эддисон-Уэсли. ISBN  978-0-201-06196-3.
  4. ^ МакКузик, Маршалл Кирк; и другие. «Быстрая файловая система для Unix» (PDF). Freebsd.org. CSRG, Калифорнийский университет в Беркли. Получено 16 ноября 2016.
  5. ^ стат (2) – Linux Программиста Руководство - Системные вызовы
  6. ^ а б hier (7) – Версия 7 Unix Программиста Руководство
  7. ^ hier (7) – FreeBSD Разнообразная информация Руководство
  8. ^ hier (7) – OpenBSD Разнообразная информация Руководство
  9. ^ "hier (7) страница руководства для 2.9.1 BSD".
  10. ^ "hier (7) справочная страница для ULTRIX 4.2".
  11. ^ "hier (7) страница руководства для SunOS 4.1.3".
  12. ^ hier (7) – Linux Программиста Руководство - Обзор, условные обозначения и разное
  13. ^ Джордж Крафт IV (1 ноября 2000 г.). "Где установить мои продукты в Linux?". Linux журнал. Получено 13 ноября 2014.
  14. ^ а б c d е Керниган, Брайан В.; Пайк, Роб (1984). Среда программирования UNIX. Прентис-Холл. стр.63–65. Bibcode:1984упе..книга ..... К.
  15. ^ а б Ричи, Деннис. «Примечания к Unix с 1972 года». Получено 14 января 2018.
  16. ^ Двоичный интерфейс приложения System V Выпуск 4.1 (18 марта 1997 г.)
  17. ^ М. Д. Макилрой (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986. CSTR 139, Bell Labs.
  18. ^ "Глава 7. sendmail". UNICOS / mp Администрирование сетевых средств. Cray. Получено 14 сентября 2013.
  19. ^ "fhs-spec, редакция 44".