Tiras Posted April 16, 2021 Posted April 16, 2021 Hallo Zusammen, ich möchte mich an dieser Stelle bzgl. ZFS einklinken und ein Problem mit meiner aktuellen unRAID Konfiguration schildern. Aktuelles System: Mainboard: Gigabyte x570 Gaming X CPU: Ryzen 5 2600 RAM: DDR4 3200 64GB Hard Disks: 2 x 4 TB WD NAS RED (HDD), 1 x 6 TB WD NAS RED (HDD), 1 x 2 TB Toshiba (HDD), 1 x 240 GB SanDisk (SSD), NVMe´s: 2 x 1 TB Samsung Evo 970 Plus, 1 x 500 GB Samsung Evo 970 Plus, 1 x 125 GB SanDisk QNAP Extention TR-004: 4 x 5 TB WD Red (HDD) RAID 5 Mein Ziel: Ich möchte gerne diverse Windows VMs auf den 1 TB NVMe´s am Besten im "Spiegel" auslagern. Für Medien, Backups etc. habe ich mir die 2 x 4 TB ebenfalls im "Spiegel" vorgestellt. Die 125 GB NVMe und die 240 GB SSD möchte ich einer Gaming VM durchschalten. Die 500 GB NVMe habe ich als "Cache" geplant. In meiner kostenlosen Testphase habe ich festgestellt, dass dieses Vorhaben so nicht umsetzbar ist. Nachdem ich das Array mit der 6 TB als Parität und den genannten Festplatten als Disks erstellt habe, musste ich feststellen, dass die Übertragungsgeschwindigkeit der NVMe´s (bis zu 3700 MBit/s R/W) auf die Übertragungsgeschwindigkeit der HDDs (bis zu 154 MBit/s) begrenzt wird, ob die NVMe´s jeweils über PCIe installiert sind. Nun bin ich vergangene Tage auf ZFS gestoßen und habe dementsprechend meine unRAID Konfiguration so angepasst, dass die 6 TB als Parität weiterhin dient und die 2 x 4 TB und die 2 TB als Disks dienen. Für die 2 x 4TB Platten habe ich ein Pool mit der 240GB SSD als Cache erstellt. Wenn ich nun Daten auf dieses Pool verschiebe, dann habe ich dank der Übertragungsrate der SSD eine Netzwerkübertragung von ~ 100 MB/s, aber wenn die Daten von dem Cache-Pool auf das eigentliche Pool verschoben werden, dann liegt die Übertragungsgeschwindigkeit maximal bei ~ 23MB/s, da die HDD(s) des Pools R/W ausführen, um auch auf die Parität zu schreiben. Für die Virtualisierungen habe ich ein ZFS-Pool mit beiden 1 TB NVMe´s im "Mirror" erstellt und dort die vdisks der VMs ausgelagert. Die 500 GB sowie die 125 GB NVMe´s sind testweise nur als "unassigned Device" gemounted. Bei einer Datenübertragung zwischen den NVMe´s (egal welcher) erreiche ich trotzdem nur eine maximale Übertragungsrate von 176 MB/s. Wie bereits weiter oben schon erwähnt, sind die NVMe´s als PCIe eingebunden. Die 500GB über den M.2 PCIe Slot und die 2 x 1 TB über die QNAP Card als PCIe x16. Hinzu kommt, dass bei einer Datenübertragung zwischen den NVMe´s und dem ZFS-Pool mein Arbeitsspeicher von 3% auf 56% steigt. Ich habe gelesen, dass ZFS ARC standardmäßig 50% des gesamten RAMs allokiert, aber man das mit entsprechenden Optionen in einer /zfs.conf angepassen kann, was für mich wichtig ist, da viele VMs (5 Windows Server 2016, Gaming VM, Workstation) ausgeführt werden. Da es mir leider nicht gelungen ist, das QNAP OS auf dem System mit allen Disks zu installieren, bin ich wieder zu unRAID als Plus Member zurück gekehrt, nachdem ich wie gesagt das mit ZFS gelesen habe. Endlich zu meiner Frage: Habt ihr vielleicht einen Vorschlag, wie ich die Leistung meines Arrays, die des ZFS´s und die Auslastung meines RAMs optimal konfigurieren kann? Die Daten der Pools werden redundant auf der QNAP Extention gespeichert. unRaid war Aufgrund des Pass Through´s der GPU an eine VM interessant, aber aufgrund der aktuellen Leistung bedauere ich, Geld für das Plus Paket ausgegeben zu haben. Von daher bin ich für jede Hilfe und jeden Vorschlag zur Verbesserung dankbar und danke euch vorab für Eure Zeit. Viele Grüße Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 50 minutes ago, Tiras said: aber wenn die Daten von dem Cache-Pool auf das eigentliche Pool verschoben werden, dann liegt die Übertragungsgeschwindigkeit maximal bei ~ 23MB/s, da die HDD(s) des Pools R/W ausführen, um auch auf die Parität zu schreiben. Das ist viel zu wenig. Kann es sein, dass eine der HDDs SMR nutzt? Falls ja: Ab in den Müll damit ^^ 52 minutes ago, Tiras said: In meiner kostenlosen Testphase habe ich festgestellt, dass dieses Vorhaben so nicht umsetzbar ist. Nachdem ich das Array mit der 6 TB als Parität und den genannten Festplatten als Disks erstellt habe, musste ich feststellen, dass die Übertragungsgeschwindigkeit der NVMe´s (bis zu 3700 MBit/s R/W) auf die Übertragungsgeschwindigkeit der HDDs (bis zu 154 MBit/s) begrenzt wird, ob die NVMe´s jeweils über PCIe installiert sind. Wenn du sie ins Array einbindest, ist das auch völlig logisch. Du musst neben dem Cache Pool noch einen weiteren Pool hinzufügen. Den nennst du zB "vm", bildest ihn als BTRFS RAID1, erstellst darauf einen Share mit der Cache Option "Only" und legst dort deine VM-Disks ab. Jetzt hast du ein vom Array unabhängiges RAID ohne Flaschenhals (wenn man von der virtuellen Disk absieht). ZFS brauchst du also gar nicht. Alternative: Du lässt die beiden NVMe aus dem Array und Pool raus und weist jeder VM eine physisch zu. Dann fällt auch der Flaschenhals des virtuellen Disk-Treibers weg. Hat aber den Nachteil, dass man nur eine VM pro NVMe nutzen kann. Backups müsste man dann im Betriebsystem selbst erstellen. Also wie bei einem normalen Client auch. Es gibt sogar einen Trick mit dem man so eine NVMe in Unraid öffnen kann, wenn die VM aus ist: 1 Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 31 minutes ago, mgutt said: Wenn du sie ins Array einbindest, ist das auch völlig logisch. Du musst neben dem Cache Pool noch einen weiteren Pool hinzufügen. Den nennst du zB "vm", bildest ihn als BTRFS RAID1, erstellst darauf einen Share mit der Cache Option "Only" und legst dort deine VM-Disks ab. Jetzt hast du ein vom Array unabhängiges RAID ohne Flaschenhals (wenn man von der virtuellen Disk absieht). ZFS brauchst du also gar nicht. Hallo mgutt, vielen Dank für die schnelle Antwort und deinen Tipp. Ich habe das gerade einmal mit der 500 GB NVMe und der 128GB NVMe getestet und bin dort bei 578MB/s gelandet (ist richtig so). Meine Frage hierzu: 1. Wenn ich meine 2 x 4 TB genauso konfiguriere, aber nicht als BTRFS (RAID1) sondern als XFS, wäre es dann ein RAID 0 und somit auch performanter? 2. Alle Pools/Shares sind unter /mnt/... zu finden? Vielen Dank für deine Hilfe. Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 28 minutes ago, Tiras said: 1. Wenn ich meine 2 x 4 TB genauso konfiguriere, aber nicht als BTRFS (RAID1) sondern als XFS, wäre es dann ein RAID 0 und somit auch performanter? XFS ist nicht möglich bei einem RAID Pool (meine ich jedenfalls). Mal davon abgesehen hättest du ja keine Ausfallsicherheit. Warum solltest du das also machen? 29 minutes ago, Tiras said: 2. Alle Pools/Shares sind unter /mnt/... zu finden? Alles ist unter /mnt zu finden. Es gibt aber verschiedene "Summen": /mnt/cache/sharename zeigt nur die Dateien, die sich aktuell auf dem Pool mit dem Namen "cache" befinden /mnt/disk1/sharename zeigt nur die Dateien, die sich aktuell auf Disk1 des Arrays befinden. /mnt/user/sharename zeigt die Summe aus /mnt/cache/sharename und /mnt/disk1/sharename Der direkte Pfad zu einer Disk oder einem Pool bietet die beste Performance. Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 13 minutes ago, mgutt said: XFS ist nicht möglich bei einem RAID Pool (meine ich jedenfalls). Mal davon abgesehen hättest du ja keine Ausfallsicherheit. Warum solltest du das also machen? Alles ist unter /mnt zu finden. Es gibt aber verschiedene "Summen": /mnt/cache/sharename zeigt nur die Dateien, die sich aktuell auf dem Pool mit dem Namen "cache" befinden /mnt/disk1/sharename zeigt nur die Dateien, die sich aktuell auf Disk1 des Arrays befinden. /mnt/user/sharename zeigt die Summe aus /mnt/cache/sharename und /mnt/disk1/sharename Der direkte Pfad zu einer Disk oder einem Pool bietet die beste Performance. BTRFS ist, wenn ich es richtig verstanden habe gleich einem RAID 1. Ich brauche jedoch einen großen Pool für Datenbanken, Backups oder Medien. Aus diesem Grund habe ich den Pool/Share mit den 2 x 4TB und der 240GB SSD als Cache erstellt. Ich habe nach deinem Tipp mit dem Pool außerhalb des Arrays spekuliert, dass 2 Disks als XFS dann gleich einem RAID 0 wäre! Jedoch könnte ich, um die volle Leistung der 2 x 4 TB zu erhalten und auch einen großen Speicherpool habe deinen Tipp auch hierfür - jedoch nicht als BTRFS - umsetzen. Da ich mich an einem Script probieren möchte, dass die Daten via Schedul auf die TR-004 kopiert, wenn ein Ordner/File nicht vorhanden- oder unterschiedlich ist, wäre hier Ausfallsicherheit nicht wirklich notwendig. Wenn ich einen Pool "vm" mit beiden NVMe´s und ein Share als "Only" erstellen würde, der Pfad /mnt/user/Sharename richtig, damit die beste Performance habe!? Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 24 minutes ago, Tiras said: BTRFS ist, wenn ich es richtig verstanden habe gleich einem RAID 1 Nein, du kannst jedes RAID Level wählen. RAID0, 1, 5, 6, 10... BTRFS erlaubt sogar ein RAID1 über mehr als 2 Disks (dreifache, vierfache etc Spiegelung). 24 minutes ago, Tiras said: Wenn ich einen Pool "vm" mit beiden NVMe´s und ein Share als "Only" erstellen würde, der Pfad /mnt/user/Sharename richtig, damit die beste Performance habe!? Cache auf "Only", aber der Pfad für die beste Performance wäre /mnt/NameDesPools/Sharename. "/mnt/user" durchläuft immer zusätzliche Prozesse, egal welche Cache-Einstellung man gewählt hat. Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 49 minutes ago, mgutt said: Nein, du kannst jedes RAID Level wählen. RAID0, 1, 5, 10... Ah ok. Ich habe leider noch nicht herausgefunden wie.... In den einzelnen Disk habe ich bisher als File Systems xfs oder btrfs ausgewählt. Wie kann ich dann entscheiden, welches RAID Level ich nutzen möchte? Entscheidet das System das selbst anhand der hinzugefügten Disks im Pool und dem ausgewählten File System? Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 (edited) Ich habe jetzt noch ein paar Tests gemacht. 1. Alle NVMe´s als "unassigned Devices" konfiguriert und gemounted. Das Array wie beschrieben beibehalten. 1.1 35GB transfer von 1 TB -> 1 TB NVMe mit einer Übertragungsrate von 154MB/s (absolutes no-go, weil bis zu 3700 MBit/s im read/write für die NVMe) 2. Pool und Share für jede NVMe erstellt. Array ebenfalls beibehalten. 2.1 35GB transfer von 500GB -> 1 TB mit einer Übertragungsrate von 343MB/s (ebenfalls nicht akzeptable). 3. Windows 10 installiert und ein transfer von 500 -> 1 TB mit 1,97 GB/s gemacht. Hast du eine Idee wie die niedrige Übertragungsrate zustande kommt? Ich könnte mir vorstellen, dass die NVMe´s trotzdem auf das R/W der Disks im Array gedrosselt werden. Edited April 16, 2021 by Tiras Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 5 minutes ago, Tiras said: 1.1 35GB transfer von 1 TB -> 1 TB NVMe mit einer Übertragungsrate von 154MB/s Laut Anzeige oder wie gemessen? Wie kopiert? UD zeigt meiner Ansicht nach ziemlichen Blödsinn an, was die Übertragungsraten anbelangt. Ein dd von NVME 1 auf 2 würde denke ich realistischere Werte anzeigen. Willst du ein Kommando haben? 6 minutes ago, Tiras said: 2.1 35GB transfer von 500GB -> 1 TB mit einer Übertragungsrate von 343MB/s (ebenfalls nicht akzeptable). Womit wurde kopiert? Sicher, dass nicht /mnt/user im Spiel war? 7 minutes ago, Tiras said: Ich könnte mir vorstellen, dass die NVMe´s trotzdem auf das R/W der Disks im Array gedrosselt werden. Nein, läuft davon unabhängig. Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 Sorry für die Frage, aber was meinst du mit dd? Ich habe die "unassigned Devices" NVMe´s gemountet. Ich gehe also davon aus, dass es sich dabei um /mnt/disks/Samsung_SSD_970_EVO_Plus_500GB_S4EVNF0M420811X handelt. Mit einem Notebook habe ich dann Zugriff auf die Festplatten. In 2 unterschiedlichen Windows Explorer Fenster schiebe ich die 35GB Datei von NVMe 1 nach NVMe 2. Ich habe in den SMB extra configuration folgendes hinzugefügt: [NVMe500] path=/mnt/disks/Samsung_SSD_970_EVO_Plus_500GB_S4EVNF0M420811X browseable=yes quest ok=yes writeable=yes read only=no create mask= 0775 directory mask = 0775 [NVMe1TB1] path=/mnt/disks/Samsung_SSD_970_EVO_Plus_1TB_S4EWNF0M528071M browseable=yes quest ok=yes writeable=yes read only=no create mask= 0775 directory mask = 0775 [NVMe1TB2] path=/mnt/disks/Samsung_SSD_970_EVO_Plus_1TB_S4EWNF0M720873W browseable=yes quest ok=yes writeable=yes read only=no create mask= 0775 directory mask = 0775 Das hat jedoch auch nichts gebracht. Aus irgendeinem Grund läuft hier etwas gewaltig schief... Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 (edited) Hier mal ein Screenshot: Edited April 16, 2021 by Tiras Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 WebTerminal und htop ausführen. Dann kopieren. Kann es sein, dass smb auf Anschlag läuft? Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 Hier ein Screenshot deines Befehls. Hat es eine Auswirkung auf die Disks, wenn die Paritätsplatte nicht komplett mit den Disks im Array synchronisiert ist? Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 (edited) Ich habe jetzt mal einen Datentransfer mit Krusader gemacht. BIOS ist auf AHCI und UEFI konfiguriert. Ich erinnere mich aber, dass ich vor einigen Tagen, bevor ich die NVMe´s mit ZFS konfiguriert habe eine Datenübertragung von 1,97 GB/s hatte, als sie noch als "unassigned Device" waren. Was mich auch wundert ist, dass bei meinem ersten Screenshot die GUI von unRAID bei der 2. NVMe ein Write von 731 MB/s anzeigt, aber im Windows nur 123 MB/s Edited April 16, 2021 by Tiras Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 14 minutes ago, Tiras said: Hier ein Screenshot deines Befehls Du musst das checken, wenn der Transfer läuft 1 minute ago, Tiras said: Ich habe jetzt mal einen Datentransfer mit Krusader gemacht. Auch während dem Transfer wäre die Prozessliste von htop Interessant. Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 3 minutes ago, Tiras said: bevor ich die NVMe´s mit ZFS konfiguriert habe Waren die da zufällig noch XFS formatiert? Wobei NTFS nicht so heftige Auswirkungen haben sollte. Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 1 minute ago, mgutt said: Waren die da zufällig noch XFS formatiert? Wobei NTFS nicht so heftige Auswirkungen haben sollte. Gleiches Übertragungsrate im xfs als auch ntfs als Pool/Share oder unassigned device. Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 Nun habe ich nur noch 32 MiB/s. Das ist eindeutig zu wenig für NVMe auf PCIe Ebene. Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 32 minutes ago, Tiras said: Gleiches Übertragungsrate im xfs als auch ntfs als Pool/Share oder unassigned device. Das glaube ich nicht. Schau mal in htop. Der NTFS mount Prozess lastet einen Kern komplett aus. So eine Auslastung gibt es nicht bei XFS/BTRFS. NTFS ist ja kein natives Linux Dateisystem. Ich wusste aber auch nicht, dass das so heftig ist. Was für eine CPU hast du? Wirkt was schwach. Quote
hawihoney Posted April 16, 2021 Posted April 16, 2021 1 hour ago, Tiras said: Nun habe ich nur noch 32 MiB/s Kopierst Du etwa über das Netzwerk von einer Server Platte auf eine andere? Da spielt dann auch das Netzwerk und der Klient eine Rolle. Was genau steckt hinter /media? Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 20 minutes ago, hawihoney said: Da spielt dann auch das Netzwerk und der Klient eine Rolle. Bei SMB eigentlich nicht, aber ich weiß nicht ob Server-Side Copy bei UD bzw NTFS funktioniert. Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 1 hour ago, mgutt said: Das glaube ich nicht. Schau mal in htop. Der NTFS mount Prozess lastet einen Kern komplett aus. So eine Auslastung gibt es nicht bei XFS/BTRFS. NTFS ist ja kein natives Linux Dateisystem. Ich wusste aber auch nicht, dass das so heftig ist. Was für eine CPU hast du? Wirkt was schwach. Ok, dann bin ich mir ehrlich gesagt nicht mehr sicher, welches FS ich mit der richtigen Übertragungsrate hatte, sorry. Ich habe eine Ryzen 5 2600 CPU verbaut, aber wie gesagt vorher nie Probleme mit der Übertragungsrate zwischen den NVMe´s gehabt. 31 minutes ago, hawihoney said: Kopierst Du etwa über das Netzwerk von einer Server Platte auf eine andere? Da spielt dann auch das Netzwerk und der Klient eine Rolle. Was genau steckt hinter /media? Die Platten sind auf meinem Laptop als Netzlaufwerk eingebunden. In 2 Windows Explorer Fenster kopiere ich die Daten hin- und her. Das der Transfer über den Laptop geht kann ich ausschließen, da keine Netzwerkaktivität im Task Manager des Laptops zu sehen ist. Was genau meinst du, was hinter /media steckt? Gerade noch einmal ein Test gemacht, aber diesmal zwischen den Samsung Evo 970 Plus, da sie gleich sind. Mich wundert wie gesagt, dass die NVMe 1 ein Read von 133,1 MB/s aber die NVMe 2 ein Write von 451 MB/s hat. Ich würde die NVMe´s mal als XFS formatieren und dann noch einmal ein Test machen. Ich kann mir zwar nicht vorstellen, dass es daran liegt, aber es muss ja einen Grund geben, wieso die Disks nur auf +- 10% laufen. Quote
mgutt Posted April 16, 2021 Posted April 16, 2021 Wie gesagt. 80% Last auf einem Kern ist heftig. Du siehst auch, dass es nur einen Prozess pro NVMe gibt. Daher kann deine CPU auch nicht die volle Multi Core Leistung entfalten. 7 minutes ago, Tiras said: Ryzen 5 2600 CPU Mit 2258 Single Threads Punkten schon stark: https://www.cpubenchmark.net/cpu.php?cpu=AMD+Ryzen+5+2600&id=3243 Kann man mal sehen wie ineffizient NTFS in Linux ist. Gut zu wissen ^^ Quote
Tiras Posted April 16, 2021 Author Posted April 16, 2021 3 minutes ago, mgutt said: Wie gesagt. 80% Last auf einem Kern ist heftig. Du siehst auch, dass es nur einen Prozess pro NVMe gibt. Daher kann deine CPU auch nicht die volle Multi Core Leistung entfalten. Mit 2258 Single Threads Punkten schon stark: https://www.cpubenchmark.net/cpu.php?cpu=AMD+Ryzen+5+2600&id=3243 Kann man mal sehen wie ineffizient NTFS in Linux ist. Gut zu wissen ^^ Kannst du mir vielleicht kurz sagen, woran du erkennst - abgesehen von den Prozessen, dass nur 1 Kern 80% ausgelastet ist? In der oberen Grafik scheint für mich, dass alle Kerne ausgelastet werden. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.