Frage Wie optimiere ich das Betriebssystem für SSDs?


Welche Schritte sollten vor / während / nach der Installation von Ubuntu auf einem Solid State Drive unternommen werden, um die Leistung zu optimieren und die maximale Lebensdauer des Laufwerks zu gewährleisten?


143
2017-08-06 14:03


Ursprung




Antworten:


Ich habe erfolgreich mehrere verschiedene Techniken verwendet, um die Art und Weise zu verbessern, wie Ubuntu das Speichergerät verwendet, sei es Solid State oder herkömmliches Laufwerk.

Bei SSDs versuchen Sie, die Anzahl der Schreibvorgänge des Laufwerks zu minimieren, da Lesevorgänge dem Laufwerk keinen Verschleiß hinzufügen sollten.

1) Verwalten Sie die Auslagerungsdatei

Wenn Sie Ihren Computer nicht in den Ruhezustand versetzen und über ausreichend RAM-Speicher verfügen, um alle Ihre Anwendungen auszuführen, benötigen Sie theoretisch keine Swap-Partition.

Wenn Sie eine Mischung aus SSD und Festplatten haben, legen Sie Ihre Swap-Partition nur auf die Festplatten.

2) Keine Schreibvorgänge für Read-Timestamps (geeignet für SSDs und Festplatten)

Mounten Sie Ihre Partitionen mit den Optionen noatime und nodiratime stoppt Zeitstempel schreibt, wenn Sie Dateien und Ordner lesen. Diese Zeitstempel-Schreibvorgänge sind in der Regel nicht erforderlich, es sei denn, Sie verwenden einen lokalen Mail-Server-Client, z. B. mutt. Der Grund, warum dies im Allgemeinen eine schlechte Idee ist, besteht darin, dass jedes Lesen einen Schreibvorgang erzeugt, wenn die Zeitstempel aktualisiert werden. Dies verringert die Lebensdauer der SSD.

Bearbeiten Sie Ihre / etc / fstab Konfigurationsdatei (sorgfältig - nehmen Sie eine Sicherungskopie, um sicher zu sein, dass das Brechen Ihrer fstab-Konfiguration verhindern kann, dass das System funktioniert):

cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

Bearbeiten Sie die Einhängeoptionen für Ihre Partitionen, indem Sie die Zeilen notime und nodiratime zu den Zeilen hinzufügen, die Ihre root (/) und andere Partitionen definieren, wenn Sie sie haben (/ home) - Hinweis: Wenn Sie eine / home-Partition haben, beginnen Sie damit, dass Sie nur diese Partition ändern, wenn Sie etwas kaputt machen wollen 

# / was on /dev/sda2 during installation
UUID=587e0dc5-2db1-4cd9-9792-a5459a7bcfd2 /               ext4    noatime,nodiratime,errors=remount-ro 0       1

# /home was on /dev/sda3 during installation
UUID=2c919dc4-24de-474f-8da0-14c7e1240ab8 /home           ext4    noatime,nodiratime,defaults        0       2

Sie müssen den Computer neu starten, bevor diese Änderungen wirksam werden

3) Minimierung von Schreibvorgängen vom Betriebssystem und von Anwendungen

Unter der Annahme, dass Sie keinen unternehmenskritischen Produktserver betreiben, schauen sich die meisten Leute keine Protokolle an, sollte etwas schief gehen (besonders, da schwerwiegende Fehler für die meisten Ubuntu-Benutzer selten sind). Daher können Sie Ubuntu so konfigurieren, dass alle Protokolle in den RAM-Speicher und nicht in die SSD geschrieben werden.

Hinweis: Nehmen Sie nur die folgenden Änderungen vor, wenn Sie alle Software installiert haben, die Sie verwenden möchten (insbesondere Apache-Webserver), da sonst Probleme mit fehlenden Verzeichnissen in / var / log auftreten können

Hintergrundinformationen zu diesem Ansatz finden Sie unter Verlängerung der Lebensdauer Ihres Flash-Laufwerks auf ubuntu-eee.com 

