Файловая система Unix
В Unix и операционных системах вдохновленных ею файловая система считается центральным компонентом операционной системы. [ 1 ] Это также была одна из первых частей системы, разработанная и реализованная Кеном Томпсоном в первой экспериментальной версии Unix, датированной 1969 годом . [ 2 ]
Как и в других операционных системах, файловая система обеспечивает хранение и извлечение информации, а также одну из нескольких форм межпроцессного взаимодействия , поскольку многие небольшие программы, традиционно составляющие систему Unix, могут хранить информацию в файлах, чтобы другие программы могли ее читать, хотя каналы дополнил его в этой роли, начиная с Третьего издания . Также файловая система обеспечивает доступ к другим ресурсам через так называемые файлы устройств , которые являются точками входа в терминалы , принтеры и мыши .
В оставшейся части статьи Unix используется как общее имя для обозначения как исходной операционной системы Unix, так и многих ее аналогов .
Принципы
[ редактировать ]Файловая система выглядит как одно корневое дерево каталогов. [ 1 ] Вместо обращения к отдельным томам, таким как разделы диска , съемные носители и общие сетевые ресурсы , как к отдельным деревьям (как это делается в DOS и Windows : каждый диск имеет букву диска, обозначающую корень дерева его файловой системы), такие тома можно монтировать на каталог, в результате чего дерево файловой системы тома отображается как этот каталог в большем дереве. [ 1 ] Корень всего дерева обозначается /
.
В исходной версии Unix Bell Labs была обычной установка с двумя дисками, где первый диск содержал программы запуска, а второй — файлы и программы пользователей. Этот второй диск был смонтирован в пустой каталог с именем usr
на первом диске, в результате чего два диска отображаются как одна файловая система, а содержимое второго диска можно просмотреть по адресу /usr
.
Каталоги Unix не содержат файлов. Вместо этого они содержат имена файлов в паре со ссылками на так называемые inodes , которые, в свою очередь, содержат как файл, так и его метаданные (владелец, разрешения, время последнего доступа и т. д., но не имя). Несколько имен в файловой системе могут относиться к одному и тому же файлу, эта функция называется жесткой ссылкой . [ 1 ] Математические особенности жестких ссылок делают файловую систему ограниченным типом направленного ациклического графа , хотя каталоги по-прежнему образуют дерево, поскольку обычно они не могут быть жестко связанными. (Как первоначально предполагалось в 1969 году, файловая система Unix фактически будет использоваться как общий граф с жесткими ссылками на каталоги, обеспечивающие навигацию, а не с именами путей. [ 2 ] )
Типы файлов
[ редактировать ]Исходная файловая система Unix поддерживала три типа файлов: обычные файлы, каталоги и «специальные файлы», также называемые файлами устройств. [ 1 ] В Berkeley Software Distribution (BSD) и System V добавлены типы файлов, которые будут использоваться для межпроцессного взаимодействия : BSD добавила сокеты , [ 3 ] в то время как System V добавила файлы FIFO .
BSD также добавила символические ссылки (часто называемые «символическими ссылками») к ряду типов файлов, которые представляют собой файлы, которые ссылаются на другие файлы и дополняют жесткие ссылки. [ 3 ] Символические ссылки были созданы по образцу аналогичной функции в Multics . [ 4 ] и отличаются от жестких ссылок тем, что могут охватывать файловые системы и их существование не зависит от целевого объекта. Другие системы Unix могут поддерживать дополнительные типы файлов. [ 5 ]
Обычная структура каталогов
[ редактировать ]Существуют определенные соглашения для поиска некоторых типов файлов, таких как программы, файлы конфигурации системы и домашние каталоги пользователей . Впервые они были зафиксированы в hier(7)
справочная страница начиная с версии 7 Unix ; [ 6 ] последующие версии, производные и клоны обычно имеют аналогичную справочную страницу. [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ]
Детали структуры каталога со временем менялись. Хотя структура файловой системы не является частью Единой спецификации UNIX , существует несколько попыток стандартизировать ее (части), такие как System V бинарный интерфейс приложений , стандарт двоичной совместимости Intel , общая среда операционной системы и Linux Foundation . s Стандарт иерархии файловой системы (FHS). [ 13 ]
Вот общий обзор распространенных расположений файлов в операционной системе Unix:
Каталог или файл | Описание |
---|---|
/
|
Слэш / один только этот символ обозначает корень дерева файловой системы.
|
|
Означает двоичные файлы и содержит некоторые фундаментальные утилиты, такие как ls или cp , которые необходимы для монтирования /usr , если это отдельная файловая система, или для запуска в однопользовательском (административном) режиме, когда /usr невозможно смонтировать. В системе V.4 это символическая ссылка на /usr/bin . В противном случае он должен находиться в самой корневой файловой системе.
|
Содержит все файлы, необходимые для успешного процесса загрузки. В Research Unix это был один файл, а не каталог. [ 14 ] В настоящее время обычно в самой корневой файловой системе, если система, загрузчик и т. д. не требуют иного. | |
Подставки для устройств . Содержит файловые представления периферийных устройств и псевдоустройств . См. также: Служба присвоения имен и номеров Linux . Должен находиться в самой корневой файловой системе. | |
|
Содержит общесистемные файлы конфигурации и системные базы данных; название означает и так далее [ 14 ] лучшее расширение — это редактируемые текстовые конфигурации но теперь . Первоначально также содержал «опасные утилиты обслуживания», такие как init , [ 6 ] но обычно их перемещают в /sbin или где-то еще. Должен находиться в самой корневой файловой системе.
|
|
Содержит домашние каталоги пользователей в Linux и некоторых других системах. В исходной версии Unix домашние каталоги находились в /usr вместо. [ 15 ] Некоторые системы до сих пор используют или использовали разные места: в macOS есть домашние каталоги. /Users , более старые версии BSD помещали их в /u , во FreeBSD есть /usr/home .
|
|
Первоначально необходимые библиотеки : C библиотеки , но не библиотеки Fortran . [ 14 ] В современных системах он содержит общие библиотеки, необходимые программам в /bin и, возможно, загружаемый модуль ядра или драйверы устройств . Дистрибутивы Linux могут иметь варианты /lib32 и /lib64 для поддержки мультиархитектуры.
|
|
Точка монтирования по умолчанию для съемных устройств, таких как USB-накопители, медиаплееры и т. д. По здравому смыслу сам каталог, подкаталоги которого являются точками монтирования, находится в самом корневом разделе. |
|
Подставки для крепления . Пустой каталог, обычно используемый системными администраторами в качестве временной точки монтирования. По здравому смыслу сам каталог, подкаталоги которого являются точками монтирования, находится в самом корневом разделе. |
|
Содержит локально установленное программное обеспечение. Возник в System V , в которой есть менеджер пакетов , который устанавливает программное обеспечение в этот каталог (один подкаталог на пакет). [ 16 ] |
|
procfs Виртуальная файловая система , показывающая информацию о процессах в виде файлов. |
|
Домашний каталог суперпользователя root — то есть системного администратора. Домашний каталог этой учетной записи обычно находится в исходной файловой системе и, следовательно, не в /home (который может быть точкой монтирования для другой файловой системы) на случай, если потребуется выполнить определенное обслуживание, во время которого другие файловые системы недоступны. Такая ситуация может произойти, например, если жесткий диск вышел из строя и его невозможно правильно смонтировать. |
|
Означает « системные (или суперпользовательские) двоичные файлы » и содержит фундаментальные утилиты, такие как init , обычно требуется для запуска, обслуживания и восстановления системы. Должен находиться в самом корневом разделе.
|
|
Данные сервера (данные об услугах, предоставляемых системой). |
|
В некоторых дистрибутивах Linux содержит sysfs виртуальную файловую систему , содержащую информацию, относящуюся к оборудованию и операционной системе. В системах BSD обычно это символическая ссылка на исходные коды ядра в /usr/src/sys .
|
|
Место для временных файлов, которые не сохранятся после перезагрузки. Многие системы очищают этот каталог при запуске или используют для его реализации tmpfs . |
|
Unix Ядро в Research Unix и System V. [ 14 ] С добавлением поддержки виртуальной памяти в 3BSD она была переименована. /vmunix .
|
|
«Файловая система пользователя»: первоначально каталог, содержащий домашние каталоги пользователей, [ 15 ] но уже к Третьему изданию Research Unix , ок. 1973 года, повторно использовался для разделения программ операционной системы на два диска (один из них представлял собой диск с фиксированной головкой емкостью 256 КБ), так что основные команды либо появлялись на /bin или /usr/bin . [ 17 ] Теперь он содержит исполняемые файлы, библиотеки и общие ресурсы, которые не являются критическими для системы, такие как система X Window , оконные менеджеры , языки сценариев и т. д. В старых системах Unix домашние каталоги пользователей все еще могут появляться в /usr наряду с каталогами, содержащими программы, хотя к 1984 году это зависело от местных обычаев. [ 14 ]
|
|
Хранит заголовки разработки, используемые во всей системе. Заголовочные файлы в основном используются #include директива на языке C , исторически именно так было выбрано имя этого каталога.
|
|
Хранит необходимые библиотеки и файлы данных для программ, хранящихся внутри. /usr или где-то еще.
|
|
Содержит программы, предназначенные для выполнения другими программами, а не непосредственно пользователями. Например, Sendmail . в этом каталоге можно найти исполняемый файл [ 18 ] Не присутствует в FHS до 2011 года; [ 19 ] Дистрибутивы Linux традиционно перемещали содержимое этого каталога в /usr/lib , где они также находились в 4.3BSD.
|
|
Напоминает /usr по структуре, но его подкаталоги используются для дополнений, не являющихся частью дистрибутива операционной системы, таких как пользовательские программы или файлы из BSD коллекции портов . Обычно имеет подкаталоги, такие как /usr/local/lib или /usr/local/bin .
|
|
Данные программы, не зависящие от архитектуры. В Linux и современных производных BSD этот каталог имеет подкаталоги, такие как man для страниц руководства , которые раньше располагались непосредственно под /usr в старых версиях.
|
|
Обозначает переменную . Место для файлов, которые могут часто меняться, особенно по размеру, например электронные письма, отправляемые пользователям системы, или файлы блокировки идентификатора процесса . |
|
Содержит файлы системного журнала. |
|
Место, где хранится вся входящая почта. Пользователи (кроме root ) могут получить доступ только к своей почте. Часто этот каталог представляет собой символическую ссылку на /var/spool/mail .
|
|
спула Каталог . Содержит задания печати, почтовые спулы и другие задачи, поставленные в очередь. |
|
Место, где находится некомпилированный исходный код некоторых программ. |
|
The /var/tmp Каталог — это место для временных файлов, которые следует сохранять между перезагрузками системы.
|
См. также
[ редактировать ]- Бтрфс
- ext2
- ext3
- ext4
- Стандарт иерархии файловой системы
- МОЛОТОК
- JFS (файловая система)
- Файловая система Unix
- Файловая система Истины
- ZFS
Ссылки
[ редактировать ]- В эту статью включены материалы из статьи Citizendium « Файловая система Unix », которая распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 Unported License , но не по GFDL .
- ^ Jump up to: а б с д и Ричи, DM ; Томпсон, К. (июль 1978 г.). «Система разделения времени UNIX». Белл Систем Тех. Дж . 57 (6): 1905–1929. CiteSeerX 10.1.1.112.595 . дои : 10.1002/j.1538-7305.1978.tb02136.x .
- ^ Jump up to: а б Ричи, Деннис М. (1979). Эволюция системы разделения времени Unix . Конференция по языковому дизайну и методологии программирования.
- ^ Jump up to: а б Леффлер, Сэмюэл Дж .; МакКьюсик, Маршалл Кирк ; Карелс, Майкл Дж .; Квартерман, Джон С. (октябрь 1989 г.). Проектирование и реализация операционной системы UNIX 4.3BSD . Аддисон-Уэсли . ISBN 978-0-201-06196-3 .
- ^ МакКьюсик, Маршалл Кирк; и др. «Быстрая файловая система для Unix» (PDF) . Freebsd.org . CSRG, Калифорнийский университет в Беркли . Проверено 16 ноября 2016 г.
- ^ Linux программиста Руководство – Системные вызовы –
- ^ Jump up to: а б Unix версии 7. программиста Руководство –
- ^ по FreeBSD по разной информации Руководство –
- ^ OpenBSD по разной информации Руководство –
- ^ «Справочная страница hier(7) для 2.9.1 BSD» .
- ^ "Справочная страница hier(7) для ULTRIX 4.2" .
- ^ «Справочная страница hier(7) для SunOS 4.1.3» .
- ^ Linux программиста Руководство – Обзор, условные обозначения и прочее –
- ^ Джордж Крафт IV (1 ноября 2000 г.). «Где установить мои продукты в Linux?» . Linux-журнал . Проверено 13 ноября 2014 г.
- ^ Jump up to: а б с д и Керниган, Брайан В .; Пайк, Роб (1984). Среда программирования UNIX . Прентис-Холл. стр. 63–65 . Бибкод : 1984upe..book.....K .
- ^ Jump up to: а б Ричи, Деннис. «Заметки Unix от 1972 года» . Проверено 14 января 2018 г.
- ^ Двоичный интерфейс приложения System V , версия 4.1 (18 марта 1997 г.)
- ^ Доктор медицины Макилрой (1987). «Исследовательская программа для чтения Unix: аннотированные выдержки из Руководства программиста, 1971–1986» (PDF) . Лаборатории Белла. ЦСТР 139.
- ^ «Глава 7. sendmail» . UNICOS /mp Администрирование сетевых средств . Крей . Проверено 14 сентября 2013 г.
- ^ «версия fhs-spec 44» .