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

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

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

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

1
задан 15 March 2018 в 20:07
2 ответа

Я нашел «хак», который решает проблему.

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

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

Чтобы скопировать содержимое, выполните следующие действия:

  1. Выключите все контейнеры
  2. Перезагрузите компьютер
  3. Смонтируйте старый storage.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>
0
ответ дан 4 December 2019 в 04:10

Никаких уловок:

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

0
ответ дан 21 February 2020 в 15:31

Теги

Похожие вопросы