Öffnen / etc / fstab mit einem Editor (vorausgesetzt, Sie haben die Datei / etc / fstab gesichert)

gksudo gedit /etc/fstab

Fügen Sie die folgenden Zeilen am Ende der fstab-Datei hinzu und speichern Sie:

# Uncomment these after all server based applications installed - eg. apache
#tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
#tmpfs /var/log/apt tmpfs defaults,noatime 0 0
# none /var/cache unionfs dirs=/tmp:/var/cache=ro 0 0

Sie müssen den Computer neu starten, bevor diese Änderungen wirksam werden

Siehe auch:


106
2017-08-08 13:09



Über das letzte bisschen für Logs und Zeug, das tmpfs Zeilen werden kommentiert, warum sollte das Hinzufügen dieser Zeilen einen Unterschied machen? Müssen wir es unkommentiert hinzufügen? - Oxwivi
Ich kann verstehen, ob dies die Geschwindigkeit verbessern soll, aber das meiste von dem, was Sie geschrieben haben, scheint das SSD-Leben zu verbessern. Ist es nicht so, dass diese Verbesserungen bei modernen SSDs sinnlos sind? Und auf Kosten von mehr RAM-Nutzung! (Siehe zum Beispiel den Link in diese andere Antwort) - Chan-Ho Suh
Es gibt keine Notwendigkeit für 2). relatime macht die Aufgabe des Verhinderns sehr gut und war seither standardmäßig aktiv Kernel 2.6.30. - Mihai Capotă
Nur um @ MihaiCapotas Kommentar hinzuzufügen, gibt es eine Serverfehlerantwort mit mehr Details darüber, warum Noatime nicht benötigt wird. - Cas
Sie sagen, noatime impliziert nodiratime HierEs reicht also, die vorherige Option hinzuzufügen. - jarno


SSD Leben

Generell würde ich mich nicht kümmern - die Sorgen um das SSD-Leben sind übertrieben. Sie können dies lesen ausführlicher Artikel darüber, warum Sie sich wirklich keine Sorgen machen sollten. Kurz gesagt, die Schaltung in modernen SSDs verwaltet Wear-Leveling für Sie, und sie wissen, wie es weit besser geht als Sie.

In dem Artikel ist eine Berechnung der Lebensdauer einer SSD, die Schreibvorgänge mit einer kontinuierlichen Rate von 80M / s erhält. Das Leben ist 51 Jahre. Das basiert auf der Technologie von 2007 - das SSD-Leben wird jetzt länger sein. Und Sie schreiben fast sicher nicht mit 24 Stunden pro Tag bei 80M / s auf Ihre SSD.

SSD-Leistung

Die Leistungsverschlechterung im Laufe der Zeit kann jedoch ein Problem darstellen TRIMMEN ist die Lösung. Es gibt zwei Möglichkeiten

  • automatische / Online-TRIM, aka verwerfen
  • manuelle TRIM

Sie müssen Aktivieren Sie automatisch TRIM selbst . (Im Grunde fügst du das hinzu discard Option zu Ihren Mount-Optionen, vorausgesetzt, Sie verwenden ext4.) Ich habe einen Blog-Post gefunden, der das berichtet Die Option "Verwerfen" verlangsamt das System beim Löschen von Dateien.

Sie können dies gelegentlich manuell (oder in einem Cron-Job) tun fstrim. Wenn Sie nur eine Partition haben, müssen Sie nur Folgendes tun:

sudo fstrim /

Beachten Sie, dass fstrim nur in 11.10 und neuer verfügbar ist. Für ältere Systeme benötigen Sie die wiper.sh Skript. Ich habe das Skript gefunden /usr/share/doc/hdparm/contrib/wiper.sh.gz auf meinem System.

Wenn Sie sich wundern, das Problem, dass TRIM löst, als von Wikipedia beschriebenist:

