Os contêineres gerenciados pelo LXD (no ZFS) desaparecem após a exclusão de um diferente

1

Configurei alguns contêineres no servidor Xenial, usando um conjunto de dados do ZFS para armazenamento (não tenho certeza se isso é relevante; chegaremos a isso). Eles estavam todos funcionando bem.

Tentando reiniciar um deles, mail-server agora obtenho

error: Error calling 'lxd forkstart mail-server /var/lib/lxd/containers /var/log/lxd/mail-server/lxc.conf': err='exit status 1'
Try 'lxc info --show-log mail-server' for more info

e olhando para o log que eu vejo

        lxc 20160518112750.405 ERROR    lxc_conf - conf.c:mount_rootfs:807 - No such file or directory - failed to get real path for '/var/lib/lxd/containers/mail-server/rootfs'
        lxc 20160518112750.405 ERROR    lxc_conf - conf.c:setup_rootfs:1221 - failed to mount rootfs
        lxc 20160518112750.405 ERROR    lxc_conf - conf.c:do_rootfs_setup:3611 - failed to setup rootfs for 'mail-server'

Isto não é surpreendente, desde quando eu verifico

$ sudo ls -l /var/lib/lxd/containers/mail-server.zfs
total 0

No entanto, recebo o mesmo, se eu verificar outro contêiner:

$ sudo ls -l /var/lib/lxd/containers/smb-server.zfs
total 0

mas esse contêiner está em execução no momento:

$ lxc list
+---------------+---------+--------------------------------+------+------------+-----------+
|     NAME      |  STATE  |              IPV4              | IPV6 |    TYPE    | SNAPSHOTS |
+---------------+---------+--------------------------------+------+------------+-----------+
| smb-server    | RUNNING | 192.168.2.11 (eth0)            |      | PERSISTENT | 2         |
+---------------+---------+--------------------------------+------+------------+-----------+
| mail-server   | STOPPED |                                |      | PERSISTENT | 0         |
+---------------+---------+--------------------------------+------+------------+-----------+
| ub-test       | STOPPED |                                |      | PERSISTENT | 0         |
+---------------+---------+--------------------------------+------+------------+-----------+
| www-server    | STOPPED |                                |      | PERSISTENT | 1         |
+---------------+---------+--------------------------------+------+------------+-----------+

$ lxc exec smb-server -- /bin/bash
root@smb-server:~# ls -l /
total 88
drwxr-xr-x   2 root   root    173 May 17 10:10 bin
drwxr-xr-x   3 root   root      3 Apr 20 17:58 boot
drwxr-xr-x   9 root   root    480 May 17 21:40 dev
...

www-server também estava em execução e não mostrava nada em ls e, depois que eu parei, não consigo mais iniciar novamente, pelo mesmo motivo. O único contêiner cujo rootfs ainda posso encontrar, ub-test :

$ sudo ls -l /var/lib/lxd/containers/ub-test.zfs
total 22
-rw-r--r--  1 lxd    messagebus 1425 Apr 20 18:45 metadata.yaml
drwxr-xr-x 22 100000     100000   22 Apr 22 11:38 rootfs
drwxr-xr-x  2 lxd    messagebus    7 Apr 20 18:45 templates

Eu posso realmente parar e começar à vontade.

Meu único palpite sobre o motivo dessa alteração (a única coisa que me lembro de ter feito isso talvez afetaria esse problema) é que excluí um outro contêiner ontem, ub-test2 . Ainda posso ver um traço disso com:

$ sudo zfs list
NAME                                                                                            USED  AVAIL  REFER  MOUNTPOINT
tank                                                                                      2.80T  2.44T    96K  /tank
tank/lxd                                                                                  4.71G  2.44T    96K  none
tank/lxd/containers                                                                       3.34G  2.44T    96K  none
tank/lxd/containers/smb-server                                                         2.31G  2.44T  2.59G  /var/lib/lxd/containers/smb-server.zfs
tank/lxd/containers/mail-server                                                            279M  2.44T   746M  /var/lib/lxd/containers/mail-server.zfs
tank/lxd/containers/ub-test                                                                485M  2.44T   952M  /var/lib/lxd/containers/ub-test.zfs
tank/lxd/containers/www-server                                                             289M  2.44T   757M  /var/lib/lxd/containers/www-server.zfs
tank/lxd/deleted                                                                           702M  2.44T    96K  none
tank/lxd/deleted/images                                                                    702M  2.44T    96K  none
tank/lxd/deleted/images/f4c4c60a6b752a381288ae72a1689a9da00f8e03b732c8d1b8a8fcd1a8890800   702M  2.44T   702M  none
tank/lxd/images                                                                            704M  2.44T    96K  none
tank/lxd/images/d23ee1f4fd284aeaba6adeb67cccf7b871e96178d637fec96320aab7cc9634b1           704M  2.44T   704M  /var/lib/lxd/images/d23ee1f4fd284aeaba6adeb67cccf7b871e96178d637fec96320aab7cc9634b1.zfs

