Proxmox VE 6.x und OpenMediaVault 5.x

Damit ich meinen Server möglichst flexibel einsetzen kann, habe ich Proxmox VE 6.x auf dem System installiert. Hauptsächlich soll der Server aber als zentraler Dateiserver bzw. als NAS genutzt werden. Daher sollte in einem der von Proxmox bereitgestellten Container oder VMs ein openmediavaul (OMV) installiert werden. Außerdem soll als Dateisystem ZFS zum Einsatz kommen.

Leider ist eine Installation von OMV in einem LXC-Container nicht so ohne weiteres möglich bzw. der Einsatz von OMV im Container ist nicht vorgesehen. Daher wird in der Regel empfohlen, OMV in einer KVM-Maschine zu installieren - natürlich mit einem entsprechend höheren Ressourcenbedarf.  Außerdem unterstützt OMV in Version 5.x Out-of-the-Box das ZFS-Dateisystem nicht direkt. Für ZFS-Unterstützung muss daher auf ein Community-Plugin zurückgegriffen werden, was bei der Aktualisierung bei mir in der Vergangenheit schon zu Problemen beim Update geführt hat, wenn ZFS-Modul und Kernel nicht zusammenpassen und daher das ZFS-Modul nicht aktualisiert werden kann. Das hatte dann auch gerne zur Folge, dass ich auf die ZFS-Freigaben nicht mehr zugreifen konnte.

Die ZFS-Verwaltung soll daher von Proxmox übernommen werden. Hier ist die Unterstützung direkt im Proxmox-Kernel und ist damit hoffentlich etwas weniger fehleranfällig und leichter zu aktualisieren. Über das Dateisystem 9pfs und VirtIO können dann die ZFS-Dateisysteme in OMV bereitgestellt werden.  

OMV Installation

Zunächst muss in Proxmox eine virtuelle Maschine angelegt werden. Ich habe dabei folgende Parameter benutzt:

Parameter für die openmediavault-VM

Nachdem das Installations-ISO von OMV heruntergeladen wurde, kann es in Proxmox in einen ISO-Storage-Bereich hochgeladen werden. Dazu muss auf den Proxmox-Knoten der entsprechende Speicher (z.B. local) der Menüpunkt ISO Images > Upload ausgewählt werden:

Upload des OMV ISO-Image

In den Eigenschaften der virtuellen Maschine wird unter dem Menüpunkt Hardware > CD/DVD Drive > Edit > Use CD/DVD disc image file (iso) das gerade hochgeladene Image für die neue VM bereitgestellt:

ISO-Image einbinden

Wird jetzt die virtuelle Maschine eingeschaltet so sollte der Setup-Prozess für OMV automatisch starten. Die Installation kann  dann wie auf openmediavault.org beschrieben durchgeführt werden.

OMV Plugin sharerootfs installieren

In der Standard-Installation von OMV können keine Dateifreigaben auf dem Root-Dateisystem erzeugt werden. Daher kann der VM entweder eine zweite Festplatte in Proxmox hinzugefügt werden, die dann später zum Mounten der ZFS-Dateisysteme verwendet wird. Einfacher ist es aber, wenn das Plugin sharerootfs installiert wird:

OMV-Plugin sharerootfs installieren

ZFS-Dateisysteme auf dem Host bereitstellen

Auf dem Host muss jetzt ein ZFS-Dateisystem erstellt werden, wenn es nicht schon existier. Dabei sollte folgende Optionen für das Dateisystem gesetzt werden:  

OptionWertBeschreibung
mountpoint/export/omv/9pshareÜber diese Option wird der absolute Pfad angegeben an dem das Dateisystem gemounted werden soll
acltypeposixaclMit dem Wert wird die Speicherung erweiterter POSIX ACLs aktiviert, die von OMV verwendet werden.
xattrsaHiermit werden die ACLs direkt an den inode gehangen, so dass die Performance beim Dateizugriff verbessert wird.
aclinheritpassthroughDer Wert passthrough legt fest, dass alle ACLs ohne Änderungen an neue Objekte im Verzeichnis vererbt. 

Mit dem folgenden Kommando wird ein entsprechendes ZFS-Dateisystem auf einem bereits existierenden ZFS-Pool dpool erstellt:

mkdir /export/omv
zfs create -o mountpoint=/export/omv/9pshare -o acltype=posixacl -o xattr=sa -o aclinherit=passthrough dpool/9pshare

Damit wird das ZFS-Dateisystem erzeugt und direkt gemounted.

