Filesystem Hierarchy Standard
Filesystem Hierarchy Standard, FHS («Стандарт Ієрархії Файлової Системи») — стандарт прийнятий для уніфікації розташування файлів і каталогів загального призначення у файловій системі ОС UNIX. Сьогодні більшість UNIX-подібних систем в тій або іншій мірі слідують цим правилам. Наприклад, типова база даних про користувачів завжди зберігається у файлі /etc/passwd.
Основні відомості
Процес розробки стандарту ієрархії файлової системи почався в серпні 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 ієрархії.
Структура каталогів
В FHS всі файли і каталоги знаходяться всередині кореневого каталогу, навіть якщо вони розташовані на різних фізичних чи віртуальних носіях. Проте, деякі з каталогів можуть бути присутніми тільки у випадку, якщо встановлено певне програмне забезпечення, таке як наприклад X Window System. Велика частина цих каталогів існує у всіх UNIX-подібних операційних системах і використовується схожим чином.
Каталог | Опис |
---|---|
/ | Кореневий каталог, що містить всю файлову ієрархію |
/bin | містить в основному готові до виконання програми, більшість з яких необхідні під час старту системи (або в однокористувацькому системному режимі, що використовується для зневадження). Тут зберігається значна кількість загальновживаних команд Linux (наприклад: cat, ls, cp тощо) |
/boot | Містить основні постійні файли для завантаження системи, зокрема завантажуване ядро. Файли з цього каталогу потрібні лише під час завантаження системи |
/dev | Каталог спеціальних файлів або файлів пристроїв |
/etc | Цей каталог і його підкаталоги містять більшість даних, необхідних для початкового завантаження системи і основні конфігураційні файли. У /etc знаходяться, наприклад, файл inittab, що визначає завантажувану конфігурацію, і файл паролів користувачів passwd. Частина конфігураційних файлів може знаходиться і в /usr/etc. Каталог /etc не повинен містити двійкових файлів (їх слід перенести в /bin або /sbin). Нижче наводиться призначення основних (але далеко не всіх) підкаталогів каталогу /etc |
|
Цей підкаталог містить файли, які використовуються в процесі початкового завантаження системи |
|
Коли створюється новий користувач і account для нього, то файли з цього каталогу копіюються в знов створений домашній каталог користувача |
|
Каталог, що містить деякі (але не всі) конфігураційні файли системи |
|
Каталог для конфігураційних файлів підсистеми 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) |
|
Готові до виконання програми — утиліти і додатки, які часто викликають звичайні користувачі.
|
|
Цей каталог містить файли зі словниками для програм перевірки коректності написання слів. |
|
Тут містяться конфігураційні файли для групи машин. Проте, команди і програми повинні дивитися в каталог /etc, в якому повинні бути посилання до файлів в каталозі /usr/etc |
|
Цей каталог містить сирцевий код стандартних бібліотек мови C, що додається в програмах директивою препроцесора include. Тому користувачеві треба мати, принаймні, право на читання з цього каталогу. У жодному випадку не слід змінювати файли в цьому каталозі, тому що вони ретельно зневаджені розробником системи (хіба що ви знаєте систему краще за розробника) |
|
У даному каталозі містяться об'єктні бібліотеки підпрограм, динамічні бібліотеки, деякі готові до виконання програми, які не викликаються безпосередньо. Складні програмні системи можуть мати свої підкаталоги в цьому каталозі.
|
|
Зазвичай тут поміщають програми і підкаталоги, які є локальними (унікальними) для даної машини [2]
|
|
Сирці сторінок інтерактивного керівництва man (не підготовлені для перегляду)
|
|
Цей каталог містить виконувані програми для системного адміністрування, які не використовуються під час завантаження |
|
Сирці для різних частин Linux
|
|
Ще одне місце для зберігання тимчасових файлів. Як правило, це символічне посилання на каталог /var/tmp |
|
Файли X-Window, що відносяться до системи (версії 11, реліз 6).
|
/var | Цей каталог містить файли, в яких зберігаються різні змінні дані, що визначають конфігурацію деяких програм при наступному запуску або інформацію, що тимчасово зберігається, яка використовуватиметься пізніше в ході поточного сеансу. Обсяг даних у цьому каталозі може сильно змінюватися, оскільки він містить, наприклад, файли протоколів (логи), файли спулінга і блокування (locking), тимчасові файли тощо |
|
Містить облікову і діагностичну інформацію, потрібну системному адміністраторові |
|
Цей каталог використовується, щоб зберегти резервну копію важливих системних файлів |
|
Цей каталог використовується, щоб зберігати вже сформовані сторінки керівництва відповідно до номера розділу |
|
Тут містяться керівні файли системи, які використовуються для резервування використання тих або інших ресурсів системи |
|
Файли протоколів (логи) |
|
Змінні файли часу виконання різних програм. Вони містять ідентифікатори процесів (PIDs) і записують поточну інформацію (utmp). Файли в цьому каталозі зазвичай очищаються під час завантаження системи |
|
Файли різних програм, поставлені в чергу на обслуговування
|
|
Тимчасові файли |
Дивись також
- Linux Standard Base
- GoboLinux - дистрибутив, який сильно відрізняється ієрархією каталогів від стандарту FHS
Виноски
- http://www.pathname.com/fhs/pub/fhs-2.3.html
- Історично і суворо слідуючи стандарту, /usr/local є сховищем даних, які мають зберігається на локальному хості (в протилежність /usr, яка може вмонтовуватися по мережі). Проте, зазвичай /usr рідко вмонтовується віддалено, а /usr/local частіше використовується для інсталяції програмного забезпечення і даних, які не є частиною операційної системи (в цьому випадку, /usr повинен містити програми і дані лише з операційної системи). Можливо в майбутньому стандарт FHS буде змінено для віддзеркалення цієї сталої ситуації
Посилання
- Офіційний сайт Filesystem Hierarchy Standard (англ.)
- Filesystem Hierarchy Standard 2.3 (англ.) (January 29, 2004)
- Виктор Костромин. Linux для пользователя(рос.)