StorNVMe.sys nur ein Wrapper für SCSI?

qiller

Commodore
Registriert
Nov. 2022
Beiträge
4.678
Hu zusammen,

ich packs mal hier rein, auch wenn die Meldung eher Windows Server 2025 betrifft. Ich bin eben über diese Meldung bei Deskmodder gestolpert. Da rühmt sich MS jetzt nativen NVMe Support zu bieten. Heißt das jetzt im Umkehrschluss, dass der StorNVMe.sys Treiber, den sicherlich auch viele Windows Desktops mit NVMe SSDs nutzen, einfach nur eine Art Wrapper für SCSI ist? Kann das wer erklären, warum man als OS-Hersteller sowas macht? Oder gehts hier noch um was anderes, was ich hier übersehe?
 
Keine Ahnung, aber würde mich jetzt auch mal interessieren.
 
qiller schrieb:
einfach nur eine Art Wrapper für SCSI ist?
Microsoft schreibt dazu:
https://learn.microsoft.com/de-de/windows-hardware/drivers/storage/stornvme-scsi-translation-support

qiller schrieb:
Kann das wer erklären, warum man als OS-Hersteller sowas macht?
Na üblicherweise schreibt man Wrapper, damit die Systembestandteile die das nutzen nicht umständlich angepasst werden müssen. So können die einfach SCSI sprechen ohne sich darum kümmern zu müssen, ob da wirklich ein SCSI-Device hintersteckt oder was anderes.

In anderen Betriebssystemen hat man teilweise Ähnliches.
Also die Bezeichnungen für Disk-Laufwerke im Device-Tree wie /dev/sdX
Die sd-Driver beziehen sich auch sowohl auf SCSI als auch auf S-ATA als auch auf SAS.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: qiller und kieleich
Der Grund dürfte klar sein, Kompatibilität. Allerdings überrascht mich das auch. Ich habe aber auch nie drüber nachgedacht, dass der NVMe-Support womöglich nicht nativ sein könnte.
 
  • Gefällt mir
Reaktionen: qiller
Am Ende des Tages ists halt immer noch Windows. Da darf man jetzt kein durchoptimierten Code erwarten. :-)

Man muss dazu sagen, das man mit jeder Änderung auch potentiell neue Bugs einschleppt. Und Microsoft schafft ja jetzt schon nicht annähernd ihre Bugs abzuarbeiten. Völlig klar, das die dann solche Änderungen vorsichtigerweise nur mit großer Verzögerung und einführen.

Frech ist es natürlich trotzdem, sich dafür zu feiern das im Jahre 2025 endlich mal zu haben. In meinen Augen macht sich da Microsoft komplett lächerlich.
Aber was weiß ich schon. Die haben gut bezahlte Marketing-Strategen. Was die sich da alles raffiniertes überlegt haben, da kann so ein kleines Licht wie ich gar nicht mitreden. :-)
 
  • Gefällt mir
Reaktionen: qiller
  • Gefällt mir
Reaktionen: qiller
@andy_m4 warum frech?
Microsoft liefert Basistreiber. Wenn die Hersteller keinen richtigen Treiber für eine native Anbindung liefern, ist das nicht Sache von MS. Wenn MS es doch macht, können sie sich auch feiern lassen.
 
kommdieter schrieb:
Nagel mich jetzt nicht auf das frech fest. Ich hab ja mehr dazu geschrieben, um halt klar zu machen, was ich meine.

kommdieter schrieb:
Wenn die Hersteller keinen richtigen Treiber für eine native Anbindung liefern, ist das nicht Sache von MS.
Naja. Linux hat es ja auch kriegs ja auch hin. Die hatten m.W. nach schon 2012 einen NVMe-Treiber drin. Nu könnte man denken: Ja gut. Dieses Linux ist ja auch ein großes Ding und die kriegen ja auch viel Zuwendung von der Industrie. Aber selbst marktanteilskleinere Systeme wie z.B. OpenBSD haben schon seit 2016 einen NVMe-Treiber.
Und wenn dann ein Millarden-Konzern wie Microsoft dann fast 10 Jahre später stolz verkündet, das sie jetzt auch endlich native NVMe sprechen können, dann sieht das halt nicht gut aus.

Und dann finde ich es auch albern sich mit "ja die Hersteller liefern nicht" zu kommen. Weil das ist ja der Vorteil bei solchen Schnittstellenstandards. Das man da gar nicht auf einen geräte-spezifischen Treiber angewiesen ist. Hast Du übrigens bei anderen Geräten auch. Oder musstest Du schon mal einen Treiber installieren, wenn Du einen USB-Stick angeschlossen hast?

Die Hersteller liefern manchmal trotzdem noch ein Treiber mit für irgendwelche speziellen Anpassungen oder besonderen Funktionen, aber für einen normalen Betrieb braucht es den nicht.

kommdieter schrieb:
Wenn MS es doch macht, können sie sich auch feiern lassen.
Können sie ja von mir aus machen. Müssen dann halt auch mit dem Spott leben.

Wie bereits von angedeutet: Kann ja von mir aus auch valide Gründe geben den nicht früher eingeführt zu haben. Und jetzt hat man das eben mal erledigt. Alles gut.
Aber sich dafür feiern lassen ist einfach übertrieben. Das ist ein bisschen so, als wenn ein Autohersteller sagen würde: Schaut her, unser Modell hat jetzt ABS serienmäßig drin! 🍾
 
