Welches Linux-Dateisystem funktioniert am besten mit SSD

119

Aus dem Wiki:

Die wichtige TRIM-Funktion wird vom Linux-Betriebssystem ab Kernel 2.6.33 (verfügbar ab Anfang 2010) unterstützt. Die Unterstützung zwischen verschiedenen Dateisystemen ist jedoch immer noch inkonsistent oder nicht vorhanden. Eine ordnungsgemäße Partitionsausrichtung wird auch nicht von der Installationssoftware durchgeführt.

Welches Dateisystem eignet sich am besten für SSDs und unterstützt die Ausrichtung von TRIM + -Partitionen während der Installation und ist unter Ubuntu verfügbar?

hbt
quelle

Antworten:

89

Dateisystem EXT4 + TRIM:

  • EXT4 mit TRIM verbessert die Leistung, indem unnötige Schreibzyklen auf das SSD-Laufwerk reduziert werden, da die Schreib- / Überschreibzyklen begrenzt sind.
  • Ubuntu und einige andere Linux-Versionen unterstützen EXT 4 mit TRIM ab Werk.

SWAP-Partition:

  • Stellen Sie sicher, dass auf der SSD kein SWAP-Speicherplatz vorhanden ist, um die Schreibzyklen zu verkürzen.
  • Wenn Sie ein mechanisches Laufwerk haben, sollten Sie einen SWAP-Bereich auf dem mechanischen Laufwerk erstellen und vermeiden, dass sich dieses auf der SSD befindet.

Partitionsausrichtung:

  • Die Partition sollte an einer sauberen 1-MB-Grenze beginnen, damit die Blockgröße des Dateisystems an der Blockgröße der SSD ausgerichtet wird.

Verwenden Sie also EXT4 + TRIM mit einem SWAP auf einer mechanischen Festplatte oder ohne SWAP auf einer SSD.

Das Obige kann implementiert werden, indem auf die Quelle verwiesen wird : So maximieren Sie die SSD-Leistung .

aliasgar
quelle
GPT ist die moderne Methode unter Verwendung von gdisk& grub 2.0.x(ich glaube, jemand hat es in einer Antwort erwähnt) und MBR ist die Legacy-Methode unter Verwendung der alten grub 0.9.7und fdisk.. Sie können mehr hier finden: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar
7
Es ist nicht erforderlich, anzugeben, nodiratimewann Sie auch angeben noatime. Einverstanden, es sieht cool und fortschrittlich für andere Nerds aus, aber da noatimezeitweilig Inodes deaktiviert werden und Verzeichnisse auch Inodes sind, ist es so, als würde man sagen "wasche deine Hände und wasche auch deine Daumen". :)
Redsandro
Aus Erfahrung kann ich sagen, dass kein Scheduler ("noop") schneller arbeitet als der Abgabetermin.
Trommelfeuer
5
Nein. " Linux-Swap-Partitionen führen standardmäßig TRIM-Vorgänge aus, wenn das zugrunde liegende Blockgerät TRIM unterstützt. Sie können diese deaktivieren oder zwischen einmaligen und fortlaufenden TRIM-Vorgängen wählen." Daher sollte die Swap-Partition auf einer SSD platziert werden, um die schnelle Zugriffszeit zu nutzen, die bei jedem Seiten-Swap viel Zeit in
Anspruch nimmt
2
@aliasgar Ist F2FS eine gute Wahl gegen ext4?
SebMa
67

Kurze Antwort

  • Wählen Sie ext4 und hängen Sie esdiscard entweder mit der Option für TRIM- Unterstützung ein oder verwenden Sie FITRIM (siehe unten). Verwenden Sie diese noatimeOption auch, wenn Sie "SSD-Verschleiß" befürchten.

  • Ändern Sie nicht Ihren Standard-E / A-Scheduler (CFQ) auf Servern mit mehreren Anwendungen , da dieser für Fairness zwischen Prozessen sorgt und automatische SSD-Unterstützung bietet. Allerdings verwenden Frist auf Desktops eine bessere Ansprechbarkeit unter Last zu erhalten.

  • Um eine ordnungsgemäße Datenausrichtung zu gewährleisten, muss der Startsektor jeder Partition ein Vielfaches von 2048 (= 1 MiB) sein. Sie können fdisk -cu /dev/sdXsie erstellen. Bei neueren Distributionen wird dies automatisch für Sie erledigt.

  • Überlegen Sie zweimal, bevor Sie Swap auf SSD verwenden. Es wird wahrscheinlich viel schneller sein als das Auswechseln auf der Festplatte, aber es wird auch die Festplatte schneller verschleißen (was möglicherweise nicht relevant ist, siehe unten).