Você também pode ver que /var/lib/lxd/containers/mail-server.zfs (e smb-server , www-server ) ainda estão usando armazenamento (~ 280M), mesmo que ls não retorne nada, o que me faz suspeitar que esse problema está de alguma forma relacionado ao ZFS montes desapareceram; Meu primeiro passo teria sido reiniciar todo o sistema e ver se isso esclarece as coisas, mas temo que o último recipiente em execução também morra, dificultando a solução do problema.

Para referência, aqui está o diretório de armazenamento dos meus contêineres:

$ sudo ls -l /var/lib/lxd/containers
total 37
lrwxrwxrwx 1 root   root      41 Apr 25 09:19 smb-server -> /var/lib/lxd/containers/deluge-ub1604.zfs
drwxr-xr-x 2 root   root    4096 Apr 25 09:19 smb-server.zfs
-rw-r--r-- 1 root   root   19011 May 18 11:46 lxc-monitord.log
lrwxrwxrwx 1 root   root      39 May 18 02:02 mail-server -> /var/lib/lxd/containers/mail-server.zfs
drwxr-xr-x 2 100000 100000  4096 May 18 02:02 mail-server.zfs
lrwxrwxrwx 1 root   root      35 Apr 22 11:38 ub-test -> /var/lib/lxd/containers/ub-test.zfs
drwxr-xr-x 4 100000 100000     5 Apr 22 11:37 ub-test.zfs
lrwxrwxrwx 1 root   root      38 May 17 09:31 www-server -> /var/lib/lxd/containers/smb-server.zfs
drwxr-xr-x 2 100000 100000  4096 May 17 09:31 www-server.zfs
    
por Jonathan Y. 18.05.2016 / 11:52

3 respostas

3

Eu gostaria de lhe dizer que recebi o mesmo problema com todos os meus servidores de contêineres Xenial (5).

Para adicionar mais informações ao nosso problema, as montagens não aparecem mais quando você digita mount .

Se você digitar zfs mount -a , ele somente montará os contêineres não em execução, com os contêineres em execução, você obterá o seguinte erro: "filesystem 'lxd/containers/container_name' is already mounted"

Então, para corrigir o problema completamente, primeiro você precisa parar o (s) container (s) e, em seguida, emitir zfs mount -a .

Para concluir, existe algum tempo limite nessas montagens do zfs ou alguma tarefa cron removeu-as de alguma forma, mas isso é definitivamente um bug.

Espero que isso não tenha danificado nenhum contêiner ...

    
por Zike 19.05.2016 / 00:18
1

Ainda não consigo imaginar o que deu errado, mas executar sudo zfs mount -a corrigiu o problema (como mencionado acima, os conjuntos de dados do ZFS existiam - como é evidente pelo uso de armazenamento - eles foram desmontados por algum motivo) para cada contêiner não em execução.

Parando www-server , eu pude consertar seu ponto de montagem também com o mesmo comando, então reinicie-o novamente.

N.B. Se alguém puder explicar a causa por trás desse erro nos próximos dias, aceitarei a resposta. Caso contrário, deixarei esta resposta aqui para qualquer outra pessoa que experimente o mesmo problema (embora tenha sido tudo o que me impediu de reinicializar, o que também corrigiu o problema - já que todos os conjuntos de dados do ZFS são montados na inicialização) -este problema está longe de ser crítico).

    
por Jonathan Y. 18.05.2016 / 14:04
0

Vi isso hoje em uma nova instalação do Xenial, também depois de ter excluído alguns contêineres no dia anterior.

Remover o ponto de montagem /var/lib/lxd/containername.zfs (rm) e, em seguida, executar o zfs mount -a corrigido

Bastante desconcertante: não é possível excluir um contêiner sem se preocupar com pontos de montagem sendo corrompidos!

    
por Arni J 05.04.2017 / 14:12