Union mount на Linux

11

Объединение монтирования представляет собой комбинированный вид нескольких каталогов (филиалов) в одной иерархии. Хорошо, но как мне использовать один на практике, и какой?

В современной системе Linux доступно множество технологий монтирования union: OverlayFS , aufs , UnionFS , различные файловые системы на базе FUSE,…

Учитывая вариант использования, как мне решить, какие из них подходят? В частности:

  • Какие из них требуют root-доступа в типичной системе? (Другими словами, может ли непривилегированный пользователь создать монтируемое соединение?)
  • На какие из них можно монтировать /(конечно, с правами суперпользователя)?
  • Какие из них поддерживают запись в базовые ветви? (Т. Е. Если /fooи /barмонтируются на объединение /union, могу ли я написать /fooи /bar?)
  • Какие из них поддерживают настраиваемые политики для записи? (Например, могу ли я отправлять вновь созданные файлы в ветку B, даже если я получаю контент из ветви A, когда файл существует в обеих ветвях?)
  • Какие из них поддерживают порядок приоритетов между ветвями, который зависит от файлов? (Например, я всегда могу получить самый новый файл среди всех веток, в которых он есть?)

Примеры использования будут оценены.

Пожалуйста, избегайте ответов, которые направлены на конкретный момент. Я ищу исчерпывающие ответы, в которых рассматривается доступное программное обеспечение (что-то похожее на Что такое привязка? ). Хорошие ответы будут щедрыми.

Жиль "ТАК - прекрати быть злым"
источник

Ответы:

12

По каждому конкретному пункту:

  • Доступ с правами root: если он использует FUSE, ему не нужен root, если он не использует FUSE, ему нужен root, если вы не выполните специальную настройку либо с возможностями (потенциально опасными), либо с пространствами имен.

  • Монтирование на /: я предполагаю, что вы имеете в виду корневую файловую систему при запуске, и в этом случае любая из них, которая работает в режиме ядра, теоретически должна работать, хотя некоторые из них более надежны, чем другие. Большинство LiveCD делают это, поэтому я бы посоветовал поискать информацию по этому конкретному вопросу.

  • Запись в основные ветви: это зависит от того, что вы имеете в виду. Если вы имеете в виду распространение записей в смонтированном виде до нижних ветвей, я понятия не имею. Если вы имеете в виду запись в нижние ветви вне диапазона самой основной файловой системы, технически все большие три делают, но все они требуют перемонтирования, чтобы гарантировать, что изменение распространяется на смонтированное представление.

  • Настраиваемые политики записи: я не знаю конкретно об этом, но я думаю, что большие 3 (UnionFS, AUFS и OverlayFS) не поддерживают это.

  • Файлово-зависимый порядок приоритетов: я думаю, что этот вид подпадает под третий подвопрос, и, как и там, я не знаю ни одного, который бы конкретно его поддерживал.

Что касается некоторых дополнительных особенностей каждого из них:

  • UnionFS: Насколько я могу судить, это была оригинальная реализация объединяемой файловой системы объединения для Linux. Он существует уже много лет и используется многими LinuxCD LiveCD. Он работает в режиме ядра и требует использования исправлений для вышестоящего ядра.

  • AUFS: возникла как форк UnionFS, а потом стала своего рода. Этот попытался объединить магистраль и был отклонен по причине качества кода. Он заменяет UnionFS в некоторых дистрибутивах LiveCD, в основном это производные от Debian и Gentoo. Как и UnionFS, он работает в режиме ядра и требует исправлений для вышестоящего ядра.

  • OverlayFS: я не знаю много о первоначальной разработке этого, кроме того, что он поддерживается на нескольких производных BSD тоже. В частности, это реализация исходной оверлейной / объединяющей файловой системы в ядре Linux. Он также работает в режиме ядра.

  • UnionFS-FUSE: Этот несколько смущающий название проект на самом деле не имеет ничего общего с UnionFS, за исключением предоставления по существу той же функциональности. Это наиболее широко используемая реализация FUSE объединенной файловой системы, но это все, что я знаю об этом.

  • mhddfs: Это странная особенность, которая больше похожа на реализацию RAID-0 с гранулярностью файлов, чем на обычную объединенную файловую систему. Он поддерживает балансировку файлов в нескольких резервных каталогах на основе использования пространства. Это также основано на FUSE.

Следует отметить пару конкретных вещей, которые не являются специфическими для конкретной реализации:

  • Все опции в ядре имеют ограничения на то, какими могут быть резервные файловые системы, в частности, они не работают с сетевыми файловыми системами или BTRFS.

  • Все реализации FUSE имеют проблемы при использовании в качестве корневой файловой системы. Это не характерно для реализаций объединенной файловой системы, но больше относится к FUSE в целом.

Остин Хеммелгарн
источник