Вопрос или проблема
Стандарт иерархии файловых систем (FHS) является формальной кодификацией для корневого дерева файлов на установках Linux, унаследованной от более ранних итераций Unix и POSIX, и впоследствии адаптированной. Он стандартизирует точные использования знакомых /home
, /etc
, /usr
, /var
и так далее, учитывая различные исторические различия в соглашениях и определяет, где могут быть добавлены конкретные для приложения и специфичные для сайта имена файлов, или нет.
Основные установки Linux исторически помещали все дерево на одну файловую систему, хотя некоторые вариации использовали отдельный раздел для /home
, предположительно, чтобы облегчить резервное копирование и миграцию.
В последнее время Btrfs становится все более популярным, позволяя одной разделу размещать различные подпункты. Подпункты привлекательны, поскольку их можно зафиксировать в снимках, и они не требуют предварительного выделения места.
Сопоставление подпунктов с узлами на FSH, похоже, варьируется. Разумные стандарты и политики, касающиеся таких вопросов, важны для оптимального управления файлами в системе с учетом снимков и связанных с ними проблем.
Вот некоторые наблюдения:
- Debian, похоже, помещает все дерево в один подпункт под корнем.
- Ubuntu, похоже, выделяет подпункт для
/home
, и другой для остального дерева корня. - Arch Linux, похоже, расширяет разделение, принятое в Debian, помещая
/var/log
и/var/cache
, каждый в отдельный подпункт. - openSUSE имеет один подпункт для
/var
и по одному для/home
,/root
,/usr/local
,/opt
и/srv
, а также один для остальной части дерева корня и еще один для каждой установленной архитектуры grub.
Появились ли какие-либо стандарты, которые пытались бы разрешить различные проектные соображения и объединить подходы, принятые различными операционными системами? Появилось ли какое-либо соглашение относительно того, как согласовать функции различных узлов дерева файлов с политиками, касающимися снимков?
Нет, такие стандарты не возникли.
Если это что-то значит, стандарт безопасности CIS имеет четкие положения о том, что заслуживает наличия своей собственной файловой системы. cisecurity.org/cis-benchmarks
@steve, я не понимаю ваш комментарий в связи с темой вопроса
Стандарты CIS (или USG STIG) намекают на своего рода стандарт в маске безопасности для наличия отдельных разделов для /home
или /var
или /usr
и некоторых из многих других папок, которые находятся на верхнем уровне файловой системы Linux, как описано в вашей ссылке на FHS. Стандарт, с которым я знаком, исключил многие папки за последние версии стандартов и теперь требует только /home
, /var
и /var/log/audit
на отдельном разделе, иначе это будет считаться нарушением безопасности :rolleyes:. Их дискуссионное заявление только Использование отдельных файловых систем для различных путей может защитить систему от сбоев, возникающих в результате того, что файловая система заполнилась или вышла из строя. Я оставлю за вами, как читателем, определить все пробелы в этой логике.
Наличие различных каталогов, смонтированных как отдельный раздел, позволяет администратору монтировать такие разделы, например, как noexec
и nosuid
, или использовать файловую систему с включенной квотой, что может дать некоторые преимущества безопасности, но в целом является benefit для организации администраторов. Но не существует “стандарта” для выполнения такой операции, и когда вы упоминаете Debian, Arch, OpenSUSE, все они используют различные схемы разделов… на мой взгляд, они были подвержены влиянию таких вещей, как эталон CIS и “безопасная” ментальность и то теплое чувство, которое это приносит как аргумент продажи.
“Стандарт” должен определяться рекомендациями администраторов Linux для схемы разделов, как они считают нужным, чтобы соответствовать их потребностям для конкретной среды. Вы могли бы обсуждать весь день за и против того, какие папки должны и не должны находиться на отдельных разделах, все по уважительным причинам, и вот почему стандарт для этой конкретной вещи на самом деле не может существовать.
Я думаю, что это хороший вопрос, особенно в отношении BTRFS; мне бы хотелось выяснить, заботится ли BTRFS о разделах в отношении подпунктов и снимков, а также его других возможностях (подозреваю, что нет, но честно не могу сказать вам точно).
Ответ или решение
Рекомендуемая схема для разбиения корневой файловой системы на подсистемы согласно Стандарту иерархии файловой системы (FHS)
Стандарт иерархии файловой системы (FHS) служит основой для упорядочивания файлов и каталогов в Linux, что требует особого внимания к организации файловой системы. При переходе на новые технологии, такие как Btrfs, возможности и подходы к разбиению системы на подсистемы изменяются. В данном ответе будет предложена схема разбиения корневой файловой системы с использованием подсистемы Btrfs, с учетом различных подходов, применяемых в популярных дистрибутивах Linux, и рекомендаций по управлению состоянием системы.
Важность разбиения файловой системы
Разбиение корневой файловой системы на отдельные подсистемы позволяет достичь нескольких целей:
- Настройка управления ресурсами: Отдельные подсистемы могут иметь разные настройки пространства и флагов монтирования (например,
noexec
,nosuid
), что улучшает безопасность. - Бэкапы и восстановление: Снимки подкаталогов, таких как
/home
и/var
, упрощают процесс резервного копирования и восстановления. - Изоляция: Это предотвращает ситуацию, когда одна область файловой системы вызывает проблемы для всей системы, например, переполнение.
Рекомендуемая схема разбиения
-
Корневой каталог
/
:- Основная система со всеми основными компонентами, установленными по умолчанию.
- Может быть организован как основной подкаталог и занимать минимальное необходимое пространство.
-
Подкаталог
/home
:- Отдельная подсистема для пользовательских данных.
- Разделение этой подсистемы позволяет легко управлять данными пользователей и упрощает их перемещение или восстановление в случае миграции системы.
-
Подкаталоги для
/var
:- /var/log: Для журналов системы. Это важно для мониторинга и диагностики.
- /var/cache: Для кеширования данных, что может быстро заполнять пространство.
- /var/lib: Используется для хранения переменных данных, зависимых от пакетов и системных процессов.
-
Подкаталог
/usr
:- Содержит большинство пользовательских приложений и их библиотеки.
- Выделение этого каталога может помочь в управлении версиями пакетов и апгрейдами.
-
Дополнительные подсистемы:
- /tmp: Отдельная подсистема может помочь в управлении временными файлами и обеспечить очистку.
- /opt: Для сторонних приложений. Это позволяет изолировать установленные программы и их зависимости.
- /srv: Для данных сервиса, если ваш сервер запускает приложения для пользователей.
Применение подходов из разных дистрибутивов
Следует учитывать, что разные дистрибутивы Linux (Debian, Ubuntu, Arch, openSUSE) применяют различные подходы к разбиению файловой системы. Например:
- Debian: Размещает всю файловую структуру в одной подсистеме, что упрощает установку для новичков.
- Ubuntu: Выделяет подсистему для
/home
, улучшая управление пользовательскими данными. - Arch Linux: Запускает дополнительные отделения для
/var/log
и/var/cache
, что позволяет лучше контролировать объем данных. - openSUSE: Применяет более сложные структуры, выделяя отдельные подкаталоги для
/srv
,/opt
, и даже для пользовательских сред.
Рекомендации по выбору
Нельзя однозначно назвать единственно правильный подход к разделению файловой системы. Однако в зависимости от потребностей системы, желаемой степени безопасности и сложности управления, вы должны выбрать схему разделения, которая лучше всего соответствует вашему окружению. Лучше всего следовать подходу, основанному на практическом опыте и специфических требованиях.
Заключение
Разделение файловой системы по принципу FHS, с использованием возможностей Btrfs, не только укрощает управление ресурсами, но и значительно упрощает администрирование систем. Обдумывая архитектуру файловой системы, всегда имейте в виду специфические требования вашего окружения, проводите тесты производительности и безопасности, чтобы обеспечить надежность и эффективность вашего операционного окружения.