Im Verzeichnis /etc/pve/qemu-server/ speichert Proxmox VE die Konfigurationsdateien der virtuellen Maschinen. In der Konfigurationsdatei für die das OMV-System wird mit der folgende Zeile  gerade erzeugte ZFS-Dateisystem für eine VM bereitgestellt:

args: -virtfs local,path=/export/omv/9pshare,mount_tag=9pshare,security_model=passthrough,id=fs0

Dabei müssen folgende Parameter ggf. angepasst werden:

ParameterBeschreibung
pathMountpoint des ZFS-Dateisystems
mount_tagEine eindeutige Referenz, die in der VM genutzt wird um den Share einzubinden.
idEine eindeutige ID, die intern für die Bereitstellung des Devices verwendet wird. 

Hinweis: Eine vollständige Beschreibung der 9pfs-Parameter ist im QEMU Wiki zu dokumentiert.

Wichtig: Sollen mehrere unterschiedliche ZFS-Dateisysteme in der VM bereitgestellt werden, so muss für jedes Dateisystem ein eigenen virtfs-Eintrag im Konfigurationsabschnitt args eingetragen werden. Dabei ist darauf zu achten, dass eindeutige Werte für die Parameter mount_tag und id verwendet werden.

Dateisystem in OMV-Guest einbinden

In der openmediavault-VM wird das am Host bereitgestellte ZFS-Dateisystem mit folgendem Eintrag in der Datei /etc/fstab eingebunden

9pshare   /storage/9pshare   9p trans=virtio,version=9p2000.L,nobootwait,rw,msize=524288,user_xattr,posixacl,_netdev 0 0

Der Eintrag 9pshare ist dabei der in der VM-Konfiguration verwendete mount_tag. Außerdem sollte der Parameter msize nicht zu klein gewählt werden, da es ansonsten zu einer langsamen Dateiübertragung kommen kann. Inder Regel wird ein Wert von 262144 empfohlen.

Bevor das Dateisystem eingebunden werden kann, muss sichergestellt werden dass der Mountpoint (hier im Beispiel /storage/9pshare) existiert. Am einfachsten wird dazu über die OMV-Weboberfläche unter Access Rights Management > Shared Folders > Add ein neuer Share angelegt:

Shared Folder in OMV erstellen

Danach kann mit dem Kommando mount -a das ZFS-Dateisystem in OMV eingebunden werden. Der angelegte Shared Folder sollte nun wie gewohnt in OMV verwendet werden können - also z.B. um einen entsprechenden SMB-Share anzulegen. 

Performance überprüfen

Wird beim Mounten des #dateisystems in der VM ein zu kleiner msize-Parameter verwendet, so kann dies zu einem vergleichsweise langsamen Schreib-/Lesezugriff führen. Am besten sollte daher nach erfolgreicher Einbindung die Performance überprüft werden. Dazu muss auf der VM lediglich in das Mount-Verzeichnis (im Beispiel /storage/9pshare) gewechselt und folgende Kommandos ausgeführt werden:

# Überprüfung der Schreibgeschwindigkeit
dd if=/dev/zero of=test.dat bs=1G count=12

# Überprüfung der Lesegeschwindigkeit
dd if=test.dat of=/dev/null bs=1G count=12
  
# Löschen der Testdatei
rm test.dat

Um einschätzen zu können wie viel Bandbreite durch die Einbindung via 9pshare verloren geht, können die Kommandos anschließend auch im ZFS-Dateisystem 9pshare auf dem Host nochmal ausgeführt werden. 

Auf meinem ZFS-RAIDZ1 mit drei 4TB-Festplatten habe ich folgende Werte für Schreib-/Lesegeschwindigkeiten ermittelt:

 SchreibgeschwindigkeitLesegeschwindigkeit
Proxmox Host1,8 GB/s4,8 GB/s
OMV Guest1,3 GB/s2,0 GB/s

Sollten die Werte nicht den Erwartungen entsprechend, so kann der msize Parameter angepasst werden. Wenn das nicht hilft, so sollte ggf. auch die Ressourcen der VM beim Speed-Test überprüft werden. Bei mir hat es geholfen den Arbeitsspeicher zu erhöhen und einen weiteren Prozessorkern zuzuordnen.

Quellen

[1] https://www.proxmox.com/de/proxmox-ve 
[2] https://www.openmediavault.org/ 
[3] https://wiki.qemu.org/Documentation/9psetup 

Kommentare

PostadresseE-MailadresseFestnetzMobiltelefonSMS/SignalThreemaTwitter DirektnachrichtFAXWeb Page