Filesystem Hierarchy Standard

Filesystem Hierarchy Standard, FHS («Стандарт Ієрархії Файлової Системи») — стандарт прийнятий для уніфікації розташування файлів і каталогів загального призначення у файловій системі ОС UNIX. Сьогодні більшість UNIX-подібних систем в тій або іншій мірі слідують цим правилам. Наприклад, типова база даних про користувачів завжди зберігається у файлі /etc/passwd.

Поточна версія стандарту — 3., анонсована 3 червня 2015 р.

Основні відомості

Процес розробки стандарту ієрархії файлової системи почався в серпні 1993 року зі спроб упорядкувати структуру каталогів і файлів в операційній системі Linux. 14 лютого 1994 року був випущений FSSTND (Filesystem Standard), стандарт файлової системи специфічної для ОС Linux. Подальші версії були випущені 9 жовтня 1994 року і 28 березня 1995 року.

На початку 1996 року співтовариство розробників BSD приєдналося до розробки нової версії FSSTND з метою розробити стандарт, придатний для всіх Unix-подібних операційних систем. Ім'я стандарту при цьому було змінено на Filesystem Hierarchy Standard (FHS).

FHS підтримувався Free Standards Group — некомерційною організацією, у складі якої знаходяться потужні розробники програмного і апаратного забезпечення, такі як HP, Red Hat, IBM, Dell. Проте, основна частина розробників дистрибутивів, включно з тими, хто входить до складу Free Standards Group, не слідують стандарту на 100%. Зокрема, шляхи, спеціально створені групою, такі як /srv/, практично ніде не використовуються. Деякі Linux системи відкидають FHS і слідують своєму власному стандарту, як наприклад GoboLinux. Оскільки FHS починалася як ініціатива Linux співтовариства, інші UNIX і UNIX-подібні операційні системи повністю ігнорують її на користь своїх власних систем, які іноді поширені досить широко. Наприклад Mac OS X використовує такі імена як /Library/, /Applications/ і /Users/ разом з традиційними іменами UNIX ієрархії.

Структура каталогів

Файлова система в Ubuntu 14.04.

В FHS всі файли і каталоги знаходяться всередині кореневого каталогу, навіть якщо вони розташовані на різних фізичних чи віртуальних носіях. Проте, деякі з каталогів можуть бути присутніми тільки у випадку, якщо встановлено певне програмне забезпечення, таке як наприклад X Window System. Велика частина цих каталогів існує у всіх UNIX-подібних операційних системах і використовується схожим чином.

