From 2c71478a2eee913aab8581d9d299d402239a2996 Mon Sep 17 00:00:00 2001 From: Thomas Kuschel Date: Sun, 11 Feb 2024 17:22:47 +0100 Subject: [PATCH] UPD NVMe --- documentation/linux_configuration.pdf | 4 +- .../linux_configuration_15_device_drivers.tex | 152 +++++++++++++++++- 2 files changed, 153 insertions(+), 3 deletions(-) diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index 64c7bff..c5eb32a 100644 --- a/documentation/linux_configuration.pdf +++ b/documentation/linux_configuration.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0dfc0d0cc84a496f621244f8fb66225d8b80cf238503630a89c9d2b1681a688c -size 1003328 +oid sha256:7022db5e14d89f8ac8f763ea1b08231b72c2a15ac0af50aa116942050f2944fc +size 1014521 diff --git a/documentation/linux_configuration_15_device_drivers.tex b/documentation/linux_configuration_15_device_drivers.tex index ba7cc22..9531223 100644 --- a/documentation/linux_configuration_15_device_drivers.tex +++ b/documentation/linux_configuration_15_device_drivers.tex @@ -2105,6 +2105,156 @@ ein Blockgerät über Objekte streift, die im verteilten Objektspeicher von Ceph gespeichert sind. Weitere Informationen finden Sie unter \url{http://ceph.newdream.net/}. Wenn Sie unsicher sind, sagen Sie N. -% + +\subsubsection{Userspace block driver (Experimental)} +CONFIG\_BLK\_DEV\_UBLK [=m] \textbf{[M]}\\* +\texttt{io\_uring}-basierter Userspace-Blocktreiber. Zusammen mit dem ublk-Server hat ublk gut funktioniert, +aber die Schnittstelle mit dem Userspace oder die Definition der Befehlsdaten ist noch nicht abgeschlossen und +könnte sich entsprechend den zukünftigen Anforderungen ändern, daher ist die Markierung jetzt experimentell. + +Sagen Sie Y, wenn Sie eine bessere Leistung erhalten wollen, weil task\_work\_add() im IO"=Pfad verwendet werden +kann, um io\_uring cmd zu ersetzen, das zwischen IO"=Tasks und ubq"=Daemon geteilt wird, in der Zwischenzeit +kann task\_work\_add() Batch effektiver handhaben, aber task\_work\_add() wird nicht für Module exportiert, +also muss ublk in den Kernel eingebaut werden. + +\paragraph{Support legacy command opcode}$~$\\ +CONFIG\_BLKDEV\_UBLK\_LEGACY\_OPCODES [=y] \textbf{[Y]}\\* +ublk-Treiber begonnen, einfache Befehlskodierung zu verwenden, was sich als ein schlechter Weg herausstellt. +Der traditionelle ioctl"=Befehls"=Opcode kodiert mehr Informationen und definiert im Grunde jeden Code eindeutig, +so dass Opcode"=Konflikte vermieden werden und der Treiber falsche Befehle leicht behandeln kann, währenddessen +kann es dem Sicherheitssubsystem helfen, io\_uring-Befehle zu überprüfen. +Sagen Sie Y, wenn Ihre Anwendung immer noch den Opcode des alten Befehls verwendet. Sagen Sie N, wenn Sie den +Legacy"=Befehlsopcode nicht unterstützen wollen. Es wird empfohlen, N zu aktivieren, wenn Ihre Anwendung +(ublk server) auf ioctl command encoding umschaltet. + +\subsubsection{RDMA Network Block Device driver client} +CONFIG\_BLK\_DEV\_RNBD\_CLIENT [=m] \textbf{[M]}\\* +Der RNBD-Client ist ein Netzwerkblock"=Gerätetreiber, der den RDMA"=Transport verwendet. Der RNBD"=Client +ermöglicht das Mapping eines entfernten Blockgeräts über das RTRS"=Protokoll von einem Zielsystem aus, +auf dem der RNBD"=Server läuft. +Wenn Sie unsicher sind, sagen Sie N. + +\subsubsection{RDMA Network Block Device driver server} +CONFIG\_BLK\_DEV\_RNBD\_SERVER [=m] \textbf{[M]}\\* +RNBD-Server ist die Serverseite von RNBD unter Verwendung von RDMA"=Transport. Der RNBD-Server ermöglicht +den Export lokaler Blockgeräte an einen entfernten Client über das RTRS"=Protokoll. +Wenn Sie unsicher sind, sagen Sie N. + +\subsection{NVME Support \texorpdfstring{$\rightarrow$}{->}} +\textit{(NVME-Unterstützung, Nonvolatile Memory Express, nicht-flüchtiger Speicher-Schnellzugriff)} + +\subsubsection{NVM Express block device} +CONFIG\_BLK\_DEV\_NVME [=m] \textbf{[M]}\\* +Der NVM Express"=Treiber ist für Solid State Drives gedacht, die direkt an den PCI- oder PCI Express"=Bus +angeschlossen sind. Wenn Sie wissen, dass Sie keines dieser Laufwerke besitzen, können Sie mit N antworten. +Um diesen Treiber als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{nvme} heißen. + +\subsubsection{NVMe multipath support} +CONFIG\_NVME\_MULTIPATH [=m] \textbf{[M]}\\* +Diese Option aktiviert die Unterstützung für den Multipath"=Zugriff auf NVMe"=Subsysteme. +Wenn diese Option aktiviert ist, wird nur ein einziges Gerät für jeden NVMe"=Namensraum angezeigt, auch +wenn es über mehrere Controller zugänglich ist. + +\subsubsection{NVMe verbose error reporting} +CONFIG\_NVME\_VERBOSE\_ERRORS [=y] \textbf{[Y]}\\* +Diese Option aktiviert die ausführliche Berichterstattung für NVMe-Fehler. Die Fehlerübersetzungstabelle +erhöht die Größe des Kernel"=Images um etwa $\qty{4}{\kilo\byte}$. + +\subsubsection{NVMe hardware monitoring} +CONFIG\_NVME\_HWMON [=y] \textbf{[Y]}\\* +Dies bietet Unterstützung für die NVMe"=Hardwareüberwachung. Wenn sie aktiviert ist, wird für jedes NVMe"=Laufwerk +im System ein Hardwareüberwachungsgerät erstellt. + +\subsubsection{NVM Express over Fabrics RDMA host driver} +CONFIG\_NVME\_RDMA [=m] \textbf{[M]}\\* +Dies bietet Unterstützung für das NVMe-over-Fabrics"=Protokoll unter Verwendung des RDMA"=Transports +(Infiniband, RoCE, iWarp). Dies ermöglicht die Verwendung von Remote"=Blockgeräten, die mit dem +\mbox{NVMe}"=Protokollsatz exportiert werden. Zur Konfiguration eines NVMe-over"=Fabrics"=Controllers verwenden +Sie das Tool \texttt{nvme-cli} von \url{https://github.com/linux-nvme/nvme-cli}. +Wenn Sie unsicher sind, sagen Sie N. + +\subsubsection{NVM Express over Fabrics FC host driver} +CONFIG\_NVME\_FC [=m] \textbf{[M]}\\* +Dies bietet Unterstützung für das NVMe-over"=Fabrics"=Protokoll unter Verwendung des FC"=Transports. +Dadurch können Sie entfernte Blockgeräte verwenden, die mit dem NVMe"=Protokollsatz exportiert werden. +Um einen NVMe over Fabrics"=Controller zu konfigurieren, verwenden Sie das Tool nvme"=cli +von \url{https://github.com/linux-nvme/nvme-cli}. +Wenn Sie unsicher sind, sagen Sie N. + +\subsubsection{NVM Express over Fabrics TCP host driver} +CONFIG\_NVME\_TCP [=m] \textbf{[M]}\\* +Dies bietet Unterstützung für das NVMe-over"=Fabrics"=Protokoll unter Verwendung des TCP"=Transports. +Dadurch können Sie Remote"=Blockgeräte verwenden, die mit dem NVMe"=Protokollsatz exportiert werden. +Um einen NVMe over Fabrics"=Controller zu konfigurieren, verwenden Sie das Tool nvme-cli +von \url{https://github.com/linux-nvme/nvme-cli}. +Wenn Sie unsicher sind, sagen Sie N. + +%15.16.7.1 +\paragraph{NVMe over Fabrics TCP TLS encryption support} +CONFIG\_NVME\_TCP\_TLS [=y] \textbf{[Y]}\\* +Aktiviert die TLS-Verschlüsselung für NVMe"=TCP unter Verwendung der Netlink Handshake API. +Der TLS"=Handshake"=Daemon ist unter \url{https://github.com/oracle/ktls-utils} zu finden. +Wenn Sie unsicher sind, sagen Sie N. + +\subsubsection{NVMe over Fabrics In-Band Authentication in host side} +CONFIG\_NVME\_HOST\_AUTH [=y] \textbf{[Y]}\\* +Dies bietet Unterstützung für NVMe over Fabrics In-Band"=Authentifizierung auf der Host"=Seite. +Wenn Sie unsicher sind, sagen Sie N. + +\subsubsection{NVMe Target support} +CONFIG\_NVME\_TARGET [=m] \textbf{[M]}\\* +Dies ermöglichte die zielseitige Unterstützung des NVMe"=Protokolls, d.~h. es erlaubt dem Linux"=Kernel, +NVMe"=Subsysteme und -Controller zu implementieren und Linux"=Blockgeräte als NVMe"=Namensräume zu exportieren. +Sie müssen mindestens einen der folgenden Transporte auswählen, um diese Funktion nutzen zu können. +Zur Konfiguration des NVMe"=Ziels möchten Sie wahrscheinlich das Tool \texttt{nvmetcli} +von \url{http://git.infradead.org/users/hch/nvmetcli.git} verwenden. + +\paragraph{NVMe Target Passthrough support}$~$\\ +CONFIG\_NVME\_TARGET\_PASSTHRU [=y] \textbf{[Y]}\\* +Dies ermöglicht die Unterstützung von zielseitigen NVMe"=Passthru"=Controllern für das +NVMe"=Over"=Fabrics"=Protokoll. Es ermöglicht Hosts die Verwaltung und den direkten Zugriff auf +einen tatsächlichen NVMe"=Controller auf der Zielseite, einschließlich der Ausführung von Vendor Unique Commands. +Wenn Sie unsicher sind, sagen Sie N. + +\paragraph{NVMe loopback device support}$~$\\ +CONFIG\_NVME\_TARGET\_LOOP [=m] \textbf{[M]}\\* +Damit wird die Unterstützung für NVMe"=Loopback"=Geräte aktiviert, die für das Testen von +NVMe"=Funktionen auf der Host- und Zielseite nützlich sein können. +Wenn Sie unsicher sind, sagen Sie N. + +\paragraph{NVMe over Fabrics RDMA target support}$~$\\ +CONFIG\_NVME\_TARGET\_RDMA [=m] \textbf{[M]}\\* +Dies aktiviert die NVMe-RDMA"=Zielunterstützung, die den Export von NVMe"=Geräten über RDMA ermöglicht. +Wenn Sie unsicher sind, sagen Sie N. + +\paragraph{NVMe over Fabrics FC target driver}$~$\\ +CONFIG\_NVME\_TARGET\_FC [=m] \textbf{[M]}\\* +Dadurch wird die Unterstützung für NVMe-FC"=Ziele aktiviert, was den Export von NVMe"=Geräten +über FC ermöglicht. +Wenn Sie unsicher sind, sagen Sie N. + +\subparagraph{NVMe over Fabrics FC Transport Loopback Test driver}$~$\\ +CONFIG\_NVME\_TARGET\_FCLOOP [=m] \textbf{[M]}\\* +Dies ermöglicht die Unterstützung des NVMe-FC"=Loopback"=Tests, der für den Test von +NVMe-FC"=Transportschnittstellen nützlich sein kann. +Wenn Sie unsicher sind, sagen Sie N. + +\paragraph{NVMe over Fabrics TCP target support}$~$\\ +CONFIG\_NVME\_TARGET\_TCP [=m] \textbf{[M]}\\* +Dies aktiviert die NVMe-TCP"=Zielunterstützung, die den Export von NVMe"=Geräten +über TCP er"-mög"-licht. +Wenn Sie unsicher sind, sagen Sie N. + +\subparagraph{NVMe over Fabrics TCP target TLS encryption support}$~$\\ +CONFIG\_NVME\_TARGET\_TCP\_TLS [=y] \textbf{[Y]}\\* +Aktiviert die TLS"=Verschlüsselung für das NVMe-TCP"=Ziel unter Verwendung der Netlink Handshake API. +Der TLS"=Handshake"=Daemon ist unter \url{https://github.com/oracle/ktls-utils} verfügbar. +Wenn Sie unsicher sind, sagen Sie N. + +\paragraph{NVMe over Fabrics In-band Authentication in target side}$~$\\ +CONFIG\_NVME\_TARGET\_AUTH [=y] \textbf{[Y]}\\* +Dies ermöglicht die Unterstützung von NVMe over Fabrics In-Band"=Authentifizierung auf der Zielseite. +Wenn Sie unsicher sind, sagen Sie N. + %% \texorpdfstring{$\rightarrow$}{->} %% \textit{Für diese Option gibt es keine Hilfe.} \ No newline at end of file