Getrennter Speicher für Daten und System

forellengarten

New Member
Nov 6, 2023
12
0
1
Ich habe auf meinem Lenovo M920q Proxmox (alles EXT4) mit ca. 10 VM's und LXC's am laufen, alles auf der internen NVME SSD. Manches läuft als docker-compose unter Portainer, manches als iso installiert, anderes selbst zusammengestellt,...

Als Datenspeicher habe ich eine externe SSD auf eine OMV-VM durchgereicht. OMV stellt damit einen hausinternen FTP und SMB-Server zur Verfügung. Somit landet alles was Daten sind auf der externen SSD, die auch regelmäßig gebackupt wird. Ich habe ein Clonezilla-Backup des Proxmox-servers mit seinen LXCs und VMs, ausserdem mache ich backups meiner externen Daten-SSD.

Das ist aus meiner Sicht ziemlich Genial, zumal ich die externe Disk auch einfach an ein anderes System hängen könnte um auf die Daten zuzugreifen. Nach wildem herumexperimentieren unter proxmox stelle ich innerhalb weniger Minuten meine interne NVME-SSD wieder her. Das System greift anschließend wieder auf die exter gespeicherten Daten zu und läuft dann als wäre nichts gewesen. Zumindest bin ich bisher der Meinung daß das erstmal ziemlich genial ist (oder etwa nicht?).

Hier stehe ich seit Wochen und ich hänge an einem Kernproblem über das ich einfach nicht hinwegkomme:

das Nebenproblem:
meine SMB-Läuft nur mit 40MByte/sec. Es liegt augenscheinlich an der durchgereichten SSD (USB3.1). Denn: wenn ich anstatt der externen SSD die interne NVME als Datenziel nehme, erreiche ich die volle speed von ca. 115MByte/sec. Bisher habe ich dafür keine Lösung, da es aber grundsätzlich funktioniert steht die Lösungssuche nicht ganz oben auf meiner Liste.

das Hauptproblem:
ich möchte nach Möglichkeit die Systematik, Daten getrennt von System zu speichern, beibehalten. Wie schaffe ich es nun, die externe SSD verschiedenen VMs und LXCs zur Verfügung zu stellen. Dabei möchte ich idealerweise, dass die Daten beim Umstecken der Disk auf ein anderes System lesbar sind und nicht in irgendeiner QEMU versteckt sind. Ich habe dazu einen SMB-share unter OMV erstellt. Jetzt sehe ich 2 Möglichkeiten zur Einbindung in einen LXC oder VM:

Möglichkeit 1: ich installiere in jedem LXC/VM einen SMB-client, mache über FSTAB eine dauerhafte Connection zum Shared folder. Das habe ich noch nicht getestet. Ich denke das würde funktionieren, ist vermutlich super flexibel aber auch mit Aufwand verbunden, weil ich in jedem Container diese Prozedur durchlaufen muss. Kann mir jemand sagen ob das das "richtige" vorgehen wäre. Wäre das der Weg wie man mein Anliegen professionell angehen würde oder bin ich hier auch am Holzweg?

Möglichkeit 2:
Ich binde meinen SMB-share direkt unter Proxmox als Storage ein. Hier scheitere ich aber komplett, weil ich, egal wie ich es drehe, am Schluss immer angeben muss ob ich in dem Speicher ein Disk-Image, Container, VZdump, etc ablegen will. Und all das will ich nicht, ich möchte doch DATEN darin ablegen. Zwar könnte ich meine VM komplett als QEMU dorthin verschieben, aber das will ich auch nicht. Die VM soll auf der internen SSD bleiben, nur die Daten sollen auf die externe SSD. Mittlerweile habe ich alles mögliche hier probiert, ich scheitere immer wieder, weil ich einfach nicht einfach einen Datenspeicher erhalte.

Ich brauche bitte eine Gudeline von jemanden der schlauer ist als ich. Welchen weg geht man hier? Wie ist der Ansatz. Ich möchte ein flexibles System schaffen das sich jederzeit leicht modifizieren lässt. Vermutlich suche ich nach einer Info, wie man auf professionellem Wege das angehen würde. Da gibt es bestimmt strategien. Danke!
 
