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
надеюсь это поможет