У меня проблема с моим текущим storage.img
файлом (btrfs). У меня было 2 ТБ данных внутри контейнера, поэтому storage.img стал большим на 2 ТБ. После этого я удалил все, оставив себе 100 ГБ реальных данных. Проблема теперь в том, что storage.img не сжался до 100 ГБ. Он все еще большой на 2 ТБ.
Я создал еще одно хранилище newstorage.img
(btrfs) в LXD с помощью команды lxc storage create newstorage
, но не знаю, как перенести контейнеры в новое хранилище.правильный путьчтобы я мог удалить старое storage.img
и освободить место на жестком диске.
Я пробовал вручную монтировать два образа и так далее, cp -R /one/* /new/
но после этого не могу запустить контейнеры.
решение1
Никаких уловок не нужно:
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
решение2
Я нашел «хак», который решает эту проблему.
Проблема в том, что lxc storage create newstorage
по умолчанию создается образ на 15 ГБ. Это значение изменить нельзя.
Нужно иметь доступ к другой машине Linux с новой установкой LXD и выполнить lxd init
там. Выберите btrfs, размер устройства цикла желаемой новой емкости образа и имя образа. Теперь скопируйте этот новый storage.img на сервер.
Шаги по копированию содержимого следующие:
- Закройте все контейнеры.
- Перезагрузить машину
- Смонтировать старый storage.img в /mnt/oldstorage
- Смонтировать новый storage.img в /mnt/newstorage
- Выполните sudo cp -rpv /mnt/oldstorage /mnt/newstorage
- Переместите старый storage.img из папки /var/lib/lxd/disks/
- Переместить новый storage.img в /var/lib/lxd/disks/
- Перезагрузить машину
- Запустить все контейнеры
Редактировать: Этот метод работает нормально, пока вы не удаляете существующие контейнеры. LXD создает подтом для каждого контейнера. Если вы хотите сохранить возможность удалять существующие контейнеры, вам следует создать подтом для каждого контейнера.
btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>