SSDs speichern Daten in Flash-Speicherzellen, die in Seiten gruppiert sind, wobei die Seiten (typischerweise jeweils 4 kB) in Blöcke gruppiert sind (typischerweise 128 Seiten pro Block, insgesamt 512 kB). NAND-Flash-Speicherzellen können nur dann direkt beschrieben werden, wenn sie leer sind. Wenn davon ausgegangen wird, dass sie Daten enthalten, müssen die Inhalte zuerst gelöscht werden, bevor eine Schreiboperation zuverlässig durchgeführt werden kann. Bei SSDs kann eine Schreiboperation auf Seitenebene durchgeführt werden, aber aufgrund von Hardware-Beschränkungen wirken sich Löschbefehle immer auf ganze Blöcke aus. Als Ergebnis, Das Schreiben von Daten auf SSD-Medien ist sehr schnell, solange leere Seiten verwendet werden können, verlangsamt sich jedoch beträchtlich, sobald zuvor geschriebene Seiten überschrieben werden müssen. Da ein Löschen der Zellen in der Seite erforderlich ist, bevor es erneut geschrieben werden kann, aber nur ganze Blöcke gelöscht werden können, löst ein Überschreiben einen Lese-Lösch-Modifizier-Schreib-Zyklus aus: der Inhalt des gesamten Blocks muss im Cache gespeichert werden, bevor er effektiv auf dem Flash-Medium gelöscht wird, dann wird die überschriebene Seite im Cache geändert, so dass der zwischengespeicherte Block auf dem neuesten Stand ist, und nur dann ist der gesamte Block (mit aktualisiertem Seite) auf das Flash-Medium geschrieben. Dieses Phänomen ist als Schreibverstärkung bekannt.


90
2017-08-08 19:03



Ich wünschte, ich könnte mehrfach wählen. Dies wäre eine dieser Antworten. Diese Verbindung hat eine Sorge gelöst, die ich schon lange hatte. Vielen Dank Hamish. - Luis Alvarado♦
Interessanter Artikel von storesearch.com. Ich wünschte, es würde ein Date geben! Bedeutet die obige Antwort, dass SSD-Besitzer sich mit den Vorschlägen in der ersten Antwort nicht beschäftigen müssen, mit Ausnahme von TRIM? Ich brauche nicht viel Zeit für den Dateizugriff, aber mit 2G Speicher ist eine Swap-Partition immer noch nützlich, wenn Sie eine Fotobearbeitungssoftware zusammen mit mehreren anderen speicherintensiven Programmen wie Chrome ausführen. - Lawrence I. Siden
@lsiden: Der Artikel erwähnt "Später: - im Mai 2008" teilweise. Und Sie haben Recht, dass Sie sich nicht um all die anderen Dinge im ersten Artikel kümmern sollten. Aktivieren Sie einfach TRIM und genießen Sie die Geschwindigkeit :) - Hamish Downer
Der Artikel bezieht sich auf Enterprise-SSDs: Er nutzt 2 Millionen Schreibzyklen. Consumer-SSDs haben etwa 3000-5000 Zyklen. Eine 128-GB-SSD mit 3000 Zyklen ergibt 57 Tage kontinuierliches Schreiben mit 80 MB / s. - LeartS
Ab Ubuntu 14.10 findet TRIMming automatisch jede Woche auf allen SSDs statt, die von fstrim unterstützt werden. ref. - KrisWebDev


Es gibt mehrere Punkte:

Ausrichtung:

Was oft betont wird, ist das Recht Ausrichtung der Partition. Dies sollte der Blockgröße der SSD entsprechen. Spielen Sie sicher und stellen Sie Ihre Partitionen auf MiB-Grenzen ein. Beachten Sie, dass Sie dies nicht mit dem Partitionstool des Ubuntu-Installationsprogramms (das MB nicht MiB verwendet) ausführen können, aber Sie können die Live-CD starten, Gparted (die MiB verwendet) verwenden und dann auf Installieren klicken, um die von Ihnen eingerichteten Partitionen zu verwenden.

Der richtige Scheduler:

Ein wichtiger Punkt ist der Planer was sein sollte noop. Sie können diesen Scheduler über kernelparameter einstellen elevator=noop oder über einen Eintrag echo noop > /sys/block/sda/queue/scheduler in dir rc.local.

