Was ich so treibe...

Uli's IT-Blog - Konzeption, Entwicklung, Betrieb

LXC: Probleme mit 3.10-er-Kernel - Das Dateisystem ist nur lesbar

Seit einiger Zeit verwende ich LXC als Ergänzung zu VirtualBox. Bislang läuft das weitgehend problemlos. Merkwürdigerweise bekomme ich seit ein paar Tagen immer wieder Fehlermeldungen bezüglich BTRFS: “Das Dateisystem ist nur lesbar”.

Erst dachte ich, BTRFS hätte ‘nen Schuß. Detailliertere Tests zeigen, dass der 3.10-er-Kernel wohl “Schuld” ist.

Meine LXC-Umgebung

  • Ubuntu 12.04
  • 3.8-er-Kernel oder auch 3.10-er-Kernel
  • /dev/mapper/datavg-lxlv ist eingebunden unter /lxc und ist ein BTRFS-Dateisystem
  • Alle LXC-Container liegen unter /lxc, also auf einem BTRFS-Dateisystem

Runterfahren eines LXC-Containers unter 3.8

Beim 3.8-er-Kernel sieht man eine Fehlermeldung bzgl. meiner BTRFS-Partition: Sie kann nicht umgehängt werden mit Nur-Lesen-Zugriff.

Runterfahren mit Kernel 3.8
1
2
3
4
5
6
7
8
~$ sudo poweroff
...
umount: /run/lock: not mounted
umount: /run/shm: not mounted
mount: cannot mount block device /dev/mapper/datavg-lxclv read-only
 * Will now halt
~$ sudo touch  /lxc/x
~$ sudo rm  /lxc/x

Runterfahren eines LXC-Containers unter 3.10

Beim 3.10-er-Kernel sieht man keine Fehlermeldung bzgl. meiner BTRFS-Partition, also kann sie vermutlich umgehängt werden mit Nur-Lesen-Zugriff. Dementsprechend ist sie danach “nur-lesend” eingehängt und der Inhalt von /lxc kann nicht mehr modifiziert werden.

Runterfahren mit Kernel 3.10
1
2
3
4
5
6
7
8
9
~$ sudo poweroff
...
umount: /run/lock: not mounted
umount: /run/shm: not mounted
 * Will now halt
~$ sudo touch /lxc/x
touch: »/lxc/x“ kann nicht berührt werden: Das Dateisystem ist nur lesbar
~$ LANG=C sudo touch /lxc/x
touch: cannot touch `/lxc/x': Read-only file system

Dateisysteme innerhalb der LXC-Container

Dateisysteme
1
2
3
4
5
6
container~$ df
Filesystem               1K-blocks     Used Available Use% Mounted on
/dev/mapper/datavg-lxclv  41943040 13871816  26684544  35% /
none                        816864       76    816788   1% /run
none                          5120        0      5120   0% /run/lock
none                       4084308        0   4084308   0% /run/shm

Korrekturen

  • Bei Verwendung des 3.10-er-Kernels nach dem Stoppen eines Containers: sudo mount -o remount,rw /dev/mapper/datavg-lxclv ausführen
  • Immer nur den 3.8-er-Kernel verwenden
  • Innerhalb des Containers /etc/init.d/umountroot “abklemmen”:

    sudo update-rc.d -f umountroot remove
    

    Leider muß man dies in regelmässigen Abständen wiederholen. Heute habe ich bspw. im Container apt-get update; apt-get upgrade ausgeführt mit der Folge, dass /etc/init.d/umountroot wieder aktiviert wurde.

Historie

  • 2013-08-13: /etc/init.d/umountroot wird durch apt-get upgrade manchmal wieder aktiviert.

Comments