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
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 ...
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).
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!