Каталог Опис
/ Кореневий каталог, що містить всю файлову ієрархію
/bin містить в основному готові до виконання програми, більшість з яких необхідні під час старту системи (або в однокористувацькому системному режимі, що використовується для зневадження). Тут зберігається значна кількість загальновживаних команд Linux (наприклад: cat, ls, cp тощо)
/boot Містить основні постійні файли для завантаження системи, зокрема завантажуване ядро. Файли з цього каталогу потрібні лише під час завантаження системи
/dev Каталог спеціальних файлів або файлів пристроїв
/etc Цей каталог і його підкаталоги містять більшість даних, необхідних для початкового завантаження системи і основні конфігураційні файли. У /etc знаходяться, наприклад, файл inittab, що визначає завантажувану конфігурацію, і файл паролів користувачів passwd. Частина конфігураційних файлів може знаходиться і в /usr/etc. Каталог /etc не повинен містити двійкових файлів (їх слід перенести в /bin або /sbin). Нижче наводиться призначення основних (але далеко не всіх) підкаталогів каталогу /etc
/etc/rc.d
Цей підкаталог містить файли, які використовуються в процесі початкового завантаження системи
/etc/skel
Коли створюється новий користувач і account для нього, то файли з цього каталогу копіюються в знов створений домашній каталог користувача
/etc/sysconfig
Каталог, що містить деякі (але не всі) конфігураційні файли системи
/etc/X11
Каталог для конфігураційних файлів підсистеми X11 (наприклад, XF86Config)
/home Містить домашні каталоги користувачів, які у свою чергу містять персональні налаштування і дані користувача. Часто розміщується на окремому розділі
/lib Цей каталог містить бібліотеки функцій, потрібних компілятору мови C, і модулі ядра (драйвери пристроїв, файлових систем тощо). Навіть якщо в системі не встановлено компілятор мови C, спільні бібліотеки є необхідними, оскільки вони використовуються багатьма прикладними програмами. Вони завантажуються в пам'ять за потребою виконання якихось функцій, що дозволяє зменшити розмір двійкового коду програм інакше той самий код багато разів повторювався б в різних програмах
/lost+found Цей каталог використовується при відновленні файлової системи командою fsck. Якщо fsck виявляє файл, батьківський каталог якого визначити неможливо, вона поміщає такий файл в каталог /lost+found. Оскільки батьківський каталог втрачено, то таким файлам присвоюються імена, що збігаються з номерами їхніх індексних дескрипторів
/media Точки монтування для змінних носіїв, таких як CD-ROM, DVD-ROM (вперше описано в FHS-2.3), а в останні роки і розділи жорсткого диску — наприклад в LinuxMint це sda1, sda2 для 1 та 2-го розділу відповідно.
/mnt/ Містить тимчасово змонтовані файлові системи
/opt/ Додаткове програмне забезпечення
/proc/ Віртуальна файлова система, що представляє стан ядра операційної системи та запущених процесів у вигляді файлів
/root Домашній каталог користувача root. Зверніть увагу на те, що він розташований не там, де розташовуються особисті каталоги решти користувачів (у /home)
/sbin Подібно до каталогу /bin містить в основному виконувані файли програми і утиліти ОС, що використовувані в процесі завантаження і запускаються системним адміністратором. У стандарті FHS мовиться, що в цей каталог треба поміщати ті виконувані файли, які використовуються для успішного монтування файлової системи /usr. Мінімальний вміст цього каталогу включає програми clock, getty, init, update, mkswap, swapon, swapoff, halt, reboot, shutdown, fdisk, fsck.*, mkfs.*, lilo, arp, ifconfig, route
/srv Містить дані, які обробляються в цій системі. Це можуть бути скрипти вебсервера або його дані, дані FTP-сервера, репозитарії систем контролю версій. Введено FHS-2.3 в 2004.
/tmp Каталог для тимчасових файлів. У будь-який момент суперкористувач може стерти файли з цього каталогу без великого збитку для решти користувачів. Проте, не варто стирати файли з цього каталогу, окрім, якщо вам точно відомо, що конкретний файл або група файлів заважають продуктивній роботі на машині. Система сама періодично очищає цей каталог, тому не слід зберігати тут файли, які вам можуть знадобитися надалі
/usr Цей каталог величезний і його структура в основному повторює структуру кореневого каталогу. У його підкаталогах знаходяться основне програмне забезпечення. Відповідно до стандарту FHS рекомендується виділяти для цього каталогу окремий розділ диска або взагалі розташовувати його на мережевому диску, загальному для всіх комп'ютерів в мережі[1]. Такий розділ або диск вмонтовують тільки для читання і розташовують в ньому загальні конфігураційні і виконувані файли, документацію, системні утиліти і бібліотеки, а також файли, що включаються (файли типу include)
/usr/bin
Готові до виконання програми — утиліти і додатки, які часто викликають звичайні користувачі.
  • /usr/bin/X11 — Звичайне місце для розташування готових до виконання програм з X-Window в Linux. Часто це символічне посилання на /usr/X11R6/bin
/usr/dict
Цей каталог містить файли зі словниками для програм перевірки коректності написання слів.
/usr/etc
Тут містяться конфігураційні файли для групи машин. Проте, команди і програми повинні дивитися в каталог /etc, в якому повинні бути посилання до файлів в каталозі /usr/etc
/usr/include
Цей каталог містить сирцевий код стандартних бібліотек мови C, що додається в програмах директивою препроцесора include. Тому користувачеві треба мати, принаймні, право на читання з цього каталогу. У жодному випадку не слід змінювати файли в цьому каталозі, тому що вони ретельно зневаджені розробником системи (хіба що ви знаєте систему краще за розробника)
/usr/lib
У даному каталозі містяться об'єктні бібліотеки підпрограм, динамічні бібліотеки, деякі готові до виконання програми, які не викликаються безпосередньо. Складні програмні системи можуть мати свої підкаталоги в цьому каталозі.
  • /usr/lib/X11 — Звичайне місце для розташування файлів пов'язаних з X-Window, а також конфігураційних файлів самої системи X-Window. У Linux це, здебільшого, символічне посилання на каталог /usr/X11R6/lib/X11
  • /usr/lib/gcc-lib — Містить виконувані програми і файли типу include для компілятора GNU C (gcc).
  • /usr/lib/groff — Файли для системи форматування текстів groff
  • /usr/lib/uucp — Файли для UUCP
  • /usr/lib/zoneinfo — Файли для визначення часової зони
