LXD перемещение контейнеров / снимков на другой диск

Путь по умолчанию для LXD /var/lib/lxdпоэтому контейнеры находятся в /var/lib/lxd/containers и снимки помещаются в /var/lib/lxd/snapshots,

Раздел /var/ заполняется, поэтому я планирую использовать другой раздел для контейнеров и снимков, который имеет гораздо больше места.

Мои текущие варианты:

  • Создайте символическую ссылку на новый каталог (на другом диске)
  • Привязать (смонтировать) новый каталог к ​​текущему
  • Измените некоторые настройки lxd (если они есть), которые указывают на каталог на другом диске

Не уверен, какой метод проще, и есть ли другие способы легко это сделать.

Я беспокоюсь о проблемах с apparmor, разрешениях контейнера или о проблемах в lxd / lxc.

Какой будет правильный (или лучший) способ их перемещения?

(Апрель 2017) ОБНОВЛЕНИЕ ******************

LXD 2.9+ поддерживает несколько пулов хранения.

2 ответа

Решение

Большая проблема с LXD заключается в том, что (в настоящее время) он поддерживает только один пул хранения. В частности, это становится проблемой, если вы хотите запустить часть ваших контейнеров на одном дисковом томе, а часть на другом. Скажем, есть несколько "быстрых" контейнеров на томе SSD и несколько "медленных" контейнеров на томе HDD.

Если вы хотите, чтобы ваши контейнеры запускались только в одном томе, решение очень простое:

  • остановить ваши контейнеры
  • остановка LXD (служба останова lxd)
  • переместите весь каталог /var/lib/lxd в новый пул хранения
  • создать символическую ссылку на ваш новый пул хранения
  • запуск LXD (служба запуска lxd)
  • ты сделал

Например, если ваше новое хранилище смонтировано в /mnt/largepool в подкаталоге с именем lxd, то создайте ссылку следующим образом: ln -s /mnt/largepool/lxd /var/lib/lxd

Таким образом, у вас будут контейнеры на новом томе хранилища.

Имейте в виду, что если вы используете BTRFS или ZFS в качестве бэкэнда хранилища, вы можете сначала создать необходимые подобъемы в новом хранилище, чтобы ваши контейнеры находились в своих собственных подобъемах. Например, если у вас есть btrfs и у вас есть контейнеры с именами c1 и c2 и у вас уже есть каталог /mnt/largepool/lxd/ Containers, до фактического перемещения файлов создайте подобъемы: btrfs su create /mnt/largepool/lxd/containers/c1 btrfs su create /mnt/largepool/lxd/containers/c2

Это упростит создание снимков контейнеров впоследствии.

Я надеюсь, что эта информация была полезной.

LXD основан на базе данных sqlite, поэтому для изменения местоположения пула просто измените базу данных:

установить клиент sqlite3, если у вас его нет

echo "UPDATE config SET value = 'new_pool_lxd' WHERE \ key = 'storage.zfs_pool_name';" | sqlite3 /var/lib/lxd/lxd.db

при условии, что ваш lxd db находится в местоположении по умолчанию

затем проверьте

echo "SELECT * FROM config;" | sqlite3 /var/lib/lxd/lxd.db

1 | storage.zfs_pool_name |new_pool_lxd

надеюсь это поможет

Другие вопросы по тегам