Tenho um problema com meu storage.img
arquivo atual (btrfs). Eu tinha 2 TB de dados dentro de um contêiner e, portanto, o storage.img ficou com 2 TB. Depois disso apaguei tudo, ficando com 100 GB de dados reais. O problema agora é que o storage.img não diminuiu para 100 GB. Ainda tem 2 TB de tamanho.
Criei outro armazenamento newstorage.img
(btrfs) no LXD com o comando lxc storage create newstorage
mas não sei como transferir os containers para o novo armazenamentoo caminho certopara que eu possa excluir o antigo storage.img
e recuperar meu espaço no disco rígido.
Tentei coisas como montar manualmente os dois imgs e fazer isso, cp -R /one/* /new/
mas não consigo iniciar os contêineres.
Responder1
Não são necessários truques:
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
Responder2
Encontrei um "hack" que resolve o problema.
O problema é que lxc storage create newstorage
cria uma imagem de 15 GB por padrão. Este valor não pode ser alterado.
É preciso ter acesso a outra máquina Linux com uma nova instalação do LXD e executar lxd init
lá. Selecione btrfs, um tamanho de dispositivo de loop com a nova capacidade desejada da imagem e o nome da imagem. Agora copie esse novo storage.img para o servidor.
As etapas para copiar o conteúdo são:
- Desligue todos os contêineres
- Reinicializar máquina
- Monte o storage.img antigo em /mnt/oldstorage
- Monte o novo storage.img em /mnt/newstorage
- Execute sudo cp -rpv /mnt/oldstorage /mnt/newstorage
- Mova o antigo storage.img para fora da pasta /var/lib/lxd/disks/
- Mova o novo storage.img para /var/lib/lxd/disks/
- Reinicializar máquina
- Iniciar todos os contêineres
Editar: este método funciona bem, desde que você não exclua nenhum contêiner existente. O LXD cria um subvolume para cada contêiner. Se quiser manter a capacidade de excluir contêineres existentes, você deverá criar um subvolume para cada contêiner.
btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>