Контейнеры, управляемые LXD (на ZFS), исчезают после удаления другого

Я установил несколько контейнеров на сервере Xenial, используя набор данных ZFS для хранения (я не уверен, что это важно, мы доберемся до этого).

Попытка перезапустить один из них, mail-server Теперь я получаю

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

и просматривая журнал, я вижу

        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'

Это неудивительно, так как когда я проверяю

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

Однако, я получаю то же самое, если я проверяю другой контейнер:

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

, но этот контейнер в настоящее время running:

$ 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 также работает и ничего не отображается в ls, и как только я его остановил, я больше не могу запускать его снова по той же причине. Единственный контейнер, который я еще могу найти, 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

Я действительно могу остановиться и начать по желанию.

My только догадываться о причине этого изменения (единственное, что я могу вспомнить, что может повлиять на эту проблему) заключается в том, что я удалил еще один контейнер вчера ub-test2. Я все еще вижу след в следующем:

$ 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

Вы также можете видеть, что /var/lib/lxd/containers/mail-server.zfs (и smb-server, www-server) все еще используют память (~ 280M), хотя ls ничего не возвращает, что заставляет меня подозревать, что эта проблема каким-то образом связана с монтированием ZFS; мой первый шаг состоял в том, чтобы перезапустить всю систему и посмотреть, не очистит ли это все, но я боюсь, что это приведет к тому, что последний запущенный контейнер тоже умрет, что затруднит устранение этой проблемы.

Для справки, вот каталог хранения контейнеров:

$ 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
задан 18 May 2016 в 12:52

2 ответа

Я все еще не могу представить, что пошло не так, но запуск sudo zfs mount -a исправил проблему (как упоминалось выше, наборы данных ZFS действительно существовали - как видно из их использования хранилища - они были просто отключены по какой-либо причине) для каждого контейнера не работает.

Остановка www-server, я мог бы также установить свою точку монтирования с той же командой, а затем снова запустить ее.

NB Если кто-нибудь сможет объяснить причину этой ошибки в ближайшие пару дней, я приму их ответ. В противном случае я оставлю этот ответ для всех, кто сталкивается с такой же проблемой (хотя запуск всех контейнеров остановил меня от перезагрузки, что также устранило проблему), поскольку все наборы данных ZFS монтируются при запуске - так как этот вопрос далеко не критический).

1
ответ дан 23 May 2018 в 11:00
  • 1
    Вы проверяли атрибуты монтирования набора данных каждого контейнера, работающие и неработающие? sudo zfs получает весь набор & lt; dataset & gt; | grep. Возможно, это дает еще один ключ. – andreas 18 May 2016 в 16:18
  • 2
    @andreas Я ничего не могу почерпнуть из этого теперь, когда я перемонтировал все свои контейнеры с помощью sudo zfs mount -a, кроме как комментировать, что перед ними все были установлены соответствующие точки монтирования, которые каким-то образом разобрались. Теперь они снова устанавливаются, конечно, с правильными путями (в var/lib/lxd/containers), что и показывает мне zfs get all. – Jonathan Y. 18 May 2016 в 16:23

Увидели это сегодня на новой установке Xenial, также после удаления некоторых контейнеров за день до этого.

Удаление точки монтирования /var/lib/lxd/containername.zfs (rm), а затем запуск zfs mount -a исправил ее [!d1 ]

Довольно смущающе, что вы не можете удалить контейнер, не беспокоясь о том, что точки монтирования закручиваются!

0
ответ дан 23 May 2018 в 11:00

Другие вопросы по тегам:

Похожие вопросы: