Союз Маунт - Union mount

В компьютер операционные системы, монтаж на соединение это способ объединения нескольких каталогов в один, который, кажется, содержит их объединенное содержимое.[1] Монтаж на профиле поддерживается в Linux, BSD и несколько его преемников, и План 9, с похожим, но слегка отличающимся поведением.

В качестве примера применения муфтового монтажа рассмотрим необходимость обновления информации, содержащейся на CD-ROM или же DVD. Хотя CD-ROM не записывается, на него можно накладывать Точка монтирования с доступным для записи каталогом в объединенном монтировании. Затем обновление файлов в каталоге union приведет к тому, что они окажутся в каталоге с возможностью записи, создавая иллюзию, что содержимое CD-ROM было обновлено.[1][2]

Реализации

План 9

В операционной системе Plan 9 от Bell Labs (с середины 1980-х гг.) монтаж профсоюзов является центральной концепцией, заменяющей несколько более старых Unix соглашения с каталогами профсоюзов; например, несколько каталогов, содержащих исполняемые файлы, объединились в единую / bin каталог замените ДОРОЖКА переменная для поиска команд в оболочке.[3]

Семантика объединения Plan 9 значительно упрощена по сравнению с реализациями для POSIX -стилевые операционные системы: объединение двух каталогов - это просто объединение их содержимого, поэтому список каталогов объединения может отображать повторяющиеся имена. Кроме того, не прилагается никаких усилий для рекурсивного объединения подкаталогов, что приводит к чрезвычайно простой реализации.[4] Каталоги объединены в контролируемый порядок; u / имя, куда ты является объединенным каталогом, обозначает файл с именем имя в первой составляющей директории, содержащей такой файл.[4]

Unix и BSD

Реализации Unix / POSIX объединений предъявляют различные требования к реализации Plan 9 из-за ограничений в традиционном поведении файловой системы Unix, что значительно усложняет их реализацию и часто приводит к компромиссам.[5] Проблемы, с которыми сталкивается установка union в Unix-подобных операционных системах, включают:

  • Дублирующиеся имена файлов в каталоге недопустимы, поскольку это нарушит ожидания приложений относительно работы файловой системы Unix. Ставя логическое, куча -подобное упорядочение по приоритету для составных частей объединения частично решает эту проблему, но требует памяти для записи, какие файлы необходимо пропустить при выводе списка каталогов (в противном случае это операция почти без состояния).[5]
  • Удаление требует особой поддержки: если файлы с одинаковыми именами существуют в нескольких компонентах каталога union, простое удаление его из одного из компонентов приводит к тому, что файл из одного из других снова появляется вместо него.[5]
  • Вставка каталога в стек может вызвать некогерентность в ядро кеш имен файлов.[5]
  • Переименование файла в одной смонтированной файловой системе (с помощью переименовать системный вызов) должен быть атомная операция, но переименование в объединенном монтировании может потребовать изменений в нескольких каталогах, составляющих объединение. Возможное решение - запретить переименовать в таких ситуациях и требуют, чтобы реализации вместо этого копировали и удаляли.[2]
  • Стабильный индекс номера для файлов, жесткие ссылки и ввод-вывод с отображением памяти (mmap) трудно реализовать правильно.[2]

Ранние попытки добавить объединение в файловые системы Unix включали трехмерную файловую систему (Bell Labs ) и полупрозрачный файловый сервис в SunOS (Sun Microsystems, 1988[2]). В версии для BSD Unix в версии 4.4 (1994), черпая вдохновение из этих более ранних попыток, Plan 9 и стековые файловые системы в Весна (Вс, 1994).[1] 4.4BSD реализует описанный выше подход с использованием стека каталогов. Как и в Plan 9, операции проходят по этому стеку сверху вниз для разрешения имен, но в отличие от Plan 9, монтирование объединения BSD является рекурсивным, так что содержимое подкаталогов отображается объединенным в каталоге объединения. Также, в отличие от версии Plan 9, все слои, кроме верхнего, доступны только для чтения: изменение файлов в объединении приводит к тому, что их содержимое сначала копируется в верхний уровень стека, где затем применяются изменения. Удаление файлов осуществляется записью специальный тип файла называется белое пятно в верхний каталог, в результате чего имя файла отмечается как несуществующее и скрываются файлы с тем же именем на нижних уровнях стека.[1] Отключение белого требует поддержки со стороны базовой файловой системы.[4]

Linux

Монтаж Union был реализован для Linux 0.99 в 1993 году; Эта первоначальная реализация называлась наследованием файловой системы, но разработчик отказался от нее из-за ее сложности.[2] Следующей крупной реализацией была UnionFS, выросший из FiST проект в Университет Стоуни-Брук.[6][5] Попытка заменить UnionFS, aufs, был выпущен в 2006 году, за ним в 2009 году последовали OverlayFS.[2] В 2014 OverlayFS реализация union mount была добавлена ​​в стандартную Ядро Linux исходный код.[7]

По аналогии, GlusterFS предлагает возможность монтировать разные файловые системы, распределенные по сети, вместо того, чтобы быть расположенными на одном компьютере.[8]

Рекомендации

  1. ^ а б c d Пендри, Ян-Симон; Маршалл Кирк МакКусик (Декабрь 1995 г.). "Union Mounts в 4.4BSD-Lite". Труды технической конференции USENIX по UNIX и передовым вычислительным системам: 25–33. Получено 25 ноября 2007.
  2. ^ а б c d е ж Аврора, Валери; Хенсон (март 2009 г.). «Объединение файловых систем: архитектура, функции и варианты дизайна». lwn.net. Получено 21 декабря 2009.
  3. ^ Пайк, Р.; Presotto, D .; Томпсон, К .; Trickey, H .; Уинтерботтом, П. «Использование пространств имен в плане 9». Веб-сайт случайной оппозиционной повстанческой организации cat-v.org. Bell Labs. Получено 27 октября 2016.
  4. ^ а б c Аврора, Валери; Хенсон (март 2009 г.). "Объединенные файловые системы: реализации, часть I". lwn.net. Получено 21 декабря 2009.
  5. ^ а б c d е Райт, Чарльз П .; Джей Дэйв; Пуджа Гупта; Харикешаван Кришнан; Эрез Садок; Мохаммад Найер Зубайр. «Универсальность и семантика Unix в файловой системе разветвленной унификации». Технический отчет Университета Стоуни Брук FSL-04-01b. Получено 25 ноября 2007.
  6. ^ Аврора, Валери; Хенсон (апрель 2009 г.). «Объединение файловых систем: реализации, часть 2». lwn.net. Получено 21 декабря 2009.
  7. ^ Ларабель, Майкл (29 сентября 2014 г.). "OverlayFS, предлагаемая для ядра Linux 3.18". Phoronix.com. Получено 12 октября 2015.
  8. ^ "О GlusterFS". Ноябрь 2009 г.. Получено 4 марта 2013. Цитировать журнал требует | журнал = (помощь)