Was ist der Befehl, der dazu führt, dass die SSD-Festplatte einen Lesefehler (LBA-Fehler) zurückgibt?

1

Momentan muss ich einen automatisierten erstellen, um zu testen, wie das System mit LBA-Fehlern umgeht. Gibt es irgendeinen Befehl über irgendeinen Weg, der die SSD-Festplatte dazu bringt, einen Lesefehler zurückzugeben? Gemäß NVMe-Protokoll - 6.15 Nicht korrigierbaren Befehl schreiben Es sollte einen solchen Befehl geben.

Rimski
quelle

Antworten:

0

nvme-write-uncorKommando ist drinnvme-cli

nvme-write-uncor - Send an NVMe write uncorrectable command, return results

Nach dem NVMe-Protokoll:

When the specified logical block(s) are read after this operation, a failure
is returned with Unrecovered Read Error status.

Um einen Lesefehler zu erhalten, müssen Sie zuvor beschädigte Blöcke lesen.

Projektseite: https://github.com/linux-nvme/nvme-cli

konradmb
quelle
Die Parameter des Befehls sind [--start-block = <slba> | -s <slba>] [--block-count = <nlb> | -c <nlb>] [--namespace-id = <nsid> | -n <nsid>] . Wie kann ich sie extrahieren? Und sind sie optional? weil ich immer einen NVME IO-Befehlsfehler erhalte: INVALID_FIELD (2) Fehler. Ich finde keine Beispiele. Danke für Hilfe.
Rimski
Sind Sie sicher, dass Sie ein /dev/nvme*Gerät verwenden?
Konradmb
Ja, ich will. Ich habe andere Befehle wie error-log ausprobiert und sie haben funktioniert.
Rimski
Ich habe noch nie NVMe verwendet, aber in der Spezifikation heißt es, dass sich auf der Festplatte ein so genannter Namespace befindet . Hier ist ein Auszug aus Punkt 6.1: [...]specifying an inactive namespace ID in a command that uses the namespace ID shall cause the controller to abort the command with status Invalid Field in Command. Sieht so aus, als wäre das dein Fehler. Versuchen Sie, nvme-list-nsmit eine Liste der Namespace-IDs abzurufen, und geben Sie sie mit -nto an nvme-write-uncor. ODER verwenden Sie das /dev/nvme0n*Gerät, da dies anscheinend eine andere Möglichkeit ist, auf einen Namespace zuzugreifen.
Konradmb
0

Ich war mit nvme völlig neu. Nvme-cli ist also eine Schnittstelle, die von Anbietern von Hardtreibern unterstützt werden soll. In einigen Modulen funktionieren die Befehle jedoch nicht. Also nicht aufgeben! Versuchen Sie es mit einem anderen Hardtreiber.

nvme write-uncor /dev/nvme2n1 -s 0 -c 5 -n 1

Das Gerät es und -c ist klar (überprüfen Sie die Hilfe) bun die -n , Namespace-ID wird in dem Gerätenamen, nvme2 gegeben n1 bedeutet , dass -n ist 1 .

Rimski
quelle