# LXC Storage: Effiziente Datenhaltung & Quotas in Proxmox

TL;DR / Management Summary Ein LXC-Container speichert seine Daten nicht in einer festen Image-Datei (wie eine VM), sondern meist direkt in einem Verzeichnis oder einem Sub-Volume des Hosts. Dies ermöglicht eine extrem flexible Speicherverwaltung. Ein Senior Admin nutzt ZFS-basierte Datastores für LXC, um von Kompression und sofortigen Snapshots zu profitieren, und setzt strikte Storage-Quotas, um zu verhindern, dass ein einzelner Log-Prozess im Container die gesamte SSD des Hosts füllt.


# 1. Storage-Backends für LXC

Vom Ordner zum Volume.

Proxmox unterstützt verschiedene Backends für LXC:

  1. Directory (Ext4/XFS): Der Container liegt in einem Ordner (/var/lib/vz/images/ID/...).
    • Nachteil: Langsame Snapshots (müssen kopiert werden).
  2. LVM-Thin: Der Container bekommt ein eigenes logisches Volume.
    • Vorteil: Schnelle Snapshots, harte Block-Ebene Quotas.
  3. ZFS (Empfohlen): Der Container ist ein ZFS-Dataset.
    • Vorteil: Native Kompression, inkrementelle Replikation, bitgenaue Integrität.

# 2. Deep Dive: Mount Points (MP)

Speichererweiterung für Container.

Ein LXC kann mehr als nur seine Root-Disk haben.


# 3. Bind Mounts: Daten vom Host durchreichen

Die Zero-Overhead Lösung.

Manchmal möchten Sie Daten, die bereits auf dem Proxmox-Host liegen (z.B. ein großes ZFS-Array), direkt im Container nutzen.

mp0: /tank/shared_data,mp=/mnt/data,ro=1

# 4. Day-2 Operations: Quota Management

Den Platz begrenzen.

LXC bietet zwei Arten von Limits:

  1. Hard Limit: Die definierte Disk-Größe (z.B. 10 GB). Der Container kann keinen Byte mehr schreiben.
  2. User Quotas: Wenn Sie innerhalb des Containers mehreren Usern (z.B. in einer Webhosting-Umgebung) Limits geben wollen.
    • Aktion: Aktivieren Sie Quota unter VM -> Options -> Features.

# 5. Troubleshooting & “War Stories”

Wenn die Disk voll ist.

# Top 3 Fehlerbilder

  1. Symptom: Container startet nicht (“No space left on device”), obwohl die GUI 20% frei zeigt.

    • Ursache: Die Inodes des physischen Dateisystems (Ext4) sind aufgebraucht (Artikel 670).
    • Lösung: Auf ZFS oder LVM-Thin migrieren.
  2. Symptom: “Permission Denied” auf Bind-Mounts.

    • Ursache: UID-Mismatch im unprivilegierten Modus.
    • Lösung: Dateirechte am Host auf die gemappte ID (meist 100000) ändern.
  3. Symptom: Hoher I/O-Wait beim Backup von vielen kleinen Dateien.

    • Fix: Nutzen Sie den Proxmox Backup Server (PBS). Er sichert blockbasiert und umgeht den Overhead des Dateisystem-Scans.

# “War Story”: Der “Z-Pool” Freeze

Ein Admin betrieb seine LXC auf einem ZFS-Pool ohne Quotas. Ein Datenbank-Job im Container 105 schrieb durch einen Bug unendlich viele Log-Files. Das Ergebnis: Der ZFS-Pool füllte sich bis auf 99.9%. Da ZFS für das “Copy-on-Write” immer freien Platz zum Löschen (!) braucht, frohr der gesamte Host ein. Keine VM und kein Container konnte mehr schreiben. Selbst der Login via SSH am Host war nicht mehr möglich. Lehre: Setzen Sie immer eine Root Disk Size in den LXC-Ressourcen. Verlassen Sie sich niemals darauf, dass die Applikation im Container “schon nicht zu viel schreiben wird”.


# 6. Monitoring & Reporting

Füllstände im Blick.

# Disk-Usage Report (Shell)

# Zeigt die reale physische Belegung aller LXC auf ZFS
zfs list -r rpool/data/subvol-ID-disk-0

# 7. Fazit & Empfehlung

Das Storage-Layout ist die Basis für die Performance Ihrer Container.


# Anhang: Cheatsheet (pct storage)

Aufgabe Befehl
Disk vergrößern pct resize <id> rootfs +10G
Storage migrieren pct move-volume <id> rootfs local-zfs
Bind-Mount testen pct mount <id> (dann in /var/lib/lxc/... schauen)

# Referenzen