100% schlau werde ich nicht aus deinem Text, aber du wirst vermutlich nicht um Möglichkeit1 herumkommen.
Wenn du einen Share in einen Hypervisor einbindest, ist der immer dafür da, VM Disks, Backups oder andere Daten FÜR den Hypervisor abzulegen.
VMs sehen niemals den Speicher des Hypervisors. Einzige Ausnahme, LXC Container können die Daten vom Hypervisor eingebunden bakommen, aber dann immer nur ein Container auf einmal. Gleichzeitiger Zugriff geht immer nur mit einem Netzwerdateisystem wie NFS oder SMB.

Zu dem Performanceproblem, wie gibst du denn die Disk an deine VM?
 
100% schlau werde ich nicht aus deinem Text, aber du wirst vermutlich nicht um Möglichkeit1 herumkommen.
Wenn du einen Share in einen Hypervisor einbindest, ist der immer dafür da, VM Disks, Backups oder andere Daten FÜR den Hypervisor abzulegen.
VMs sehen niemals den Speicher des Hypervisors. Einzige Ausnahme, LXC Container können die Daten vom Hypervisor eingebunden bakommen, aber dann immer nur ein Container auf einmal. Gleichzeitiger Zugriff geht immer nur mit einem Netzwerdateisystem wie NFS oder SMB.

Zu dem Performanceproblem, wie gibst du denn die Disk an deine VM?
:mad: dabei habe ich mich so bemüht :), aber egal. Möglichkeit 1 ist also die bevorzugte Option. Danke für den Hinweis, so weiß ich jetzt in welche Richtung ich gehen muss! Danke für "...Wenn du einen Share in einen Hypervisor einbindest, ist der immer dafür da, VM Disks, Backups oder andere Daten FÜR den Hypervisor abzulegen" jetzt dämmert mir wie das funktionert. D.h. selbst wenn ich es irgendwie zum laufen gebracht hätte, es wäre nicht dafür vorgesehen. Danke.

Die USB-SSD ist wie im Bild dargestellt als USB-Device per Vendor-ID eingebunden. Ist wohl nicht die schnellste Variante, aber wie könnte es alternativ funktionieren?
 

Attachments

  • Unbenannt.PNG
    Unbenannt.PNG
    25.1 KB · Views: 5
und zusätzlicher Speicher wird dann üblicherweise bei einem derartigen System via NFS / SMB o.ä. eingebunden, korrekt? Weil, so habe ich es anderswo gelesen, es überlicherweise so gehandhabt wird, dass der Speicher/RAID unabhängig vom Server betrieben bzw. zur Verfügung gestellt wird. Sehe ich das so in etwa richtig?
 
:mad: dabei habe ich mich so bemüht :), aber egal. Möglichkeit 1 ist also die bevorzugte Option. Danke für den Hinweis, so weiß ich jetzt in welche Richtung ich gehen muss! Danke für "...Wenn du einen Share in einen Hypervisor einbindest, ist der immer dafür da, VM Disks, Backups oder andere Daten FÜR den Hypervisor abzulegen" jetzt dämmert mir wie das funktionert. D.h. selbst wenn ich es irgendwie zum laufen gebracht hätte, es wäre nicht dafür vorgesehen. Danke.

Die USB-SSD ist wie im Bild dargestellt als USB-Device per Vendor-ID eingebunden. Ist wohl nicht die schnellste Variante, aber wie könnte es alternativ funktionieren?
Mit Use USB3 hättest du nicht nur USB2 Speed. ;)
 
und zusätzlicher Speicher wird dann üblicherweise bei einem derartigen System via NFS / SMB o.ä. eingebunden, korrekt? Weil, so habe ich es anderswo gelesen, es überlicherweise so gehandhabt wird, dass der Speicher/RAID unabhängig vom Server betrieben bzw. zur Verfügung gestellt wird. Sehe ich das so in etwa richtig?
Jain. Wie immer kommt es da ganz auf die Situation und den Zweck / das Ziel an.
Oft macht interner Speicher Sinn, aber nicht fpür jeden Anwendungsfall.
Am besten beschreibst du dein finales Ziel was du erreichen willst und dann bekommst du Tips wie man dahin kommt.
 
  • Like
