Переместить контейнер LXD в другое хранилище

У меня есть проблема с моим текущим storage.img файл (btrfs). У меня было 2TB данных внутри контейнера, и поэтому storage.img получил 2TB большого размера. После этого я удалил все, оставив мне 100 ГБ реальных данных. Проблема сейчас в том, что storage.img не уменьшился до 100 ГБ. Это все еще 2TB большой.

Я создал другое хранилище newstorage.img (btrfs) в LXD с помощью команды lxc storage create newstorage но я не знаю, как правильно перенести контейнеры в новое хранилище , чтобы удалить старые storage.img и освободить мое место на жестком диске.

Я пробовал такие вещи, как ручная установка двух imgs и делать cp -R /one/* /new/ но тогда я не могу запустить контейнеры.

1 ответ

Решение

Я нашел "взломать", который решает проблему.

Проблема в том, что lxc storage create newstorage действительно создает изображение 15 ГБ по умолчанию. Это значение нельзя изменить.

Нужно иметь доступ к другому компьютеру Linux с новой установкой LXD и выполнить lxd init там. Выберите btrfs, размер устройства петли требуемой новой емкости изображения и имя изображения. Теперь скопируйте этот новый storage.img на сервер.

Шаги для копирования содержимого:

  1. Закройте все контейнеры
  2. Перезагрузить машину
  3. Смонтировать старое хранилище.img в / mnt / oldstorage
  4. Смонтируйте новый storage.img в / mnt / newstorage
  5. Выполните команду sudo cp -rpv /mnt/oldstorage /mnt/newstorage
  6. Переместите старый файл storage.img из папки /var/lib/lxd/disks/
  7. Переместите новый storage.img в /var/lib/lxd/disks/
  8. Перезагрузить машину
  9. Запустить все контейнеры

Изменить: Этот метод работает хорошо, если вы не удаляете существующие контейнеры. LXD создает подобъем для каждого контейнера. Если вы хотите сохранить возможность удаления существующих контейнеров, вы должны создать подобъем для каждого контейнера.

btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

Никаких ухищрений:

lxc stop container_name
lxc move container_name temp_container_name -s new_storage_pool
lxc move temp_container_name container_name
lxc start container_name

Кредиты: https://discuss.linuxcontainers.org/t/how-to-move-containers-to-a-new-storage-pool-on-the-same-host/2798

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