В Unix и операционных системах, вдохновленных им, файловая система считается центральным компонентом операционной системы. [1] Это также была одна из первых частей системы, разработанная и реализованная Кеном Томпсоном в первой экспериментальной версии Unix, датированной 1969 годом . [2]
Как и в других операционных системах, файловая система обеспечивает хранение и поиск информации, а также является одной из нескольких форм межпроцессного взаимодействия , поскольку многие небольшие программы, которые традиционно образуют систему Unix, могут хранить информацию в файлах, чтобы другие программы могли их читать, хотя каналы дополнил его в этой роли начиная с Третьего издания . Кроме того, файловая система обеспечивает доступ к другим ресурсам через так называемые файлы устройств, которые являются точками входа для терминалов , принтеров и мышей .
В остальной части этой статьи Unix используется как общее название для обозначения как исходной операционной системы Unix, так и множества ее рабочих аналогов .
Принципы [ править ]
Файловая система выглядит как одно корневое дерево каталогов. [1] Вместо того, чтобы адресовать отдельные тома, такие как разделы диска , съемные носители и сетевые ресурсы, как отдельные деревья (как это сделано в DOS и Windows : у каждого диска есть буква диска, которая обозначает корень его дерева файловой системы), такие тома могут быть установлен на каталог, в результате чего дерево файловой системы тома появляться в этой директории в большем дереве. [1] Обозначен корень всего дерева /
.
В оригинальной Bell Labs Unix обычно использовалась установка с двумя дисками, где первый диск содержал программы запуска, а второй - файлы и программы пользователей. Этот второй диск был смонтирован в пустой каталог с именем usr
на первом диске, в результате чего два диска отображались как одна файловая система, а содержимое второго диска можно было просмотреть в /usr
.
Каталоги Unix не содержат файлов. Вместо этого они содержат имена файлов в паре со ссылками на так называемые inodes , которые, в свою очередь, содержат как файл, так и его метаданные (владелец, разрешения, время последнего доступа и т. Д., Но без имени). Несколько имен в файловой системе могут относиться к одному и тому же файлу, что называется жесткой ссылкой . [1] Математические особенности жестких ссылок делают файловую систему ограниченным типом ориентированного ациклического графа , хотя каталогипо-прежнему образуют дерево, поскольку обычно они не связаны жестко. (Как первоначально предполагалось в 1969 году, файловая система Unix будет фактически использоваться как общий граф с жесткими ссылками на каталоги, обеспечивающими навигацию, вместо имен путей. [2] )
Типы файлов [ править ]
Исходная файловая система Unix поддерживала три типа файлов: обычные файлы, каталоги и «специальные файлы», также называемые файлами устройств. [1] Berkeley Software Distribution (BSD) и System V каждый добавленный тип файла , который будет использоваться для межпроцессного взаимодействия : BSD добавлены сокеты , [3] , а System V добавлены FIFO файлы .
BSD также добавила символические ссылки (часто называемые « символическими ссылками ») к диапазону типов файлов, которые представляют собой файлы, которые ссылаются на другие файлы и дополняют жесткие ссылки. [3] Symlinks были смоделированы после аналогичной функции в Multics , [4] и отличаются от жестких ссылок в том , что они могут охватывать файловые системы и что их существование не зависит от целевого объекта. Другие системы Unix могут поддерживать дополнительные типы файлов. [5]
Обычная структура каталогов [ править ]
Существуют определенные соглашения о размещении некоторых типов файлов, таких как программы, файлы конфигурации системы и домашние каталоги пользователей . Впервые они были задокументированы на hier(7)
странице руководства начиная с версии 7 Unix ; [6] последующие версии, производные и клоны обычно имеют аналогичную справочную страницу. [7] [8] [9] [10] [11] [12]
Детали макета каталога со временем менялись. Хотя раскладка файловой системы не является частью спецификации Single UNIX , несколько попыток существуют стандартизировать (части) , то, например, System V Application Binary Interface , в Intel Binary Compatibility Standard , в среде системы Common Operating и Linux Foundation , ' s Стандарт иерархии файловой системы (FHS). [13]
Вот общий обзор общих расположений файлов в операционной системе Unix:
Каталог или файл | Описание |
---|---|
/ | Только / символ косой черты обозначает корень дерева файловой системы. |
| Обозначает двоичные файлы и содержит определенные базовые утилиты, такие как ls или cp , которые необходимы для монтирования /usr , когда это отдельная файловая система, или для работы в однопользовательском (административном) режиме, когда /usr монтировать невозможно. В системе V.4 это символическая ссылка на /usr/bin . В противном случае он должен находиться в самой корневой файловой системе. |
| Содержит все файлы, необходимые для успешной загрузки. В Research Unix это был один файл, а не каталог. [14] В настоящее время обычно в самой корневой файловой системе, если система, загрузчик и т. Д. Не требуют иного. |
| Подставки для устройств . Содержит файловые представления периферийных устройств и псевдоустройств . См. Также: Linux Assigned Names and Numbers Authority . Должен находиться в самой корневой файловой системе. |
| Содержит общесистемные файлы конфигурации и системные базы данных; название означает и так далее . [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, отображающая информацию о процессах в виде файлов. |
| Домашний каталог суперпользователя корень - то есть системный администратор. Домашний каталог этой учетной записи обычно находится в исходной файловой системе и, следовательно, не в / home (который может быть точкой монтирования для другой файловой системы) в случае, если необходимо выполнить определенное обслуживание, во время которого другие файловые системы недоступны. Такой случай может произойти, например, если жесткий диск выходит из строя и не может быть правильно смонтирован. По соглашению, этот каталог находится в самом корневом разделе; в любом случае, это не ссылка /home/root или что-то подобное. |
| Расшифровывается как « системные (или суперпользовательские) двоичные файлы » и содержит основные утилиты, такие как 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 System , KDE , Perl и т. Д. В старых системах 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 . |
| Каталог спула . Содержит задания на печать, почтовые катушки и другие задачи в очереди. |
| Место, где находится некомпилированный исходный код некоторых программ. |
| /var/tmp Директории место для временных файлов , которые должны быть сохранены между перезагрузками системы. |
См. Также [ править ]
- Btrfs
- ext2
- ext3
- ext4
- Стандарт иерархии файловой системы
- МОЛОТОК
- JFS (файловая система)
- Файловая система Unix
- Файловая система Veritas
- ZFS
Ссылки [ править ]
- Эта статья включает материалы из статьи Citizendium « Файловая система Unix », которая находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License, но не GFDL .
- ^ a b c d e Ричи, DM ; Томпсон, К. (июль 1978 г.). «Система разделения времени UNIX». Bell System Tech. Дж . 57 (6): 1905–1929. CiteSeerX 10.1.1.112.595 . DOI : 10.1002 / j.1538-7305.1978.tb02136.x .
- ^ a b Ричи, Деннис М. (1979). Эволюция системы разделения времени Unix . Языковой дизайн и методология программирования конф.
- ^ а б Леффлер, Сэмюэл Дж .; МакКузик, Маршалл Кирк ; Карелс, Майкл Дж .; Quarterman, Джон С. (октябрь 1989 г.). Разработка и реализация операционной системы 4.3BSD UNIX . Эддисон-Уэсли . ISBN 978-0-201-06196-3.
- ^ МакКузик, Маршалл Кирк; и другие. «Быстрая файловая система для Unix» (PDF) . Freebsd.org . CSRG, Калифорнийский университет в Беркли . Проверено 16 ноября +2016 .
- ^ - Руководство программиста Linux - Системные вызовы
- ^ a b - Руководство программиста 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 Journal . Проверено 13 ноября 2014 года .
- ^ a b c d e Керниган, Брайан В .; Пайк, Роб (1984). Среда программирования UNIX . Прентис-Холл. С. 63–65 . Bibcode : 1984upe..book ..... K .
- ^ a b Ричи, Деннис. «Примечания Unix от 1972 года» . Проверено 14 января 2018 .
- ^ System V Application Binary Interface Edition 4.1 (18 марта 1997 г.)
- ^ MD McIlroy (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 . CSTR 139, Bell Labs.
- ^ "Глава 7. sendmail" . Администрация сетевого оборудования UNICOS / mp . Cray . Проверено 14 сентября 2013 года .
- ^ "fhs-spec редакция 44" .