Bergfahnen:

ich würde empfehlen noatime und discard

Tmpfs

Tmp auf eine Ramdisk zu setzen, kann die Lebensdauer der ssd erhöhen. Um dies zu verwenden, füge die folgende Zeile in deine fstab ein: none /tmp tmpfs defaults 0 0

Generell, wenn Sie tiefer in dieses Thema eintauchen möchten, würde ich empfehlen Dies ausgezeichneter Wiki-Artikel.


20
2018-02-03 21:28





Schneller Tuning-Kurs für Ihre SSD auf Ubuntu:

Dateisystem

Arch Wiki Erwähnungen Einige bevorzugte Optionen für SSD-Dateisystem - einer von ihnen ist instabil, andere sind ext* Einsen. ich nehme an ext4 ist eine der besten Tipps.
Hinweis: Im Falle von ext4 Sie möchten vielleicht verwenden discard Mount-Option.

fstab

# <file system> <mount point> <type> <options>                                  <dump>  <pass>
proc            /proc         proc   nodev,noexec,nosuid                        0       0
tmpfs           /tmp          tmpfs  nodev,nosuid,noatime,mode=1777             0       0
/dev/sda1       /             ext4   defaults,noatime,discard,errors=remount-ro 0       1
/dev/sda2       /home         ext4   defaults,noatime,discard,user_xattr        0       2
/dev/sda3       /windows      ntfs   defaults,noatime,discard,umask=007,gid=46  0       0

Wenige wichtige Dinge sind hier:

  • Für Systeme mit> = 2 Gigabyte Speicher ist das Lokalisieren von / tmp im RAM wünschenswert.
  • Nein swap Partition. Heutzutage wird es nur für den Winterschlaf benötigt, da moderne Maschinen ziemlich viel RAM haben.
  • noatime und discard Optionen. Info ist Hier.

Planer

Ziehen Sie in Betracht, vom Standard-Scheduler, der unter den meisten Linux-Distributionen cfq (faire Warteschlangen) ist, zum Noop- oder Deadline-Scheduler für eine SSD zu wechseln. Die Verwendung des Noop-Schedulers zum Beispiel verarbeitet Anforderungen einfach in der Reihenfolge, in der sie empfangen werden, ohne zu berücksichtigen, wo sich die Daten physisch auf dem Datenträger befinden. Diese Option wird für SSDs als vorteilhaft angesehen, da die Suchzeiten für alle Sektoren auf der SSD identisch sind.

Fügen Sie Folgendes hinzu /etc/rc.local:

# SSD performance tuning
echo noop > /sys/block/sda/queue/scheduler

Info

ein  zwei


16
2017-12-09 17:24



Ohne Wechsel, und mit /tmp im RAM ist es sehr einfach zu erreichen aus dem Speicher Situation, wie viele Programme verwenden /tmp als Speicherplatz (z. B. Brasero zum Speichern von DVD-Bildern). - arrange
Nicht wirklich. tmpfs Standardmäßig ist 10% RAM. Die Größe kann mit eingestellt werden size Option jedoch. - Andrejs Cainikovs
Brasero ist ein schlechtes Beispiel, das sollte er nicht machen, wie Lennart Poettering in seinem Blog erklärt 0pointer.de/blog/projects/tmp.html - LiveWireBT


4) Automatische TRIM aktivieren 

Wenn Ihre SSD dies unterstützt, sollten Sie auch das automatische TRIM (wie beschrieben) aktivieren Hier)


8
2017-12-30 23:37





Ich würde diese Zeile nicht zu Ihrer fstab hinzufügen, der var / tmp-Ordner soll Neustarts überleben, und das könnte Probleme für Sie verursachen.

tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

Wenn ich ein neues System konfiguriere, lasse ich den gesamten tmp-Ordner auf diese Weise auskommentieren, wenn etwas passiert, kann ich die Logs und Zeug überprüfen. Sobald ich das Hauptsystem eingerichtet habe, werde ich sie entkommentieren, aber ich füge nie die obige Zeile hinzu, hier ist was ich verwende:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

