Software Raid auf Host oder in VM ?

So, ich hab mal etwas getestet...

Als Test Raid 5x 2TB WD Red Festplatten an einem SAS3 HBA im Host.
Auf dem Server läuft eine Win11 Test vm, von der aus via Netzlaufwerk auf diese
Festplatte zugegriffen wird. Eine knapp 10GB Große Datei speichere ich vom Win PC
auf das Netzlaufwerk.

1. Test, durchreichen aller 5 Laufwerke an die openmediafault vm
Innerhalb der vm md Software Raid5 als Datenspeicher
Unbenannt-1.jpg

2. Test md Software Raid5 auf dem Host und das md Device als Festplatte an die
openmediafault vm durchgereicht

Hier ist das Bild quasi identisch, ABER mit mehr als 100MB/s weniger Datendurchsatz....
Also nach Cache etc, ca 240MB/s im Schnitt

Krass, hätte ich so nicht gedacht...

Aber, leider hat sich mein Verdacht mehr als bestätigt....
Der Host erstellt immer wieder automatisch das md device.
Heißt, host UND vm erstellen das selbe md device.
Das ist natürlich misst....

Ich würde gerne die Variante nutzen, in der alle Disks in die VM durchgereicht werden.
Dann müssen diese Festplatten (und das Software Raid) aber auf dem Host gesperrt sein.
Die Frage ist, wie man das umsetzen kann.
Ich dachte bisher eigentlich, dass, wenn ich eine Festplatte an die vm Übergebe, ist sie für den Host tabu.
Aber sie ist noch genauso verfügbar. Auch smartctl wird wohl zugriff auf die Festplatte haben, obwohl sie
in der vm aktiv ist.

Kenn jemand denn Mechanismen, wie man das auf dem Host effektiv sperren/blocken kann ?

Bzgl. Raid mit homehost, das hatte noch keinen passenden Erfolg.
Ich hatte das md Device auf dem Host gestoppt, bevor ich die vm (mit durchgereichten Platten)
gestartet habe. Ergebnis, in der vm wurde das md erstellt/aktiviert UND auf dem Host war es auch wieder aktiv....

Ich würde mich über ein paar Ideen freuen.

Grüße,
MrWeb
 
lösche mal alle Partitionen deiner Test HDDs mit wipefs -a /dev/diskX und zusätzlich mit dd if=/dev/zero of=/dev/diskX bs=1M count= 2048 status=progress
Ich denke da sind noch Reste übrig geblieben.
Des weiteren beende den mdadm Dienst auf dem Proxmox VE Host.
 
Hi news,
das verstehe ich gerade nicht so ganz. was meinst du mit Reste ?

Auf den Disks ist ein raid 5 mdadm array. Das soll ja auch drauf bleiben.
Es soll nur auf dem host nicht automatisch (bzw. eben gar nicht) gestartet/aktiviert werden.
Sobald auf den Platten, auch wenn ich diese jetzt wipe und das raid5 array neu erstelle, ein mdadm raid
drauf ist, wird das debian host os das sehen und das raid starten. (ebenso dann innerhalb der vm).
Ich muss den host irgendwie dazu bringen, das mdraid nicht zu starten, dauerhaft und sicher.
 
Normalerweise ist mdadm auch kein Bestandteil der pve Installation mehr und wenn du ansonsten auf dem Host kein md raid verwendest, kannst du mdadm auch deinstallieren, was definitiv dazu führt, daß der Host das Array nicht starten kann.
 
Doch, brauche ich schon, aber ich muss zumindest separieren können oder bestimmte Raids raus nehmen können...
 
Bzgl. Raid mit homehost, das hatte noch keinen passenden Erfolg.
Ich hatte das md Device auf dem Host gestoppt, bevor ich die vm (mit durchgereichten Platten)
gestartet habe. Ergebnis, in der vm wurde das md erstellt/aktiviert UND auf dem Host war es auch wieder aktiv....
Und deine "vm" ist auch eine echte VM und kein LXC, oder ?
 
Wenn du noch einen PCI-E Slot frei hast, kannst du extra für den Zweck einen weiteren HBA in die VM reinreichen. Wie man die PCI-ID dann für den Host verbirgt, weiß ich, aber meist braucht es das nicht...für die kurze Zeit, bis die VM dann oben ist.
Aber wahrscheinlich hilft auch das nicht mit dem mdraid.
 
Hallo mr44er, das würde schon helfen. Wenn via HBA die Platten dann ja NUR noch in der vm sichtbar sind, weiß der Host nichts davon und kann auch nicht darauf zugreifen. Hilft mir aber nicht, alle Slots sind belegt.... HBA, 4fach GPU und im Rest sitzen NVMe's ...

Bei Debian wird da wohl einiges bzgl mdadm via udev Regeln gemacht, vlt kann ich da was ändern.
Wie macht ihr denn das alle ? Mal unabhängig vom mdadm... Nutzt ihr auch in den VM's dann nur zfs oder... ?
Aber auch dann, sind die /dev/sdx devices ja im Host, ich sag jetzt mal aktiv.
Bspw. der Smart Status im Proxmox ist für alle Festplatten gegeben, auch für die, die eigentlich in einer vm durchgereicht sind.
Da sollte der Host eigentlich ja gar nichts mehr mit den Platten machen. Hm.
 
Wie macht ihr denn das alle ?
Ich hab eine vanilla FreeBSD-VM, in die reiche ich einen HBA komplett rein und damit auch alle Platten, die daran hängen.
Ja, das ist auch ZFS und der pool wird nur in der VM automatisch importiert. Die gesamte Verwaltung darauf mache ich in dieser VM, so auch SMART.

Proxmox sieht zwar den HBA und die Platten, wenn die VM aus ist, aber sie sind verschlüsselt. Proxmox könnte sie gar nicht lesen. Wenn du das unverschlüsselt machst, könnte Proxmox zwar den Pool importieren, aber ZFS importiert nicht automatisch den pool, wenn es eine andere Maschine ist, die den Pool zuletzt importiert hatte. Will man es doch, müsste man das manuell erst forcieren.

Wenn die VM gestartet ist, ist der HBA vom Host weg und die Platten dann ebenfalls.
 
Last edited:
Ok, verstehe. Dann muss aber die Hardware halt erstmal zur Verfügung stehen.
Für eine VM einen kompletten X8 Slot zu 'opfern' ist schon recht viel...
Ein X8 Slot, könnte zwei NVMe's voll anbinden...
Ich werde noch ein wenig testen, da gibt es wohl einige echt schlecht dokumentierte Option für die mdadm.conf.
Mein Problem an sich ist, die Platten/SSD's sitzen in einer 24fach Backplane, die via 2xSAS3 am HBA angebunden ist.
Da auf der Backplane ein Expander ist, kann ich da nichts trennen. Im alten (jetzigen) Gehäuse mit SAS2 Backplane,
sind alle Schächte quasi enzeln auf SFF8047 Buchsen geführt. Da hätte man das trennen können.

Auf jeden fall danke für eure Antworten.