Schaden Distributionsinstaller SSDs?

Schaden Distributionsinstaller SSDs?

Laut Intelist es wichtig, dass beim Erstellen eines Linux-Dateisystems auf einem Solid-State-Laufwerk keine Blöcke verworfen werden. Das Dokument besagt, dass das Standardverhalten (von mke2fs, im März 2015) darin besteht, keine Blöcke zu verwerfen. Die aktuelle mke2fsManpage besagt jedoch Folgendes:

verwerfen:Versuchen Sie, Blöcke zum mkfs-Zeitpunkt zu verwerfen (das anfängliche Verwerfen von Blöcken ist bei Solid-State-Geräten und Sparse-/Thin-Provisioning-Speicher sinnvoll). Wenn das Gerät ankündigt, dass beim Verwerfen auch Daten auf Null gesetzt werden (jeder nachfolgende Lesevorgang nach dem Verwerfen und vor dem Schreiben gibt Null zurück), markieren Sie alle noch nicht auf Null gesetzten Inode-Tabellen als auf Null gesetzt. Dies beschleunigt die Initialisierung des Dateisystems erheblich.Dies ist als Standard eingestellt.

Wenn ich eine SSD manuell formatiere, kann ich das Verwerfen von Blöcken während der Formatierung verhindern, indem ich -E nodiscardder mke2fsBefehlszeile etwas hinzufüge. Da die Distributionsinstallationsprogramme jedoch automatisch erfolgen, ist dies nicht möglich. Ist das ein Grund zur Sorge?

Antwort1

Das verlinkte Dokument scheint einem bestimmten Zweck zu dienen (Entwicklung und Benchmarking von NVME-Treibern für den Linux-Kernel) und stellt keine allgemeine Beratung für Endbenutzer dar.

Es wird behauptet, dass ext4 zum Zeitpunkt des MKFS nichts verwirft …

Kerndateisysteme:

  • ext4 – die erweiterte Standardoption besteht darin, beim Erstellen des Dateisystems keine Blöcke zu verwerfen. Behalten Sie dies bei und fügen Sie nicht die erweiterte Option „verwerfen“ hinzu, wie es in einigen Informationen empfohlen wird.
  • xfs – fügen Sie bei mkfs.xfs die Option –K hinzu, damit Sie keine Blöcke verwerfen.

...und doch passiert es. Es ist das Allererste, was es tut.

# mkfs.ext4 /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Discarding device blocks: done
Creating filesystem [...]

Wer also nicht alle Daten verwerfen will, muss das aktiv verhindern, für xfs mkfs.xfs -Kwie vorgeschlagen, für ext4 mit mkfs.ext4 -E nodiscard.

# mkfs.ext4 -E nodiscard /dev/loop0
mke2fs 1.46.4 (18-Aug-2021)
Creating filesystem [...]

Mir ist nicht bekannt, ob sich das Standardverhalten jemals geändert hat. Soweit ich weiß, war es immer die Standardeinstellung. Bevor die Optionen -E discard,nodiscard aufkamen, gab es auch -K, um Daten zu behalten (Standard beim Verwerfen deaktivieren), ohne die entsprechende Option zum Aktivieren des Verwerfens, wenn es standardmäßig deaktiviert war.

Auf der Manpage wurde einmal behauptet, dass „nodiscard“ die Standardeinstellung sei, aber ich sehe dies nirgends im Code im Commit-Verlauf widergespiegelt, also handelt es sich vielleicht um einen Dokumentationsfehler.

mke2fs: Option -K verwerfen, Discard/Nodiscard einführen

(Tatsächlich wurde in diesem Commit gleichzeitig behauptet, dass sowohl „discret“ als auch „nodiscard“ die Standardeinstellung seien.)

Es wäre toll, wenn nodiscard die Standardeinstellung wäre und fstrim erst eine Woche später möglich wäre. Linux ist etwas schnell dabei, Ihre Daten zu löschen. Formatieren Sie das falsche Gerät und selbst wenn Sie Ihren Fehler sofort bemerken, ist es für eine Datenwiederherstellung bereits zu spät.

Antwort2

Vorab: Ich kaufe es nicht wirklich.

Dieses Dokument ist älter und möglicherweise nicht mehr korrekt.

Außerdem könnte es einfach falsch sein; in der Vergangenheit gab es diesbezüglich viele Missverständnisse, und die Leute, die Anleitungen schreiben, sind nicht unbedingt dieselben Leute, die vom selben Unternehmen aus zum Linux-Kernel beitragen. Die Situation ist in der Tat komplex – die Optimierung einer SSD kann für eine andere das Schlimmste sein, und die Chipsatzhersteller haben keine Möglichkeit gefunden, die Präferenzen ihrer Controller mitzuteilen.
Die NVMe-Disc-Funktionalität ist jedoch seit langem standardisiert (Intel war daran beteiligt – eigentlich sogar dominant –) und dies ist ihre beabsichtigte Verwendung, daher wäre ich ziemlich überrascht, wenn sie nicht „gut“ wäre.

Alles in allem erhält die SSD durch die Verwendung von Discard mehr Informationen – was sie damit macht, bleibt der SSD überlassen. Wenn Sie also mit mehr Informationen, die Sie auch einfach ignorieren könnten, schlechter arbeiten, handelt es sich tatsächlich um ein Firmware-Problem des SSD-Controllers und nicht um ein Treiberproblem. Ich wette, Intel, das sehr daran interessiert ist, in Linux-Rechenzentren gut unterstützt zu werden, hat dieses Problem schon lange behoben.

verwandte Informationen