Einige der in diesem Beitrag geteilten Links sind Affiliate-Links. Wenn du auf den Link klickst und etwas kaufst, erhalten wir eine Affiliate-Provision ohne zusätzliche Kosten für dich.
Die LXC-Container in Proxmox eignen sich Hervorragend für das Hosten von Applikationen wie z.B. Nextcloud, Plex oder auch Paperless-NGX. Eines haben diese Dienste gemeinsam: Sie greifen auf Daten zu die meist auf einem NAS liegen. Man möchte die Daten nicht im LXC selbst speichern. Deswegen kann man NAS-Freigaben als NFS oder CIFS-Mount in den LXC Container einbinden um so auf externe Daten zuzugreifen.
Vorrausetzung
Um eine NFS oder CIFS Freigabe Mounten zu können muss der Container Privilege sein und die Optionen unter Features aktiviert haben. Den Privilege Modus kann man nur bei Erstellung des Containers Aktivieren.
Um einen Privileged LXC Container in Proxmox zu erstellen muss auf der ersten Seite des Create: CT Dialogs das Häkchen bei der Option „Unprivileged container“ herausgenommen werden:
Nun muss in den Optionen des Containers noch nfs bzw. cifs aktiviert werden. Dafür klickt man im Container Menü (Man muss den Container im linken Menü auswählen) auf „Options“ dort auf „Features“ und dann links oben auf „Edit“. Dort setzt man bei nfs bzw. cifs ein Häkchen und dann auf „OK“
Achtung!
Privilegierte LXC Container bergen ein nicht unerhebliches Risiko. Dazu mehr hier:
Privilegierte Container laufen unter dem Root-Benutzer des Hostsystems. Das bedeutet, dass der Root-Benutzer innerhalb des Containers auch Root-Rechte auf dem Host hat.
Aufgrund der Tatsache, dass Root-Rechte des Containers auf das Host-System ausgedehnt werden können, stellen privilegierte Container ein höheres Sicherheitsrisiko dar. Ein Sicherheitsproblem im Container könnte potenziell das gesamte Host-System gefährden.
Proxmox: NFS Share in LXC Container mounten
NFS oder auch Network File System ist ein weitreichend genutztes Protokoll für die Dateiübertragung unter Unix (Linux) Systemen. NFS Shares können in einem Privilegierten Proxmox Container mit dem Aktivierten NFS Feature gemountet werden.
APT: NFS-Common installieren
Wenn die Vorrausetzungen erfüllt sind können wir die benötigten Tools installieren und den NFS Share Mounten. Für alle gängigen Linux Distributionen wie: Debian, Ubuntu usw. benötigen wir das Paket NFS Common:
Erstmal Updaten wir die Paketquellen und die installierten Pakete selbst:
sudo apt-get update && apt-get upgrade -y
Für Debian Basierende Distributionen bzw. alle mit APT Paket Manager:
sudo apt-get install nfs-common
Die Abfrage bestätigen wir mit Yes (Y)
NFS Share Mounten
Danach kann man bereits einen NFS-Share in dem Proxmox LXC Container Mounten. Dafür kann man den mount Befehl verwenden. Über den Befehl gemountete Laufwerke sind nur bis zum nächsten Neustart verfügbar. Wie man mithilfe von fstab Automatisch Laufwerke einbindet folgt weiter unten.
sudo mount -t nfs -o soft 192.168.1.2:/volume1/Cybertalk /mnt/Cybertalk
Der Mount Befehl folgt folgender Syntax:
mount [parameter] device mount-point
Der Befehl Mount gefolgt von den Parametern (In diese fall der Typ: NFS ) dann folgt die IP oder der Hostname des Server bzw. des Gerätes der den NFS-Share bereitstellt. Durch ein Leerzeichen getrennt wird der Lokale Einhängepunkt angegeben. Also der Lokale Ordner unter dem wir später unsere Daten die auf dem NFS Share Speicher finden werden.
Bevor man den NFS Share Mounten kann muss man diesen Lokalen Ordner erstellen, sonst wird eine Fehlermeldung zurück gegeben.
Bevor wir also unseren NFS Share auf dem Server 192.168.1.2/volume1/Cybertalk einbinden können müssen wir erst den lokalen einhängepunkt (Ordner) erstellen:
mkdir /mnt/Cybertalk
Dann können wir den Mount einhängen:
sudo mount -t nfs -o soft 192.168.1.2:/volume1/Cybertalk /mnt/Cybertalk
Wenn wir jetzt in unseren einhängepunkt Navigieren können wir, falls vorhanden, bereits die Daten und Ordner auf dem Share sehen:
Mit ls -a
werden alle Dateien und Ordner angezeigt.
Jetzt möchten wir das der NFS-Share bei jedem Start Automatisch eingehängt wird. Dafür müssen wir einen Eintrag in die fstab Datei machen.
NFS-Share Automatisch Mounten
Die fstab Datei findet man unter /etc/fstab und lässt sich mit einem Editor seiner Wahl öffnen.
nano /etc/fstab
So sieht das dann aus:
In die fstab Datei kann man allerdings nicht einfach den vorher aufgestellten Mount Befehl kopieren hier sieht die Syntax etwas anders aus. Default steht hierbei für die Optionen: rw,suid,dev,exec,auto,nouser,async.
192.168.1.2:/volume1/Cybertalk /mnt/Medien nfs defaults 0 0
Hinweis:
Einträge in den einzelnen Spalten dürfen keine Leerzeichen enthalten, da diese als Trennzeichen interpretiert werden. Leerzeichen in Gerätenamen, Labels oder Einhängepunkten müssen deshalb durch die Zeichenfolge \040
umschrieben werden. Für andere Sonderzeichen genügt der Backslash davor.
Beispiel:
192.168.1.2:/volume1/Cyber talk /mnt/Medien nfs defaults 0 0
Hier muss das Leerzeichen zwischen Cyber und Talk durch \040
ersetzt werden. Das Sieht dann so aus:
192.168.1.2:/volume1/Cyber\040talk /mnt/Medien nfs defaults 0 0
Die Syntax des fstab Eintrages für den nfs-mount sieht so aus:
[device] [mount-point] [filesystem-type] [options] [dump] [pass]
Fstab Optionen
device
: Hier wird angegeben, wo das Dateisystem zu finden ist (Server)mount-point
: Hier wird angegeben, wo das Dateisystem im Dateisystem des Host-Computers eingehängt werden soll (z.B. /mnt/Cybertalk).filesystem-type
: Hier wird das Dateisystem angegeben (z.B. ext4, ntfs, etc.).options
: Hier werden die Mount-Optionen für das Dateisystem angegeben (z.B. rw für lesen/schreiben-Zugriff).dump
: Hier wird angegeben, ob das Dateisystem gesichert werden soll (0 = nein, 1 = ja).pass
: Hier wird angegeben, in welcher Reihenfolge das Dateisystem geprüft werden soll (0 = keine Überprüfung, 1 = Überprüfung beim Systemstart, 2 = Überprüfung beim Systemstart, aber erst nach allen anderen Dateisystemen).auto
– das Dateisystem wird automatisch beim Booten eingehängt, oder wenn der Befehl ‘mount -a’ ausgegeben wird.noauto
– das Dateisystem wird nur manuell eingehängt.exec
– erlaubt die Ausführung von Binärdateien, die sich auf dieser Partition befinden (Voreinstellung).noexec
– Binärdateien dürfen nicht auf dem Dateisystem ausgeführt werden.ro
– mountet das Dateisystem nur lesend.rw
– mountet das Dateisystem lesend und schreibend.sync
– I/O soll synchron erfolgen.async
– I/O soll asynchron erfolgen.user
– erlaubt jedem Benutzer, das Dateisystem zu mounten (impliziert noexec,nosuid,nodev, es sei denn, es wird überschrieben).nouser
– erlaubt nur root das Mounten des Dateisystems (Voreinstellung).defaults
– Standard-Einstellungen für das Einhängen (äquivalent zu rw,suid,dev,exec,auto,nouser,async).suid
– erlaubt den Betrieb von suid- und sgid-Bits. Sie werden meist verwendet, um Benutzern auf einem Computersystem die Ausführung von Binärdateien mit vorübergehend erhöhten Rechten zu ermöglichen, um eine bestimmte Aufgabe zu erfüllen.nosuid
– blockiert den Betrieb von suid- und sgid-Bits.noatime
– aktualisiert nicht die Inode-Zugriffszeiten auf dem Dateisystem. Kann die Leistung verbessern.relatime
– aktualisiert die Inode-Zugriffszeiten relativ zur Modifizierungs- oder Änderungszeit. Die Zugriffszeit wird nur dann aktualisiert, wenn die vorherige Zugriffszeit vor der aktuellen Änderungs- oder Änderungszeit lag (ähnlich wie noatime, aber es stört nicht mutt oder andere Anwendungen, die wissen müssen, ob eine Datei seit der letzten Änderung gelesen wurde). Kann die Leistung verbessern.
Welche Filesystem-Types gibt es?
Die Datei /etc/fstab
unter Linux unterstützt eine Vielzahl von Dateisystemtypen. Hier sind einige der häufigsten Dateisystemtypen, die in fstab
verwendet werden können:
- Lokale Dateisysteme:
- ext4, ext3, ext2: Extended Filesystems, weit verbreitet und standardmäßig bei vielen Linux-Distributionen.
- btrfs: Ein modernes Copy-on-Write-Dateisystem mit erweiterten Funktionen wie Snapshots und RAID.
- xfs: Ein leistungsstarkes Dateisystem, das gut für große Dateisysteme und hohe Leistungsanforderungen geeignet ist.
- reiserfs: Ein Dateisystem, das für seine Effizienz bei der Handhabung kleiner Dateien bekannt ist.
- jfs: Das Journaled File System, entwickelt von IBM.
- vfat, msdos: FAT-basierte Dateisysteme, die häufig für Wechselmedien und plattformübergreifende Kompatibilität verwendet werden.
- ntfs: Ein Dateisystem von Microsoft, das für die Verwendung mit Windows entwickelt wurde, aber auch unter Linux mit NTFS-3G unterstützt wird.
- zfs: Ein fortschrittliches Dateisystem mit Funktionen wie RAID-Z, Snapshots und Datenkompression.
- Netzwerk-Dateisysteme:
- nfs: Network File System, verwendet für den Zugriff auf Dateien über ein Netzwerk.
- cifs: Common Internet File System, verwendet für die Interoperabilität mit Windows-Dateifreigaben.
- smbfs: Ein älteres Netzwerk-Dateisystem, das ebenfalls für die Interoperabilität mit Windows verwendet wird, aber weitgehend durch CIFS ersetzt wurde.
- sshfs: Ein Dateisystem, das auf dem SSH File Transfer Protocol basiert und den Zugriff auf entfernte Verzeichnisse über SSH ermöglicht.
- Pseudo-Dateisysteme:
- proc: Ein virtuelles Dateisystem, das Kernel- und Prozessinformationen bereitstellt.
- sysfs: Ein virtuelles Dateisystem, das Informationen über Geräte und Treiber im System bereitstellt.
- tmpfs: Ein temporäres Dateisystem, das im RAM gespeichert wird und häufig für temporäre Verzeichnisse wie
/tmp
verwendet wird. - devtmpfs: Ein Dateisystem, das vom Kernel verwendet wird, um Geräteinformationen im
/dev
-Verzeichnis bereitzustellen. - fuse: Dateisysteme, die das Filesystem in Userspace (FUSE) verwenden, z.B.
sshfs
oderencfs
.
Diese Liste ist nicht vollständig, aber sie umfasst die häufigsten Dateisystemtypen, die in der /etc/fstab
-Datei spezifiziert werden können. Jeder dieser Typen wird durch ein entsprechendes Modul im Linux-Kernel unterstützt oder kann durch zusätzliche Software wie FUSE eingebunden werden.
Was macht die dump Option?
Die dump
-Option in der /etc/fstab
-Datei gibt an, ob das Dateisystem durch das dump
-Backup-Programm gesichert werden soll. Es ist der fünfte Eintrag in einer fstab
-Zeile und hat normalerweise zwei mögliche Werte:
0
: Das Dateisystem wird nicht vomdump
-Programm gesichert.1
: Das Dateisystem wird vomdump
-Programm gesichert.
Bei NFS-Shares wird dieser Wert typischerweise auf 0
gesetzt, da NFS-Freigaben in der Regel nicht von lokalen dump
-Backups erfasst werden sollten. Hier ist ein Beispiel für einen fstab
-Eintrag für ein NFS-Share:
192.168.1.2:/volume1/Cybertalk /mnt/Medien nfs defaults 0 0
Der fünfte Wert 0
zeigt an, dass das NFS-Share nicht vom dump
-Programm gesichert wird.
Das dump
-Backup-Programm ist ein traditionelles Unix-Tool zur Sicherung von Dateisystemen auf Blockebene. Es erstellt vollständige und inkrementelle Backups, indem es den Inhalt von Dateisystemen direkt von der Festplatte liest. dump
arbeitet eng mit dem Dateisystem zusammen, um eine genaue und effiziente Kopie der Daten zu erstellen. Die Backups werden üblicherweise auf Bändern, Festplatten oder anderen Speichermedien gespeichert.
Das Programm verwendet Ebenen (Level), um festzulegen, wie umfassend ein Backup ist:
- Level 0: Ein vollständiges Backup des gesamten Dateisystems.
- Level 1-9: Inkrementelle Backups, die nur die Änderungen seit dem letzten Backup einer niedrigeren Ebene enthalten.
Zusammen mit restore
, dem Programm zum Wiederherstellen von dump
-Backups, bietet dump
eine zuverlässige Methode zur Datensicherung und -wiederherstellung in Unix- und Linux-Umgebungen. Es ist jedoch weniger verbreitet als modernere Backup-Lösungen, die oft erweiterte Funktionen und Benutzerfreundlichkeit bieten.
Was macht die Pass Option?
Die pass
-Option in der /etc/fstab
-Datei ist das sechste Feld in jeder Zeile und bestimmt die Reihenfolge, in der Dateisysteme beim Systemstart durch das fsck
-Programm überprüft werden. Die Werte für die pass
-Option haben folgende Bedeutung:
- 0: Das Dateisystem wird beim Systemstart nicht überprüft.
- 1: Das Dateisystem wird zuerst überprüft. Dies gilt normalerweise für das Root-Dateisystem.
- 2: Diese Dateisysteme werden nach den
pass=1
-Dateisystemen überprüft. Mehrere Dateisysteme mit dem Wert 2 werden in der Reihenfolge geprüft, in der sie in derfstab
-Datei aufgeführt sind.
Bei NFS-Freigaben wird die pass
-Option typischerweise auf 0
gesetzt, da Netzwerkdateisysteme nicht durch fsck
überprüft werden müssen. Hier ist ein Beispiel für einen fstab
-Eintrag für ein NFS-Share:
192.168.1.2:/volume1/Cybertalk /mnt/Medien nfs defaults 0 0
Der sechste Wert 0
zeigt an, dass das NFS-Share nicht vom fsck
-Programm überprüft wird.
Was macht fsck?
Das fsck
-Programm (File System Consistency Check) ist ein Dienstprogramm unter Unix- und Linux-Systemen, das zur Überprüfung und Reparatur von Dateisystemen verwendet wird. Es wird normalerweise während des Systemstarts oder manuell vom Systemadministrator ausgeführt, um sicherzustellen, dass Dateisysteme konsistent und frei von Fehlern sind. Hier sind die Hauptfunktionen von fsck
:
- Überprüfung:
fsck
durchsucht das Dateisystem nach Inconsistenzen wie fehlerhaften Blockzuweisungen, verlorenen Inodes und inkorrekten Verzeichnisstrukturen. - Reparatur: Wenn
fsck
Fehler findet, versucht es, diese zu reparieren. Dies kann das Wiederherstellen von verlorenen Dateien, das Entfernen von beschädigten Dateien oder das Korrigieren von Verzeichnisstrukturen umfassen. - Prävention von Datenverlust: Durch die Identifizierung und Behebung von Dateisystemfehlern hilft
fsck
, potenziellen Datenverlust zu verhindern und die Integrität des Dateisystems zu gewährleisten. - Automatisierung beim Systemstart: Wenn ein System unsauber heruntergefahren wurde (z.B. aufgrund eines Stromausfalls), wird
fsck
beim nächsten Start automatisch ausgeführt, um das Dateisystem zu überprüfen und zu reparieren.
In der /etc/fstab
-Datei legt die pass
-Option fest, in welcher Reihenfolge fsck
die Dateisysteme überprüfen soll. Netzwerkmounts wie NFS-Shares sind von dieser Überprüfung in der Regel ausgeschlossen, da fsck
nur lokale Dateisysteme überprüfen und reparieren kann.
Zu beachten ist das in die fstab Datei pro Zeile immer nur ein Eintrag geschrieben wird. Wir Kopieren nun also unseren Eintrag in die Fstab Datei unter den mit # Makierten Kommentar und Speichern die Datei mit: STRG + X -> Save Buffer -> Y -> Enter
192.168.1.2:/volume1/Cybertalk /mnt/Medien nfs defaults 0 0
Im Normalfall reichen die „defaults“ Optionen aus. Werden für bestimmten Anwendungen zusätzliche Optionen benötigt erfährt man dies in der Regel in der entsprechenden Dokumentation.
Auch wenn wir die Datei abgespeichert haben, ist die nfs Freigabe noch nicht eingehängt. Um die fstab manuell auszuführen benötigen wir die beiden befehle:
sudo systemctl daemon-reload
sudo mount -a
Jetzt ist der NFS-Share in dem Proxmox LXC Container eingehängt und Verfügbar.