# 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:
- Directory (Ext4/XFS): Der Container liegt in einem Ordner (
/var/lib/vz/images/ID/...).- Nachteil: Langsame Snapshots (müssen kopiert werden).
- LVM-Thin: Der Container bekommt ein eigenes logisches Volume.
- Vorteil: Schnelle Snapshots, harte Block-Ebene Quotas.
- 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.
- Mount Point: Ein zusätzliches Volume, das im Container unter einem Pfad (z.B.
/var/lib/mysql) eingehängt wird. - Vorteil: Trennung von Betriebssystem und Daten (erleichtert Upgrades).
- Aktion:
GUI -> VM -> Resources -> Add -> Mount Point.
# 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.
- Technik: Bearbeiten Sie
/etc/pve/lxc/ID.confmanuell:
mp0: /tank/shared_data,mp=/mnt/data,ro=1
- Sicherheit: Nutzen Sie
ro=1(Read Only), wenn der Container die Daten nur lesen darf (z.B. Medien für einen Webserver).
# 4. Day-2 Operations: Quota Management
Den Platz begrenzen.
LXC bietet zwei Arten von Limits:
- Hard Limit: Die definierte Disk-Größe (z.B. 10 GB). Der Container kann keinen Byte mehr schreiben.
- User Quotas: Wenn Sie innerhalb des Containers mehreren Usern (z.B. in einer Webhosting-Umgebung) Limits geben wollen.
- Aktion: Aktivieren Sie
QuotaunterVM -> Options -> Features.
- Aktion: Aktivieren Sie
# 5. Troubleshooting & “War Stories”
Wenn die Disk voll ist.
# Top 3 Fehlerbilder
-
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.
-
Symptom: “Permission Denied” auf Bind-Mounts.
- Ursache: UID-Mismatch im unprivilegierten Modus.
- Lösung: Dateirechte am Host auf die gemappte ID (meist
100000) ändern.
-
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.
- Empfehlung: Nutzen Sie ZFS als Standard-Backend. Die Vorteile bei Datenintegrität und Kompression sind unbezahlbar.
- Wichtig: Trennen Sie Applikations-Daten (z.B. Datenbanken) in eigene Mount-Points ab, um die OS-Partition klein und übersichtlich zu halten.
# 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) |