Und wenn ich irgendwelche Probleme mit meinem System habe, kommentiere ich diese heraus, um alles auch nach einem Neustart oder einem erzwungenen Neustart nach einer Sperrung überprüfen zu können.

Auch brauchen Sie nicht nodiratime, noatime Option kümmert sich um beides.

Wie für TRIM, wenn Ihr hw / sw es unterstützt, ist es ein Muss, ich verwende nicht in fstab ablegen. Ich erstelle einen täglichen Cron, weil mein PC immer an ist, indem ich Folgendes tue:

gksu gedit /etc/cron.daily/trim

Dann fügen Sie das zu Datei hinzu und speichern Sie (wenn Sie eine separate / home-Partition auf ssd nicht haben, oder andere Teile haben, die auf ssd sind, sollten Sie die Idee erhalten, wie man das ändert:

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

Dann machen Sie die Datei ausführbar von:

sudo chmod +x /etc/cron.daily/trim

Ich bearbeite meine rc.local auch so:

gksu gedit /etc/rc.local

Fügen Sie oben "exit 0" und unter der letzten # hinzu:

# Modification for SSD
# you may want to add more folders to be checked/created to this list
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

Sie können von hier kopieren und einfügen, so dass es keine Fehler gibt, für den Laien sieht es aus, als ob es nicht funktioniert.

Ich habe auch gelesen, dass 10% Ihrer SSD-Laufwerk unformatiert kann helfen, Leben zu verlängern, das bleibt abzuwarten. Ich habe nicht viel in das gelesen, so kann ich nicht verbürgen, wenn es sinnvoll ist, dies zu tun.

Dies ist der beste Allround-Guide, er hat einen Tag lang nicht über Google geblättert und sich dann einen Guide ausgedacht, du solltest es dir anschauen HIER


3
2017-07-28 22:53



Ist die Idee, alle Verzeichnisse unter regulär / var / log zu /etc/rc.local hinzuzufügen? Was passiert, wenn Sie die Verzeichnisse nicht hinzufügen? Ich schätze, dass möglicherweise weitere Verzeichnisse hinzugefügt werden müssen, wenn Sie einige neue Pakete installieren. Kann /etc/rc.local beim Herunterfahren aktualisiert werden, um beim nächsten Start alle Verzeichnisse zu erstellen? - jarno
In Ubuntu 14.04 und später ist ein Cron-Job /etc/cron.weekly/fstrim voreingestellt, um Dateisysteme wöchentlich zu trimmen. Wie für 14.04, sehen Sie Hier. Ubuntu 15.10 verwendet /sbin/fstrim --all || true im fstrim-Skript. - jarno
Zumindest Verzeichnis / var / log / installer hat das Unterverzeichnis ubiquity-apt-clone in Xubuntu 15.10. Sollten Sie Unterverzeichnisse rekursiv erstellen? - jarno


Mit TRIM kann ein Betriebssystem einer SSD mitteilen, welche Datenblöcke nicht mehr verwendet werden und intern gelöscht werden können. Durch das Trimmen kann die SSD im Voraus den Speicherbereinigungs-Overhead verarbeiten, der zukünftige Schreiboperationen auf die beteiligten Blöcke ansonsten erheblich verlangsamen würde.1 

In Ubuntu 14.04 wurde ein neues Feature hinzugefügt util-linux Paket, das regelmäßig SSDs automatisch trimmt, aber nur SSDs von Intel und Samsung haben TRIM standardmäßig aktiviert, weil einige billige SSDs sich selbst beim Ausführen von TRIM zementieren können.2 Die Inhalte von /etc/cron.weekly/fstrim in Ubuntu 14.04:

#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
set -e

# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

1https://en.wikipedia.org/wiki/Trim_%28computing%29
2Wie ist Trimmen aktiviert?


3
2017-12-25 01:52





Es ist klar, dass /var/tmp sollte nicht in tmpfs enthalten sein, da der Inhalt definitionsgemäß über Neustarts hinaus erhalten werden muss:


2
2017-10-09 16:12