Это возможно.
Примечание: мой опыт в этой области очень ограничен; следующий ответ основан главным образом на веб-исследованиях, я сам не проверял это на практике.
В общем, что бы вы ни монтировали в a /foo/bar/mountpoint
, оно полностью покрывает предыдущее содержимое mountpoint
(хотя программы сохраняют свои уже полученные дескрипторы для теперь «скрытых» файлов, они все еще действительны). Ваше второе крепление связывало именно это.
Хитрость заключается в использовании типа монтирования, который объединяет два или более каталогов в один. Общая концепция называется объединением монтирования . Есть несколько реализаций:
В общем случае объединение может быть смонтировано над одним из объединенных каталогов или с совершенно другой (предпочтительно пустой) точкой монтирования. На мой взгляд, последнее является более элегантным решением.
Вот некоторые аспекты, которые вы можете рассмотреть при выборе типа монтирования для ваших нужд:
- Некоторые из них доступны только как FUSE , некоторые объединены с ядром Linux (в этом случае они также могут иметь реализации FUSE). Проверьте эти проблемы безопасности относительно FUSE.
- Что происходит, когда вы изменяете один из комбинированных каталогов напрямую? ( пример вопроса ).
Что происходит, когда вы добавляете новый файл в объединение. Mhddfs выглядит многообещающим для объединения каталогов, содержащих медиа-файлы. Проверьте эту статью , она говорит:
Когда вы создадите новый файл в виртуальной файловой системе, mhddfs
посмотрите на свободное место, которое осталось на каждом из дисков. Если на первом диске достаточно свободного места, файл будет создан на этом первом диске. В противном случае, если на этом диске недостаточно места (меньше, чем указано mlimit
параметром mhddfs
, который по умолчанию равен 4 ГБ), вместо него будет использоваться второй диск. Если на этом диске также недостаточно места, будет использован третий диск. Если на каждом диске отдельно меньше mlimit
свободного места, для новых файлов будет выбран диск с наибольшим количеством свободного места.
Это даже больше, чем это; если на определенном диске заканчивается свободное место в середине записи (предположим, вы пытались создать на нем очень большой файл), процесс записи не будет завершен неудачей; mhddfs
просто перенесет уже записанные данные на другой диск (на котором есть больше свободного места) и продолжит запись там. Все это совершенно прозрачно для приложения, которое записывает файл (он даже не узнает, что что-то случилось).
Я не знаю, как другие реализации справляются с этим. Я предполагаю, что они изначально были созданы, чтобы позволить объединить файловую систему с возможностью записи с доступной только для чтения (как в этом вопросе ), поэтому любая из них может быть не такой гибкой, как mhddfs, когда дело доходит до (пере) распространения файлов. Я не уверен, хотя, вы можете проверить это самостоятельно.
Камиль Мачоровски
источник