Vermeidet TRIM die Beeinträchtigung der Leistung von mdadm RAID 1 auf SSD?

5

In anderen Fragen, die Red Hat gegen die Verwendung von mdadm RAID 1 auf SSD empfiehlt, wurde bereits darauf hingewiesen.

Red Hat warnt außerdem, dass die Software-RAID-Level 1, 4, 5 und 6 nicht für die Verwendung auf SSDs empfohlen werden. Während der Initialisierungsphase dieser RAID-Level schreiben einige RAID-Verwaltungsdienstprogramme (z. B. mdadm) in alle Blöcke des Speichergeräts, um sicherzustellen, dass die Prüfsummen ordnungsgemäß funktionieren. Dadurch wird die Leistung der SSD schnell beeinträchtigt.

Ich verstehe die Gründe dafür. Ich vermute jedoch, dass dies vor dem Erscheinen von mdtrim geschrieben wurde , das speziell für mdadm RAID 1 entwickelt wurde. Umgeht dies das Problem? Wenn ich TRIM richtig verstehe, glaube ich das, bin mir aber nicht sicher und frage daher.

TRIM passt vielleicht nicht zu mir. Ich brauche das für ein Produktionssystem und mdtrim sieht bestenfalls experimentell aus. Noch wichtiger ist, dass ich eine starke Verschlüsselung benötige. Untersuchungen haben gezeigt, dass TRIM etwas zu viel preisgibt, indem hervorgehoben wird, welche Teile des Laufwerks tatsächlich verwendet werden. Gibt es eine Möglichkeit, das Leistungsproblem zu vermeiden und trotzdem eine starke Verschlüsselung zu haben? Ich habe mich gefragt, ob es möglich ist, ein teilweises TRIM durchzuführen, wodurch einige der Blöcke für die Leistung freigegeben werden, aber nicht so viele, dass zu viel verraten wird.

Ein Vorschlag, den ich sah, war, nur etwa 80% jeder Festplatte zu verwenden, damit nach der anfänglichen Überprüfung von mdadm noch eine Handvoll Blöcke ungenutzt bleiben. Aber wären diese Blöcke nicht die ersten, die bei der späteren Verwendung der Festplatte verwendet werden? Sie wären immer noch ziemlich schnell aufgebraucht und es würde mir nicht besser gehen, oder?

Chewi
quelle
Es gibt Laufwerke auf dem Markt, die im Leerlauf etwas tun, das einem automatischen Zuschneiden ähnelt. Wenn Ihre Laufwerke manchmal nur schnell sein müssen, sind diese möglicherweise eine Lösung für Sie.
Hennes

Antworten:

1

Sicher, Sie können mit mdtrim (siehe --reserveOption) teilweise trimmen, um immer einen Teil des freien Speicherplatzes unbeschnitten zu lassen. Oder Sie können einfach eine große Datei mit dd (1) auf Ihrem verschlüsselten FS erstellen, um Speicherplatz zu belegen, der dann nie gekürzt (oder von Ihnen verwendet) wird. Wenn Sie nur ~ 30% des ungenutzten Speicherplatzes reduzieren, erhalten Sie zahlreiche Leistungsvorteile, ohne die Sicherheit zu beeinträchtigen.

Sie können (wie Sie vorschlagen) Überprovisionierung durchführen, anstatt stattdessen Trimmen (auf frischer oder ATA-sicher gelöschter SSD), Partition mit nur 80% des Speicherplatzes erstellen und diese stattdessen verwenden. Es wird nicht "ziemlich schnell aufgebraucht sein und dann wären Sie nicht besser dran". Hier ist warum:

Angenommen, Ihre Festplatte hat (der Einfachheit halber) 10000 Sektoren (LBAs). Wenn Sie so partitionieren, dass nur die Hälfte davon verwendet wird (der Einfachheit halber nochmals), verwenden Sie nur LBA 0-4999, während LBA 5000-9999 niemals berührt wird. Jetzt gibt es zwei Möglichkeiten, um festzustellen, welche Sektoren nicht verwendet werden, und zwar die von TRIM angegebenen und die, in die neu geschrieben wird. Wenn Sie also zum ersten Mal in LBA 100 schreiben, wird es verwendet (zum Beispiel im physischen Block 123). Wenn Sie zum zweiten Mal auf LBA 100 schreiben, schreibt die SSD sie an einen neuen Speicherort (z. B. physischen Block 124) und markiert dann die ALTE Version von LBA 100 (physischer Block 123) als nicht verwendet (TRIMED), also zu einem späteren Zeitpunkt Wenn sich die SSD im Leerlauf befindet, kann sie Speicherbereinigung durchführen, und (wenn alle anderen physischen Blöcke in diesem Löschblock ebenfalls nicht verwendet werden),

Indem Sie die Anzahl der verwendeten LBAs auf die Hälfte reduzieren, können Sie die Anzahl der überprovisionierten physischen Sektoren erhöhen, die das Laufwerk verwenden kann. Sie werden nicht "aufgebraucht", aber Sie müssen genug davon haben, damit die Fragmentierung (teilweise verwendete und teilweise nicht verwendete physische Blöcke im selben Löschblock) verschwindet, bevor Sie keinen freien Speicherplatz mehr haben (ansonsten SSD-Firmware) Sie müssen die verwendeten Blöcke an eine andere Stelle kopieren, bevor Sie den gesamten Löschblock löschen. Dies führt zu Schreibverstärkung, geringer Leistung und verkürzter Lebensdauer der SSD.

Der Befehl TRIM ist nach wie vor nützlich, da er die Verarbeitung beschleunigt (und dabei nicht so viel Speicherplatz verliert), indem Sektoren markiert werden, die nicht mehr verwendet werden, bevor sie erneut beschrieben werden müssen (und damit zusätzliches Schreiben vermieden und die Lebensdauer der SSD verlängert wird).

Matija Nalis
quelle
Ausgezeichnete Antwort, danke. Seitdem habe ich aufgehört, SSDs zu verwenden, und ich vermute, dass ich das, was Sie gerade gesagt haben, auf keinen Fall ohne weiteres bestätigen kann, aber Sie scheinen sicher zu wissen, wovon Sie sprechen, und die Detailgenauigkeit wird geschätzt. Sie haben einige Dinge bestätigt, bei denen ich mir nicht sicher war, und dieses Wissen wird mir hoffentlich in Zukunft gute Dienste leisten.
Chewi