web-dev-qa-db-fra.com

Les conteneurs gérés par LXD (sur ZFS) disparaissent après en avoir supprimé un autre

J'ai installé quelques conteneurs sur le serveur Xenial, en utilisant un ensemble de données ZFS pour le stockage (je ne suis pas sûr que ce soit pertinent; nous y reviendrons). Ils fonctionnaient tous bien.

Essayer de redémarrer l'un d'eux, mail-server Je reçois maintenant

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

et en regardant le journal que je vois

        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'

Ce n'est pas surprenant, car quand je vérifie

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

Cependant, j'obtiens la même chose si je vérifie un autre conteneur:

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

mais ce conteneur est en cours d'exécution:

$ 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 était également en cours d'exécution, et ne montrait rien dans ls, et une fois que je l'ai arrêté, je ne peux plus le redémarrer, pour la même raison. Le seul conteneur dont rootfs je puisse encore trouver, 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

Je peux en effet m'arrêter et repartir à volonté.


Ma seule supposition quant à la raison de ce changement (la seule chose dont je me souvienne avoir fait cela pourrait affecter éventuellement ce problème) est que j'ai supprimé un autre conteneur hier , ub-test2. Je peux encore en voir une trace avec:

$ 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

Vous pouvez également y voir que /var/lib/lxd/containers/mail-server.zfs (et smb-server, www-server) utilise toujours le stockage (~ 280M), même si ls ne renvoie rien, ce qui me fait soupçonner que ce problème est en quelque sorte lié aux montages ZFS qui ont mal tourné; mon premier mouvement aurait été de redémarrer l'ensemble du système et de voir si cela clarifie les choses, mais je crains que cela entraîne également la mort du dernier conteneur en cours d'exécution, ce qui rend plus difficile le dépannage du problème.


Pour référence, voici le répertoire de stockage de mes conteneurs:

$ 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
1
Jonathan Y.

Je voudrais vous dire que j'ai eu le même problème avec tous mes serveurs de conteneur Xenial (5).

Pour ajouter plus d'informations à notre problème, les montures n'apparaissent plus lorsque vous tapez mount.

Si vous tapez zfs mount -a il monte uniquement les conteneurs non en cours d'exécution, avec les conteneurs en cours d'exécution, vous obtenez l'erreur suivante: "filesystem 'lxd/containers/container_name' is already mounted"

Donc, pour résoudre complètement le problème, vous devez d'abord arrêter le ou les conteneurs, puis lancer zfs mount -a.

Pour conclure, il y a un certain délai d'attente sur ces montages zfs ou une tâche cron les a supprimés d'une manière ou d'une autre, mais c'est certainement un bogue.

J'espère que cela n'a endommagé aucun conteneur ...

3
Zike

Je ne peux toujours pas imaginer ce qui s'est mal passé, mais en exécutant Sudo zfs mount -a a résolu le problème (comme mentionné ci-dessus, les ensembles de données ZFS existaient - comme en témoigne leur utilisation du stockage - ils ont juste été démontés pour une raison quelconque) pour chaque conteneur qui ne fonctionnait pas.

Arrêt www-server, Je pourrais également réparer son point de montage avec la même commande, puis le redémarrer.

N.B. Si quelqu'un peut expliquer la cause de cette erreur dans les prochains jours, j'accepterai sa réponse. Sinon, je laisserai cette réponse ici à toute personne rencontrant le même problème (bien que l'exécution de conteneurs soit tout ce qui m'a empêché de redémarrer, ce qui aurait également résolu le problème - puisque tous les jeux de données ZFS sont montés au démarrage) - donc cette question est loin d'être critique).

1
Jonathan Y.

J'ai vu cela aujourd'hui sur une nouvelle installation Xenial, également après avoir supprimé certains conteneurs la veille.

Suppression du /var/lib/lxd/containername.zfs point de montage (rm), puis exécutez zfs mount -a l'a corrigé

Assez déconcertant que vous ne puissiez pas supprimer un conteneur sans vous soucier de visser les points de montage!

0
Arni J