Lösung 1:
Verwenden Sie kein RAID0, ein Ausfall eines Laufwerks wird das Array zerstören. RAID6, RAID10, sogar ein einzelnes Laufwerk ohne Array wäre für die Verfügbarkeit besser.
f2fs soll freundlich zu modernen Solid-State-Geräten sein, und Linux md kann sehr schnell gehen.
Es ist jedoch unmöglich, allgemeine Aussagen wie f2fs auf einem Array ohne Daten zu treffen. Sie müssen berücksichtigen, wie hoch Ihre Arbeitslast ist, ob das E/A-Muster auf einem ähnlichen System wie Ihrem bewertet wurde und welche einschränkenden Faktoren vorhanden sind.
Führen Sie eine Kapazitätsanalyse durch. Schätzen Sie Dinge wie Datenbankabfragen pro Sekunde oder wie viele Dateien gelesen und geschrieben werden. Messen Sie IOPS mit Tools wie iostat -xz 1
. Wenn die r/s
und w/s
nähern sich die Zahlen der Nennkapazität des Geräts, benötigen Sie möglicherweise schnellere Festplatten. Erwarten Sie ungefähr 100 IOPS pro sich drehendem Magnet und mindestens ein paar tausend IOPS von den meisten SSDs. Und es macht einen Unterschied, ob Festplatten als SATA oder NVMe angebunden sind.
Bewerten Sie die Leistung jeder Ressource im System. Schnelle Speicherung ist nur begrenzt hilfreich, wenn Sie an CPU oder Speicher gebunden sind. Speicher ist besonders nützlich als Cache. Übermäßiges Auslagern ist schlecht, da die Auslagerungsdatei die Leistung des Speichersystems stiehlt, aber nicht so schnell wie DRAM ist.
Sobald Sie die Leistung des Systems jetzt verstanden haben, können Sie mit der Bewertung von Änderungen am Speichersystem beginnen.
Lösung 2:
Die Verwendung von F2FS auf einer klassischen Festplatte ist keine gute Idee:Während die Leistung beim zufälligen Schreiben wahrscheinlich höher ist als bei EXT4 oder XFS, wird die sequentielle Lesegeschwindigkeit auf einem veralteten Dateisystem sehr enttäuschend sein.
Um die zufällige Schreibleistung zu erhöhen, ohne einen gegen Stromausfall geschützten Write-Back-Cache (sprich:einen echten RAID-Controller) zu haben, müssen Sie Ihre Anwendungen so konfigurieren, dass sie nicht gib fsync() aus, aber das wird die Wahrscheinlichkeit eines Datenverlusts bei ungeplantem Herunterfahren erheblich erhöhen. nicht Deaktivieren Sie die Barrieren auf Systemebene (dh indem Sie dem Kernel mitteilen, dass Sie Write-Through-Caches haben), da dies im Falle eines Stromausfalls das gesamte Dateisystem ruinieren kann.
Sie können auch die Verwendung von ZFS in Betracht ziehen (wobei Sie das Striping vorzugsweise sich selbst überlassen und nicht der MDRAID-Schicht):Aufgrund seiner CoW-Natur sind zufällige Schreibvorgänge erheblich schneller als auf anderen Dateisystemen, während erweitertes Caching die Probleme mit sequenziellen Lesevorgängen vermeidet. Es unterstützt sogar sync=disabled
:Wenn Sie im Falle eines unerwarteten Herunterfahrens ein Datenverlustfenster von ~5 Sekunden tolerieren können, wird es eine Menge zufälliger Schreib-IOPs bereitstellen, ohne die Konsistenz der Anwendung oder des Dateisystems zu beeinträchtigen.
Wenn Sie schließlich EXT4 verwenden, können Sie mit data=journal
einen schnellen Test durchführen :Während dies die sequenzielle Schreibleistung verringert, sollten zufällige Schreibvorgänge etwas schneller sein als der Standard-Journalmodus.