Reactions: forellengarten
Am besten beschreibst du dein finales Ziel was du erreichen willst und dann bekommst du Tips wie man dahin kommt.
Ich möchte:
- Proxmox mit seinen Containern auf der internen SSD
- Daten auf externer Disk
- Die Datenmengen werden exponentiell mehr. Daher ist eines der Hauptanliegen, dass Speicherplatz mit relativ wenig Aufwand (=Fachwissen) auch erweitert/hinzugefügt werden kann. Wenn das soweit funktioniert soll nämlich auch unter anderem Nextcloud installiert werden und die Daten auf die externe Festplatte schieben. Handys im Heimnetz sollen so die Daten (Fotos) auf den Server schieben
- Allgemeines zu meinem Server: läuft 24/7, stellt für den gesamten Haushalt Netzwerkspeicher zur Verfügung, zieht Backups von anderen Systemen und legt sie auf der externen Daten-Disk ab usw....
 
Ich möchte:
- Proxmox mit seinen Containern auf der internen SSD
Gute Idee, falls zwei Disks vorhanden sind, macht man auch gern RAID1.
- Daten auf externer Disk
- Die Datenmengen werden exponentiell mehr. Daher ist eines der Hauptanliegen, dass Speicherplatz mit relativ wenig Aufwand (=Fachwissen) auch erweitert/hinzugefügt werden kann. Wenn das soweit funktioniert soll nämlich auch unter anderem Nextcloud installiert werden und die Daten auf die externe Festplatte schieben. Handys im Heimnetz sollen so die Daten (Fotos) auf den Server schieben
Gerade wenn du erweitern willst, warum externe Disk? Ich finde, damit machst du es eher kompliziert und langsamer.
Wenn du mal als Beispiel mit einem ZFS Pool intern anfängst, kannst du in den Pool jderzeit Disks hinzufügen. Solange dein Gehäuse noch Platten aufnehmen kann und das Board Anschlüsse hat, ist das extrem Flexibel.
Eine Externe Disk musst du ja bei Erweiterung austauschen und alle Daten verschieben. Finde ich nicht so charmant.
Du kannst natürlich auch eine externe Diskerweiterung anbauen, da gibts welche mit Raid Controller wo du einfach erweiterst, oder du reichst die Disks an den PVE und machst es da wieder mit Software Boardmitteln.
- Allgemeines zu meinem Server: läuft 24/7, stellt für den gesamten Haushalt Netzwerkspeicher zur Verfügung, zieht Backups von anderen Systemen und legt sie auf der externen Daten-Disk ab usw....
Gerade bei 24/7 würde ich keine externen Disks verwenden. Die sind in der Regel nicht für 24/7 gedacht und du hast wieder extra Komponenten am laufen, was Anschlüsse belegt und mehr Strom zieht.
 
  • Like
Reactions: forellengarten
Gute Idee, falls zwei Disks vorhanden sind, macht man auch gern RAID1.

Gerade wenn du erweitern willst, warum externe Disk? Ich finde, damit machst du es eher kompliziert und langsamer.
Wenn du mal als Beispiel mit einem ZFS Pool intern anfängst, kannst du in den Pool jderzeit Disks hinzufügen. Solange dein Gehäuse noch Platten aufnehmen kann und das Board Anschlüsse hat, ist das extrem Flexibel.
Eine Externe Disk musst du ja bei Erweiterung austauschen und alle Daten verschieben. Finde ich nicht so charmant.
Du kannst natürlich auch eine externe Diskerweiterung anbauen, da gibts welche mit Raid Controller wo du einfach erweiterst, oder du reichst die Disks an den PVE und machst es da wieder mit Software Boardmitteln.

Gerade bei 24/7 würde ich keine externen Disks verwenden. Die sind in der Regel nicht für 24/7 gedacht und du hast wieder extra Komponenten am laufen, was Anschlüsse belegt und mehr Strom zieht.
Falk, alle deine Gedanken sind für mich völlig logisch und nachvollziehbar. Ich möchte dir danken dass du dir die Zeit nimmst darauf einzugehen! Beruflich habe ich nur als Anwender mit IT zu tun, und für den kleinen Server daheim habe ich tausend Ideen und bräuchte 5 Angestellte um diese umzusetzen. Vieles ist nicht optimal (wie du richtigerweise in deinem Reply schreibst), ausgehend vom kleinen Raspberry wachsen die Projekte und da gibt es immer einen Teil der hinterherhinkt :). Vielleicht ist genau diese Erkenntnis Ursache für das streben nach einem flexiblen System. Danke für deine wertvollen Inputs!
 
Das tatsächlich verwendete USB-Protokoll kanns du dir mit dem Befehl: lsusb -vvv |grep -i -B5 -A5 bcdUSB ansehen.