/usr/local
Зазвичай тут поміщають програми і підкаталоги, які є локальними (унікальними) для даної машини [2]
  • /usr/local/bin — Зазвичай тут поміщають готові до виконання програми, які є локальними (унікальними) для даної машини
  • /usr/local/doc — Тут розташовується документація до всіх встановлених на Вашому комп'ютері пакетів прикладного ПЗ
  • /usr/local/etc — Конфігураційні файли для локально встановлених програм
  • /usr/local/lib — Бібліотеки і файли для локально встановлених програм і систем.
  • /usr/local/info — Сторінки описів, які є видимим за допомогою програми info, для локально встановлених програм
  • /usr/local/man — Сторінки описів, які є видимим за допомогою програми man, для локально встановлених програм
  • /usr/local/sbin — Локальні програми системного адміністратора
  • /usr/local/src — Початкові тексти програм, встановлених на даній машині
/usr/man
Сирці сторінок інтерактивного керівництва man (не підготовлені для перегляду)
  • /usr/man/<locale>/man[1-9] — Ці каталоги містять сторінки керівництва на різних мовах (залежно від значення locale). Системи, які використовують одну мову і один кодовий набір, можуть не використовувати підрядок <locale>
/usr/sbin
Цей каталог містить виконувані програми для системного адміністрування, які не використовуються під час завантаження
/usr/src
Сирці для різних частин Linux
  • /usr/src/linux — сирці ядра Linux
/usr/tmp
Ще одне місце для зберігання тимчасових файлів. Як правило, це символічне посилання на каталог /var/tmp
/usr/X11R6
Файли X-Window, що відносяться до системи (версії 11, реліз 6).
  • /usr/X11R6/bin — Виконувані програми системи X-Window.
  • /usr/X11R6/lib — Файли і бібліотеки, пов'язані з системою X-Window
/var Цей каталог містить файли, в яких зберігаються різні змінні дані, що визначають конфігурацію деяких програм при наступному запуску або інформацію, що тимчасово зберігається, яка використовуватиметься пізніше в ході поточного сеансу. Обсяг даних у цьому каталозі може сильно змінюватися, оскільки він містить, наприклад, файли протоколів (логи), файли спулінга і блокування (locking), тимчасові файли тощо
/var/adm
Містить облікову і діагностичну інформацію, потрібну системному адміністраторові
/var/backups
Цей каталог використовується, щоб зберегти резервну копію важливих системних файлів
/var/catman/cat[1-9]
Цей каталог використовується, щоб зберігати вже сформовані сторінки керівництва відповідно до номера розділу
/var/lock
Тут містяться керівні файли системи, які використовуються для резервування використання тих або інших ресурсів системи
/var/log
Файли протоколів (логи)
/var/run
Змінні файли часу виконання різних програм. Вони містять ідентифікатори процесів (PIDs) і записують поточну інформацію (utmp). Файли в цьому каталозі зазвичай очищаються під час завантаження системи
/var/spool
Файли різних програм, поставлені в чергу на обслуговування
  • /var/spool/at — Файли завдань, запущених за допомогою команди at.
  • /var/spool/cron — Файли системи періодичного виконання cron.
  • /var/spool/lpd — Файли, що чекають виводу на друк.
  • /var/spool/mail — Призначені для користувача поштові скриньки.
  • /var/spool/news — Файли системи news
  • /var/spool/uucp — Файли системи uucp
/var/tmp
Тимчасові файли

Дивись також

  • Linux Standard Base
  • GoboLinux[en] - дистрибутив, який сильно відрізняється ієрархією каталогів від стандарту FHS

Виноски

  1. Архівована копія. Архів оригіналу за 25 травня 2005. Процитовано 30 вересня 2008.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  2. Історично і суворо слідуючи стандарту, /usr/local є сховищем даних, які мають зберігається на локальному хості (в протилежність /usr, яка може вмонтовуватися по мережі). Проте, зазвичай /usr рідко вмонтовується віддалено, а /usr/local частіше використовується для інсталяції програмного забезпечення і даних, які не є частиною операційної системи (в цьому випадку, /usr повинен містити програми і дані лише з операційної системи). Можливо в майбутньому стандарт FHS буде змінено для віддзеркалення цієї сталої ситуації

Посилання