Ich verwende auf meinem Arbeitsplatzrechner gelegentlich LXC-Container
für Spezial-Aufgaben, beispielsweise für Tests oder das Bauen von Drittpaketen.
Dafür habe ich einen separaten Speicherbereich angelegt (“Storage Pool” im
Sprachgebrauch von LXC), damit die Container nicht den Rest meines Rechners
zumüllen.
Heute lassen sich die Container plötzlich nicht mehr starten. In diesem Artikel
beschreibe ich die Maßnahmen, um wieder zu einem funktionierendem
LXC zu gelangen. Die Ursachenermittlung für die Störung streife
ich nur am Rande.
Der Inhalt des Speicherbereichs sieht relativ “dünn” aus! Üblicherweise liegen
hier pro Container sehr viele Daten ab! Aktuell sehe ich nur
build-gitea
test-2110
und für diese auch nur ein Backup der Konfigurationsdateien!
Quasi alle Container-Daten scheinen zu fehlen!
Sichtung frühere Aktionen
Am 2021-10-29 zwischen 06:10:55 und 06:14:09 habe ich
letztmalig erfolgreich mit “build-gitea” gearbeitet.
Also: Dieser Container ging kaputt zwischen 2021-10-29 und 2021-12-03!
Am 2021-11-07 scheine ich zwischen 11:00 und 11:30 Aktionen
mit BTRFS und LXDLV unternommen zu haben. Eventuell habe ich
da Murks fabriziert? Muß ich bei Gelegenheit im Detail untersuchen…
Container löschen
Löschen der Container klappt nicht so ohne weiteres:
12
uli@ulicsl:~$ lxc delete ubuntu-2004
Error: Error deleting storage volume: Failed setting subvolume writable "/var/snap/lxd/common/lxd/storage-pools/default/containers/ubuntu-2004": Failed to run: btrfs property set -ts /var/snap/lxd/common/lxd/storage-pools/default/containers/ubuntu-2004 ro false: ERROR: Could not get subvolume flags: Invalid argument
Wenn ich vorab eine Tabelle von LXD aufräume, dann klappt es:
1234567891011
uli@ulicsl:~$ lxd sql global "delete from storage_volumes where storage_pool_id=1;"
Rows affected: 6
uli@ulicsl:~$ lxc delete ubuntu-2004
uli@ulicsl:~$ lxc delete ubuntu-2104
...
uli@ulicsl:~$ lxc ls
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
Container neu anlegen
Leider klappt die Neuanlage nicht:
12345
uli@ulicsl:~$ lxc launch ubuntu:20.04 ubuntu-2004
Creating ubuntu-2004
Starting ubuntu-2004
Error: Failed preparing container for start: Failed to handle idmapped storage: No such file or directory: "/var/snap/lxd/common/lxd/storage-pools/default/containers/ubuntu-2004/rootfs"
Try `lxc info --show-log local:ubuntu-2004` for more info
“Alles” löschen
1234567891011121314151617181920212223242526
uli@ulicsl:~$ lxd sql global "delete from storage_volumes where storage_pool_id=1;"
uli@ulicsl:~$ lxc delete ubuntu-2004
uli@ulicsl:~$ lxc image list
+-------+--------------+--------+---------------------------------------------+--------------+-----------+----------+-----------------------------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE | UPLOAD DATE |
+-------+--------------+--------+---------------------------------------------+--------------+-----------+----------+-----------------------------+
| | a84023244321 | no | ubuntu 20.04 LTS amd64 (release) (20211129) | x86_64 | CONTAINER | 380.57MB | Dec 3, 2021 at 9:39am (UTC) |
+-------+--------------+--------+---------------------------------------------+--------------+-----------+----------+-----------------------------+
uli@ulicsl:~$ lxc image delete a840234321
uli@ulicsl:~$ EDITOR=jmacs lxc profile edit default
# root: samt "pool" rauswerfen
uli@ulicsl:~$ lxc storage show default
config:
size: 50GB
source: /dev/mapper/ubuntu--vg-lxdlv
volatile.initial_source: /dev/mapper/ubuntu--vg-lxdlv
description: ""
name: default
driver: btrfs
used_by: []
status: Created
locations:
- none
uli@ulicsl:~$ lxc storage delete default
Storage pool default deleted
uli@ulicsl:~ lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (ceph, btrfs, dir, lvm, zfs) [default=zfs]: btrfs
Create a new BTRFS pool? (yes/no) [default=yes]: no
Name of the existing BTRFS pool or dataset: /dev/mapper/ubuntu--vg-lxdlv
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]:
Would you like the LXD server to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes
config: {}
networks: []
storage_pools:
- config:
source: /dev/mapper/ubuntu--vg-lxdlv
description: ""
name: default
driver: btrfs
profiles:
- config: {}
description: ""
devices:
root:
path: /
pool: default
type: disk
name: default
projects: []
cluster: null