/dev/shm im LXC-Container

CoMo

Commander
Registriert
Dez. 2015
Beiträge
2.937
Hallo,

Ich habe hier zuhause einen Proxmox-Server mit vielen Debian-Containern. Damit ich nun bei Updates nicht jedes Mal alles aus dem Internet herunterladen muss, habe ich einen zusätzlichen Container (Debian 12) gebaut und darin Apt-Cacher NG installiert.

Das funktioniert auch soweit, allerdings hätte ich den Cache gerne im RAM. Also habe ich den Cache-Ordner nach /dev/shm/apt-cacher-ng gelegt.

Irgendwas stimmt da aber nicht:

Code:
               total        used        free      shared  buff/cache   available
Mem:           8.5Gi        31Mi       8.1Gi       289Mi       344Mi       8.5Gi
Swap:             0B          0B          0B

Code:
Filesystem                    Size  Used Avail Use% Mounted on
rpool/data/subvol-121-disk-0  8.0G  528M  7.5G   7% /
none                          492K  4.0K  488K   1% /dev
udev                           32G     0   32G   0% /dev/tty
tmpfs                          32G  290M   32G   1% /dev/shm
tmpfs                          13G  100K   13G   1% /run
tmpfs                         5.0M     0  5.0M   0% /run/lock
tmpfs                         6.3G     0  6.3G   0% /run/user/0

Wieso ist /dev/shm 32 GB groß, obwohl der Container nur 8,5 GB hat? Wo landen die Daten? Etwa doch auf der Disk? Nach einem Reboot des Containers sind allerdings alle gecachten Daten aus /dev/shm/apt-cacher-ng verschwunden.
 
Wie sieht denn überhaupt die LXC-Konfiguration aus?
 
  • Gefällt mir
Reaktionen: GTrash81 und madmax2010
So:

Code:
arch: amd64
cmode: console
cores: 1
features: keyctl=1,nesting=1
hostname: apt-cacher-ng
memory: 8708
net0: name=eth0,bridge=vmbr0,hwaddr=12:3E:EF:CB:5C:37,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-zfs:subvol-121-disk-0,size=8G
swap: 0
tags: 12
tty: 0
unprivileged: 1
 
Mir fehlt irgendwie die Einstellung dafür, das Du Dir deine Container-private RAM-Disk aufbaust und dier tatsächlich auch nur 8GB zuweist (für die persistente Disk sehe ich das; aber nicht für tmpfs ).

Ich würde daher nach dem, was ich bisher gesehen hab einfach davon ausgehen, das Du die /dev/shm vom Hostsystem nimmst.
Warum die 32GB groß ist: Generell ist es so, das wenn man nicht nicht begrenzt der gesamte verfügbare virtuelle Speicher als Größe ausgegeben wird.
 
Hm.

Also /dev/shm auf dem Host hat auch 32 GB.

Code:
tmpfs                          32G   34M   32G   1% /dev/shm

Das passt aber nicht zum verwendeten Speicherplatz im Container:

Code:
tmpfs                          32G  290M   32G   1% /dev/shm

Wo sind denn dann die 290 MB gelandet? Auf dem Host liegen ja nur 34 MB in der RAMDisk.
 
CoMo schrieb:
Wieso ist /dev/shm 32 GB groß, obwohl der Container nur 8,5 GB hat?
RAM hat nichts mit der Disk zu tun.

/dev/shm dürfte generell in einem anderen 'namespace' laufen.
 
Der Container hat 8,5 GB RAM, /dev/shm hat aber 32 GB. Das soll ja gar nichts mit der Disk zu tun haben. Ich möchte, dass der Cache nur im RAM landet und nicht auf der Disk.

Wie müsste ich es denn dann korrekt machen? In meiner Apt-Cacher NG Config steht:


Code:
#CacheDir: /var/cache/apt-cacher-ng
CacheDir: /dev/shm/apt-cacher-ng

# Log file directory, can be set empty to disable logging
#
#LogDir: /var/log/apt-cacher-ng
LogDir: /dev/shm/apt-cacher-ng
 
Das wird schon stimmen. /dev/shm dürfte für Host und unprivileged guest getrennt sein (mount namespace). Du kannst es auf 'tmpfs' prüfen:
Code:
$ mount |grep /dev/shm
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,uid=200000,gid=200000)
Ansonsten in den config files des Containers nachschauen. Da kannst Du es bei Bedarf limitieren oder einfach einen anderen (limitierten) tmpfs Mountpoint erstellen.
 
Zuletzt bearbeitet:
Wieso verschwendest du den RAM für die Dateien?

Für Linux ist es prinzipiell besser, wenn das System den freien RAM zur Verfügung hat und den als Cache nutzen kann um dann schneller zu laufen und weniger vom Dateisystem zu lesen. Mit deinem Ansatz wirkst du dem entgegen.
Ergänzung ()

Anbei die Ausgabe von meinem 24/7 Mini-Server
Code:
$ free -m
               total        used        free      shared  buff/cache   available
Mem:           31704        6218         455         727       25030       24641
Swap:           4095           1        4094
Linux ist sehr sehr happy über den buff/cache Block.
Ergänzung ()

Ich habe auch apt-cacher-ng im Docker im Einsatz. Wird bei mir (privat) von ca. 30 Umgebungen genutzt. Ist super Lösung. Aber die Dateien speichere ich im Dateisystem.
 
Zurück
Oben