icewave schrieb:
die Container-Images liegen da aber auch drauf.
Mit Images meinst du einfach das rootfs der Container? Images, gibt es beim gewöhnlichen LXC-Setup nicht.
Zusätzlich gibt es noch ein RAID für die Ausfallsicherheit - da kriegt der entsprechende Container auch noch mal Platz drauf, wo er dann z.B. als Mail-Server die Mails als Datei ablegt.
Das heißt also du musst vom Host aus den Speicher auf dem RAID0 in den Containern mounten. Du möchtest einzelnen Container ja nicht Zugriff auf das ganze RAID-Device geben.
Oder planst du das über NFS oder ähnlichen File-Share zu erledigen? (IMHO Overkill!)
Eine Datenbank möchte ich da eigtl. nur für die Benutzerdaten nutzen.
Die wird sich also eher selten ändern. Wird also keine Probleme machen?!
Grund für das trennen von RAID / SSD für LXC ist für mich, dass ich in den Containern ein volles Debian abbilde, d.h. das auch im LXC z.B. ein syslog / spool existiert und ich so dann die HDDs im RAID aber auch runterfahren kann
Hört sich gut an.
Nun habe ich also im LXC das Dateisystem abgebildet
???
Das geht aber afaik doch nur mit der rsnapshot Lösung, oder? Weil für LVM / btrfs müsste dem Host ja bekannt sein, was der Container für Snapshots haben will und wohin er diese haben will, oder?
Jein. Wenn du eh automatisch Snapshots anlegst kann dem Container und dem Host egal sein wann du das machst.
Das der Container selbst einen btrfs snapshot im snapshot anlegt geht momentan nicht. Siehe hier.
Und aus dem Container heraus LVM volumes anlegen geht meines Wissens auch nicht.
Ob man in einer btrfs Partition die nur für den Container benutzt wird einen snapshot anlegen kann, weiß ich nicht. Das müsste man in einer VM testen. Vielleicht komme ich am Sonntag dazu.
Hier meine Idee für das Setup.
SSD:
RAID:
Dann werden die Snapshots automatisch vom Host alle X Stunden angelegt und automatisch im Verzeichnis "container$-data-snapshot" gemounted.
Also sieht das Verzeichnis dann etwa so aus:
container1-data-snapshot
2015-03-12-22-00
2015-03-12-18-00
2015-03-12-14-00
…
Dadurch das container1-data-snapshot im Container1 unter /data-snapshot gemounted erscheint sind alle Snapshots die der Host erstellt automatisch im Container verfügbar.
Der echte Mountpoint ist entsprechend /var/lib/lxc/container1/rootfs/data-snapshot auf dem Host.
Du musst dann also die Snapshots mounten via folgendem Befehl, bzw. direkt in die fstab schreiben:
mount /dev/vg01/container1-data-snapshot /var/lib/lxc/container1/rootfs/data-snapshot/2015-03-12-22-00
Zum erstellen des Snapshots unter LVM wäre das:
lvcreate -l100%FREE -s -n container1-data-snapshot /dev/vg01/container1-data
Oder mit btrfs:
btrfs subvolume snapshot /btrfs/container1-data /var/lib/lxc/container1/rootfs/data-snapshot/2015-03-12-22-00
/btrfs liegt dabei auf dem RAID und container1-data ist ein subvolume dass der Container1 für seine Daten nutzt.
Aber bei snapshots musst du dich noch darum kümmern dass die alten Snapshots gelöscht werden. Das ginge zum Beispiel mit diesem Skript das Hanoi-Rotation für btrfs-Snapshots macht.
Aber letztendlich, wenn es nur um gelöschte Email geht die eh als Dateien vorliegen… na dann nimm einfach rsnapshot und schreibe das Zeug nach /data-snapshot (absoluter Pfad im Container). Geht einfach und bei so kleinen Dateien wie Email ist es eher unwahrscheinlich dass Dateien beim Kopieren durchs Schreiben korrumpiert werden. rsnapshot kümmert sich auch gleich darum dass alte "snapshots" gelöscht werden.