Lange Antwort

  • Dateisysteme:

Ext4 ist das gängigste Linux-Dateisystem (gut gepflegt). Es bietet gute Leistung mit SSD und unterstützt die TRIM (und FITRIM) -Funktion gute SSD - Leistung im Laufe der Zeit zu halten (dies löscht nicht verwendete Speicherblocks für die schnellen später Schreibzugriff). Nilfs ist speziell für Flash - Speicher - Laufwerke konzipiert, aber nicht nicht wirklich besser als ext4 auf Benchmarks. Btrfs ist noch experimentell betrachtet (und nicht wirklich eine bessere Leistung entweder ).

  • SSD Leistung & TRIM:

Die TRIM- Funktion löscht SSD-Blöcke, die vom Dateisystem nicht mehr verwendet werden. Dies optimiert die langfristige Schreibleistung und wird aufgrund ihres Designs für SSD empfohlen. Dies bedeutet, dass das Dateisystem das Laufwerk über diese Blöcke informieren kann. Die discardmount-Option von ext4 gibt solche TRIM- Befehle aus, wenn Dateisystemblöcke freigegeben werden. Dies ist online verwerfen .

Dieses Verhalten impliziert jedoch einen geringen Leistungsaufwand. Seit Linux 2.6.37 können Sie die Verwendung von FITRIM vermeiden discardund gelegentliche Batch- Discards durchführen (z. B. von der Crontab). Das fstrimDienstprogramm erledigt dies (online) sowie die -E discardOption von fsck.ext4. Sie benötigen jedoch eine "aktuelle" Version dieser Tools.

  • SSD Verschleiß:

Möglicherweise möchten Sie die Anzahl der Schreibvorgänge auf Ihrem Laufwerk begrenzen, da SSD in dieser Hinsicht eine begrenzte Lebensdauer hat. Keine Sorge , die derzeit schlechteste 128-GB-SSD unterstützt mindestens 20 GB an geschriebenen Daten pro Tag über einen Zeitraum von mehr als 5 Jahren (1000 Schreibzyklen pro Zelle). Bessere (und auch größere) können viel länger halten: Sie werden es sehr wahrscheinlich bis dahin ersetzt haben.

Wenn Sie Swap auf einer SSD verwenden möchten, erkennt der Kernel eine nicht rotierende Festplatte und sortiert die Swap-Nutzung nach dem Zufallsprinzip (Kernel Level Wear Leveling): SSWenn Swap aktiviert ist, wird in der Kernel-Nachricht ein (Solid State) angezeigt:

Hinzufügen von 2097148k Swap auf / dev / sda1. Priorität: -1 erstreckt sich über: 2097148k SS

  • I / O-Scheduler:

Außerdem stimme ich den meisten Antworten von aliasgar zu (auch wenn das meiste von dieser Website kopiert wurde ), aber ich muss dem Scheduler- Teil teilweise widersprechen . Standardmäßig ist der Termin - Scheduler ist für Drehplatten optimiert , wie es den implementiert Aufzug Algorithmus . Lassen Sie uns diesen Teil klären.

Lange Antwort auf Scheduler

Ab Kernel 2.6.29 werden SSD-Festplatten automatisch erkannt, und Sie können dies überprüfen mit:

cat /sys/block/sda/queue/rotational

Sie sollten 1für Festplatten und 0für eine SSD bekommen.

Anhand dieser Informationen kann der CFQ-Scheduler nun sein Verhalten anpassen. Seit 3.1 Linux, der Kernel - Dokumentation cfq-iosched.txtDatei sagt :

CFQ verfügt über einige Optimierungen für SSDs und wenn es ein nicht rotierendes Medium erkennt, das eine höhere Warteschlangentiefe unterstützen kann (mehrere Anforderungen gleichzeitig im Flug), [...].

Außerdem versucht der Deadline Scheduler, ungeordnete Kopfbewegungen auf Rotationsscheiben basierend auf der Sektornummer zu begrenzen. Zitierendes Kerneldokument deadline-iosched.txt, fifo_batch Optionsbeschreibung :

Anforderungen werden in "Stapel" einer bestimmten Datenrichtung (Lesen oder Schreiben) gruppiert, die in aufsteigender Sektorreihenfolge bearbeitet werden.

Es kann jedoch interessant sein, diesen Parameter bei Verwendung einer SSD auf 1 zu setzen:

Dieser Parameter legt das Gleichgewicht zwischen der Wartezeit pro Anforderung und dem Gesamtdurchsatz fest. Wenn eine niedrige Latenz das Hauptanliegen ist, ist eine geringere Latenz besser (wobei ein Wert von 1 das Verhalten ergibt, bei dem zuerst die Leistung erbracht wird). Das Erhöhen von fifo_batch verbessert im Allgemeinen den Durchsatz auf Kosten von Latenzschwankungen.

Einige Benchmarks deuten darauf hin, dass zwischen den verschiedenen Schedulern kaum Leistungsunterschiede bestehen. Warum dann nicht Fairness empfehlen ? wenn CFQ selten schlecht in der Bank ist . Bei Desktop-Setups ist die Reaktionszeit bei Verwendung von Deadline unter Last aufgrund des Designs in der Regel besser (wahrscheinlich jedoch mit geringeren Durchsatzkosten).

Allerdings würde ein besserer Benchmark versuchen, Deadline mit zu verwenden fifo_batch=1.

Um Deadline auf SSDs standardmäßig zu verwenden, können Sie eine Datei /etc/udev.d/99-ssd.ruleswie folgt erstellen :

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"
Totor
quelle
Was ist damit gemeint, dass die Partitionierungsausrichtung bei neueren Distributionen automatisch durchgeführt wird? Gilt dies auch, wenn Sie die manuelle Partitionierung während der Ubuntu-Installation oder bei der Partitionierung durch gparted verwenden?
jarno
2
@jarno In den letzten Distributionen (seit einigen Jahren) werden Partitionierungs-Tools, von fdisk bis hin zu grafischen Dingen, in der Regel automatisch standardmäßig so eingestellt, dass sie Partitionsausrichtungen mit einem Vielfachen von 1 MB vom Gerätestart an erstellen. Dies stimmt präventiv mit 512 Byte, 4 KB, 8 KB und einer halben Milliarde anderer Block- / Clustergrößen überein, die von Natur aus 2 ^ n sind. Es ist fast unmöglich, eine Partition falsch auszurichten, es sei denn, Sie unternehmen erhebliche Anstrengungen, um dies zu tun.
Killermist
13

Der Archlinux-Artikel Solid State Drives sagt im Abschnitt Wahl des Dateisystems :

Es gibt viele Optionen für Dateisysteme, einschließlich Ext2 / 3/4, Btrfs usw.

Btrfs
Btrfs-Unterstützung wurde in die Hauptversion 2.6.29 des Linux-Kernels aufgenommen. Einige glauben, dass es nicht ausgereift genug für die Produktion ist, während es auch frühe Anwender dieses potenziellen Nachfolgers von ext4 gibt. Benutzer sollten den Btrfs- Artikel lesen, um weitere Informationen zu erhalten.

Ext4
Ext4 ist ein weiteres Dateisystem, das SSD unterstützt. Es gilt seit 2.6.28 als stabil und ist für den täglichen Gebrauch ausgereift. Im Gegensatz zu Btrfs erkennt ext4 die Datenträgernatur nicht automatisch. Benutzer müssen die TRIM-Befehlsunterstützung mit der Option discard mount in fstab (oder mit tune2fs -o discard / dev / sdaX) explizit aktivieren.

Sowohl Btrfs als auch Ext4 erfüllen die beiden Hauptanforderungen für eine effiziente Nutzung der SSD:

  • Das Dateisystem muss ATA_TRIM-Befehle an die zugrunde liegende SSD senden können
  • Das Dateisystem darf keine nicht benötigten Schreibvorgänge auf die Festplatte ausführen

Für die Leistung gibt es zwei weitere Anforderungen:

  • Partitionen müssen an der Blockgröße der SSD ausgerichtet sein
  • TRIM muss für jede mit Ext4 formatierte Partition explizit aktiviert werden

Die erste ist heutzutage bei den meisten Linux-Installern automatisch. fdisk erstellt auch Partitionen an der Grenze von 1024 KB, wenn es mit den Flags "-cu" gestartet wird.

Die zweite Option ist für Btrfs automatisch, für Ext4 wird dies jedoch manuell durchgeführt, indem "discard" zur Liste der Mount-Optionen für jede Ext4-Partition in der Datei "/ etc / fstab" hinzugefügt wird. Weitere Details finden Sie in dieser Anleitung .

Meiner Meinung nach ist dieses geringfügige Fummeln mit fstab für Ext4 kein Grund, dieses ausgereifte und ausgezeichnete Dateisystem nicht zu verwenden.

Harrymc
quelle