Auf meinem lokalen Dateiserver habe ich raid-6 auf 7x HDD-Laufwerken.
dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync
Der lokale Geschwindigkeitstest gibt mir eine Schreibgeschwindigkeit von 349 MB / s.
Remote-Schreibvorgänge von SSD nach Samba (> 2 Gbit / s Lesegeschwindigkeit) geben mir 259 MB / s Schreibvorgänge. Durch Remote-Schreibvorgänge auf das iSCSI-Laufwerk (unter Win10 iSCSI-Initiator) werden jedoch nur 151 MBit / s geschrieben.
raid6 config - 128K-Blockgröße, stripe_cache_size = 8191. Die Bitmap mit Schreibabsicht befindet sich auf einer SSD (Samsung 860 PRO, 4096K-Bitmap-Block).
Array mit Optionen montiert: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback
open-iscsi setup: Ziel basiert auf einer 4-TB-Datei.
Gibt es Hinweise, warum iSCSI beim Schreiben langsamer ist als Samba? Gibt es Hinweise zur Verbesserung der Schreibgeschwindigkeit von iSCSI?
Ich gehe davon aus, dass dies etwas mit dem Wunsch von open-iscsi zu tun hat, Schreibvorgänge nach jeder Operation auf die Festplatte zu leeren, was die Schreibverstärkung bei raid6 aufgrund übermäßiger Paritätsumschreibungen erhöht. Aber ich bin nicht sicher, wie ich das beheben soll. Beschleunigen Sie es wichtiger als die Sicherheit der aktuell geschriebenen Daten bei Stromausfall.
Als Randnotiz hatte das ältere ietd iSCSI-Ziel die Möglichkeit, den Rückschreibemodus (unter Verwendung IOMode=wb
) zu aktivieren, und die anhaltende Schreibgeschwindigkeit war viel schneller. Leider scheint es derzeit nicht gewartet zu werden.
quelle
Antworten:
Zunächst ist das RAID-6 aufgrund der Doppelparitätsberechnung das Problem. Zweitens können Sie das iSCSI-Ziel in MS iSCSI Initiator zweimal verbinden, RR oder Least Queue Depth aktivieren (Win10 unterstützt leider kein Multipathing, sodass Sie es stattdessen mit Windows Server testen können).
Tatsächlich muss der Zugriff auf Blockebene schneller sein als der Zugriff auf Dateiebene. Welche Art von Benchmarking-Tool verwenden Sie von der Windows-Site? Ich würde empfehlen, diskspd oder FIO zu verwenden. Darüber hinaus können Sie Starwind als viel schnelleres iSCSI-Ziel verwenden.
https://www.starwindsoftware.com/starwind-virtual-san#Hyper-V
quelle
iSCSI sollte auf Blockebene verwendet werden. Ihre Setup-Beschreibung klingt so, als würden Sie ein Dateisystem verwenden, eine Datei darauf platzieren und diese Datei dann als iSCSI-Blockebene ausführen.
Dies ist alles andere als ideal und definitiv kein Setup für den Vergleich von Geschwindigkeiten. Versuchen Sie, lvm über raid6 zu verwenden, um den Speicherplatz zu segmentieren und auf der Blockebene für iSCSI zu bleiben, oder verwenden Sie raid6 direkt als iSCSI-Gerät.
In Ihrem aktuellen Setup werden Daten über das Netzwerk übertragen und treffen auf eine Datei im Dateisystem, die (höchstwahrscheinlich) nicht für diese Art von Arbeitslast optimiert ist und auch für andere Prozesse freigegeben wird. Es ist möglich, ein solches Setup mit iSCSI durchzuführen, sollte jedoch als nicht optimierte Fallback-Lösung betrachtet werden.
quelle
Bitte beachten Sie, dass dies
dd
ein sehr einfacher Benchmark ist und SEHR anfällig für Verzerrungen ist. Zum Beispieldd
schreiben Sie Nullen - wenn etwas einen Sonderfall für Daten voller Nullen hat (z. B. weil es eine Komprimierung durchführen kann), werden Sie eine fantastische Leistung sehen, aber wechseln Sie zum Schreiben von "echten Daten" ungleich Null, und plötzlich kann diese Leistung verschwinden. ..Um Ihre Frage zu beantworten (wie bei jedem Benchmarking), müssen Sie die Teile wirklich isolieren, um das Bit zu identifizieren, das das Problem einführt. Ist beispielsweise das direkte Schreiben in das Windows-Dateisystem (und nicht über iSCSI) auch extrem schnell? Wenn Sie dieselbe Hardwarekonfiguration verwenden und Linux anstelle von Windows ausführen, ist dies genauso schnell oder verlangsamt es sich? Was passiert, wenn Sie ein Benchmark-Tool wie fio verwenden ?
Leider gibt es zu viele Möglichkeiten, um eine solche Frage gut beantworten zu können ...
quelle