Вопрос или проблема
Я пытаюсь добавить хранилище к существующей виртуальной машине Multipass. Я создал новую файловую систему ZFS, смонтированную локально на /zfs/morespace
. Затем попытался смонтировать ее командой
multipass mount /zfs/morespace existingvm:/mnt/morespace
Я получил ошибку:
Путь исходного файла “/zfs/morespace” не существует
Когда я выполнил ls /zfs
, “morespace” был перечислен.
Я также создал папку /zfs/morespace/storagedir
и попытался смонтировать ее с тем же результатом.
Может ли кто-нибудь помочь мне понять, почему Multipass не может найти файловую систему zfs или директории внутри нее, в то время как Ubuntu не имеет проблемы? Большая часть моего хранилища находится на крупном пуле zpool с несколькими файловыми системами zfs, и я хотел бы использовать это для дополнительных ресурсов хранения VM, не изменяя размер системных образов.
Постепенно я выяснил, что проблема не связана с ZFS / Multipass. Я установил multipass через snap, и у него не было доступа к /mnt или другим корневым директориям. Возвращаемая ошибка вводила в заблуждение, так как она указывала на несуществующую папку вместо ошибки прав доступа.
Решением для меня стало перемещение точки монтирования в папку в каталоге /home/, к которому у snap-пакетов есть доступ. Теперь я создаю нового пользователя для каждой виртуальной машины и монтирую файловую систему zfs в папку в домашнем каталоге этого пользователя.
Спасибо, wanderingcode.
Это продвинуло меня вперед, но я не мог добраться глубже уровня точки монтирования – ‘нет прав’ после выполнения таких действий ..
sudo mount UUID=8e46f8f0-33e6-4861-b7d4-37b554f25c4e /home/david/sata/
multipass mount --verbose sata jammy -u 1000:1000
Но я смог добраться до папки ‘maps’ в виртуальной машине, сделав более глубокое монтирование multipass ..
multipass mount --verbose sata/html/maps jammy -u 1000:1000
.
Ответ или решение
Для решения данной проблемы необходимо учитывать несколько аспектов, связанных с системами файлов ZFS и инструментом Multipass, используемым для управления виртуальными машинами. Проблема, с которой вы столкнулись, заключается в том, что Multipass не воспринимает указанные пути до файловых систем ZFS, несмотря на то, что они отображаются как существующие в системе Ubuntu.
Теория
Начнем с базовых понятий. ZFS (Zettabyte File System) — это расширенная файловая система и логический томуем менеджер, разработанный для обеспечения высокой производительности, надежности и управления большим количеством данных. Multipass, в свою очередь, — это инструмент для управления виртуальными машинами, позволяющий быстро разворачивать и управлять виртуальными машинами Ubuntu. Он особенно удобен для разработчиков, нуждающихся в изоляции окружений для тестирования.
В вашем случае проблема, вероятно, связана не с несовместимостью ZFS и Multipass, а с политиками безопасности системы, в частности с ограничениями, накладываемыми на приложения, установленные через Snap. Snap-пакеты, такие как Multipass, работают в изолированных контейнерах и ограничиваются в доступе к некоторым системным ресурсам, включая директории, находящиеся вне домашней папки пользователя.
Пример
Вы столкнулись с ошибкой "Source path "/zfs/morespace" does not exist", хотя каталог "/zfs/morespace" виден при непосредственно проверке через команду ls /zfs
. Это свидетельствует о том, что Multipass не может получить доступ к указанному пути из-за ограничений Snap.
Проблема была решена путем изменения точки монтирования на папку, расположенную в домашней директории пользователя, к которой Snap по умолчанию имеет доступ. Создание нового пользователя и монтирование ZFS в его домашнем каталоге обеспечило успешное подключение виртуальных машин к дополнительному хранилищу.
Применение
Исходя из вышеизложенного, можно рекомендовать следующий подход для решения данной проблемы:
-
Перемещение точки монтирования: Убедитесь, что то, что вы пытаетесь смонтировать, находится в пределах доступной для Snap папки. Это может быть любая папка внутри
/home/yourusername/
. -
Изменение настройки Snap: Если перемещение монтирования неприемлемо, можно настроить расширенный доступ Snap к системным директориям, используя
snap connect
илиsnap set
для предоставления более широких полномочий. Однако такой метод может увеличить риски для безопасности системы. -
Управление правами доступа: Корректно настройте права доступа к файлам и директориям на стороне хоста и внутри виртуальных машин, используя параметры, такие как
-u
и-g
для указания пользователя и группы. -
Проверка сетевых путей: Удостоверьтесь, что все сети и IP-адреса настраиваются правильно для обеспечения корректной работы ZFS и Multipass.
-
Обновление и настройка Snap: Проверьте, что у вас установлены новейшие версии Snap и Multipass. Возможно, потребуется пересобрать пакеты с нужными параметрами безопасности.
-
Тестирование на virtualbox: Даже если вы используете Snap, попробуйте переключиться на другие инструменты виртуализации, такие как VirtualBox, для проверки работоспособности без Snap-ландшафта.
Таким образом, применяя данные рекомендации, вы сможете улучшить взаимодействие ZFS с Multipass и добиться корректного монтирования необходимых каталогов. Не забывайте также о важности тестирования всех изменений в окружении, приближенном к рабочему, чтобы избежать непредвиденных сбоев.