Zuletzt bearbeitet:
Du widersprichst dich selbst.
USB = Standardtreiber, da muss nichts Spezielles sein.
SSD / NVMe ist auch ein Standardtreiber für den normalen Betrieb.

..Die Hersteller liefern manchmal trotzdem noch ein Treiber mit für irgendwelche speziellen Anpassungen oder besonderen Funktionen..

Eben und wenn die es nicht machen, um das Beste herauszuholen, macht MS es eben.
Traurig genug, dass die Hersteller es nicht selbst können.
 
kommdieter schrieb:
Du widersprichst dich selbst.
Wie Du meinst.

kommdieter schrieb:
..Die Hersteller liefern manchmal trotzdem noch ein Treiber mit für irgendwelche speziellen Anpassungen oder besonderen Funktionen..
Ich weiß gar nicht, wie die Lage da bei NVMe ist. Das war jetzt eher in Richtung Vermutung wie man vielleicht noch irgendwie die Notwendigkeit eines eigenen Treibers rechtfertigen könnte.

Ist aber letztlich auch egal, weil in dem Fall hilft ja auch der Wrapper nicht weiter.

kommdieter schrieb:
Traurig genug, dass die Hersteller es nicht selbst können.
Selbst wenn wir all das mal annehmen würden:
Auch das begründet nicht, warum Microsoft nicht in der Lage war früher einen generischen nativen NVMe Treiber mitzuliefern.
Vor hätten nicht mal von Grund auf einen Treiber entwickeln müssen. Schon 2013 gabs einen Open-Source-Treiber von der Open Fabrics Alliance.

Und wie gesagt: Deutlich kleinere Projekte haben es auch hinbekommen.
Die deutlich weniger Geld und deutlich weniger Manpower.
 
qiller schrieb:
Heißt das jetzt im Umkehrschluss, dass der StorNVMe.sys Treiber, den sicherlich auch viele Windows Desktops mit NVMe SSDs nutzen, einfach nur eine Art Wrapper für SCSI ist?

im Windows 10 Treiber sehe ich etliche SCSI Befehle ScsiToNVME, ScsiModeSelectRequest, ScsiStartStopUninitRequest, ScsiReadCapacityRequest etc.

Das sieht man auch im Callstack:

1765906890955.png

Ergänzung ()

also bei 25H2 ist viel mehr Code im Treiber. Da sind nun wirklich die ganzen Funktionen als native Nvme Befehle und halt die alten noch als Kompatibilität drin für Leute die das Flag nicht setzen.

Teste einfach mal beides und vergleiche es und schau mal wie die Performance so ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: qiller
Hab nur Proxmox virtualisierte Windows Server 2025 VM Instanzen unter meine Fittiche, da bringt das sicherlich nix. Letztendlich bringt das ja nur was für physische Windows Server 2025 Maschinen, die NVMe Storage ohne irgendwelche Hardware-RAID-Controller- oder (wie bei Intel) Volume Management Device-/RST-Geschichten verwenden.
 
IDontWantAName schrieb:
selbe Dateiversion zw Client und Server
Ja, grad mal geprüft, die Dateien sind identisch. Ich hab hier zu hause sogar Win 11 25H2 am Start und auch 2 NVMe SSDs. Müsste man mal prüfen ob das was bringt^^. Hab nur dieses diskspd.exe, was MS da erwähnt, noch nie benutzt.
 
Ich hatte es heute Nachmittag schon in einem WIn11 25H2 getestet. Updates auf dem aktuellen Stand, den notwendigen Reg-Key gesetzt (EDIT: und Windows-Neustart durchgeführt). Ich konnte mit CDM keinen Unterschied sehen.

Und wenn ich nach dem Gerätemanager gehe, scheint das wohl weiterhin unter SCSI zu laufen?

Der NVMe-Controller:
1765917407396.png

Oder das Laufwerk selber:
1765917493532.png 1765917714580.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: qiller
Jup, hat sich nix getan.

vor Setzen des RegKeysnach Setzen des RegKeys+Reboot
970Pro
NMVe Data, default profile
CDMark_nvme-data_default_970pro.png
CDMark_nvme-data_default_970pro.png
980Pro
NMVe Data, default profile
CDMark_nvme-data_default_980pro.png
CDMark_nvme-data_default_980pro.png
970Pro
NMVe Data, PeakPerf+Mix profile
CDMark_nvme-data_peak_perf_mix_970pro.png
CDMark_nvme-data_peak_perf_mix_970pro.png
980Pro
NMVe Data, PeakPerf+Mix profile
CDMark_nvme-data_peak_perf_mix_980pro.png
CDMark_nvme-data_peak_perf_mix_980pro.png
 
Zuletzt bearbeitet:
also Abfragen nach Server/Client sehe ich auf den ersten Blick nicht, nur vile Abragen ob Features aktiviert sind. Der Windows Code ist wirklich mittlerweile so voll von Flag Abfragen, kA ob das sich selber verhaspelt.
 
@h00bi
sgX ist das generic SCSI device. Man kann/konnte an SCSI-Ports ja nicht nur "disks" anschließen sondern auch Bandlaufwerke oder auch Scanner. Dafür wird das sgX device genutzt. SAS Platten werden/wurden immer über sdX bedient
 
  • Gefällt mir
Reaktionen: qiller
Zurück
Oben