Code:
--

Bus 002 Device 002: ID 1058:25a3 Western Digital Technologies, Inc. Elements Desktop (WDBWLG)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.10
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         9
  idVendor           0x1058 Western Digital Technologies, Inc.
--
Also in meinem Fall USB-3.1
 
Last edited:
  • Like
Reactions: forellengarten
das würde dann so aussehen:

Bus 002 Device 002: ID 152d:0583 JMicron Technology Corp. / JMicron USA Technology Corp. JMS583Gen 2 to PCIe Gen3x2 Bridge
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.20
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x152d JMicron Technology Corp. / JMicron USA Technology Corp.
can't get debug descriptor: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
 
Das ist aber vermutlich nicht deine USB-Platte. Da musst du vermutlich etwas nach oben scrollen.
 
Doch, das müsste schon die Platte sein. Die angezeigte ID stimmt ja zusammen mit der ID die ich an die VM übergebe (siehe Anhang). Im CLI der VM sieht die Ausgabe übrigens so aus:

Bus 003 Device 002: ID 152d:0583 JMicron Technology Corp. / JMicron USA Technolo gy Corp. JMS583Gen 2 to PCIe Gen3x2 Bridge
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.20
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x152d JMicron Technology Corp. / JMicron USA Technology Co rp.
can't get debug descriptor: Resource temporarily unavailable
 

Attachments

  • Unbenannt.PNG
    Unbenannt.PNG
    6.2 KB · Views: 3
Falk, alle deine Gedanken sind für mich völlig logisch und nachvollziehbar. Ich möchte dir danken dass du dir die Zeit nimmst darauf einzugehen! Beruflich habe ich nur als Anwender mit IT zu tun, und für den kleinen Server daheim habe ich tausend Ideen und bräuchte 5 Angestellte um diese umzusetzen. Vieles ist nicht optimal (wie du richtigerweise in deinem Reply schreibst), ausgehend vom kleinen Raspberry wachsen die Projekte und da gibt es immer einen Teil der hinterherhinkt :). Vielleicht ist genau diese Erkenntnis Ursache für das streben nach einem flexiblen System. Danke für deine wertvollen Inputs!
EIgentlich ist das gar nicht so schwer. Was mir selbst am Anfang mit Proxmox schwer gefallen ist, sich von altem gelernten Wissen zu verabschieden und die "neue" Denke in den Kopf zu bekommen.
Du hast jetzt ein relativ komplexes Konzept mit der externen Disk. Da muss man viel mehr beachten, als bei einer einfachen internen Disk.
Aber wenn du das so behalten willst, geht das natürlich auch.
 
  • Like
Reactions: forellengarten
getrennte partition
Du hast jetzt ein relativ komplexes Konzept mit der externen Disk...
OK, da hast du wohl recht. Und zudem ist es langsam.

Wie könnte denn eine Lösung aussehen wenn die Datendisk intern verbaut wird? Angenommen ich habe mehrere LXCs oder VMs die Daten produzieren. Mach ich dann eine Partition für jede dieser VMs und reiche die durch (glaube dass das nicht funktioniert)?
 
Du kannst eine interne Disk mit LVM-Thin, ZFS oder einem beliebigen Dateisystem bespielen und die Wird dann als Datastore angelegt.
Beim erstellen einer VM sagst du nur auf welchem Datastore die Disk liegen soll, der Rest geht automatisch.
Ich würde in deinem Fall zu LVM-Thin greifen. Das gibt die beste Performance und du bist recht flexibel, weil thin Provisioning aktiv ist.
Wenn eine virtuelle Disk mal zu klein wird, kann man die auch jederzeit im laufenden Betrieb vergrößern.
 
ok, damit ist aber der Wunsch Daten und System zu trennen dahin, richtig? Bei der von dir genannten Vorgehensweise liegt dann die komplette VM, einschließlich der produzierten Daten, auf der zugewiesenen Disk. Das ist genau der Punkt an dem ich mich immer wieder im Kreis drehe. Oder ist es ohnehin nicht erstrebenswert diese Trennung durchzuführen? Zumindest meine ich es wäre einfacher, regelmäßig einfach ein Backup der gesamten Datendisk zu machen anstatt des gesamten Systems. Zudem sehe ich hier den Nachteil, dass die Daten nur lesbar sind, solange das System auch läuft, die diese ja in einem .RAW oder QEMU liegen....
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!