SSD und UbuntuWill ich ein Ubuntu-Linux-System mit einer SSD betreiben, gibt es einen Haufen Empfehlungen zu beachten. Was hat unsere SSD für Eigenschaften? fdisk -l /dev/sda|grep -i se[ck]tor # Find out your hard disk information So könnte das aussehen 255 heads, 63 sectors/track, 4865 cylinders oder auch so: 255 Köpfe, 63 Sektoren/Spur, 14593 Zylinder, zusammen 234441648 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes | |
PartitionierenJetzt wird die SSD mit einer zur Erase-Block-Size passenden Block-Size partitioniert (und später formatiert): | |
sudo fdisk -H 255 -S 63 /dev/sda <Return> o <Return> n <Return> <Return> # Primary <Return> # 1 stimmt <Return> # Erster Sektor (2048) stimmt so +10G <Return> # das wird / n <Return> <Return> # Primary <Return> # 2 stimmt <Return> # Erster Sektor stimmt so +10G <Return> # auch / bzw. /rescue: alternative Linux-Boot+Rootpartition für Experimente & Rescue n <Return> <Return> # Primary <Return> # 3 stimmt <Return> # Erster Sektor stimmt so +30G <Return> # das wird die Windows-Partition für meine Steuererklärung und andere Experimente n <Return> e <Return> # Extended <Return> # 4 stimmt <Return> # Erster Sektor stimmt so <Return> # Letzter Sektor stimmt so n <Return> <Return> # Erster Sektor stimmt so +4G <Return> # das wird -swap- für den Ruhezustand n <Return> <Return> # Erster Sektor stimmt so +10G <Return> # das wird /var n <Return> <Return> # Erster Sektor stimmt so <Return> # Letzter Sektor stimmt so # das wird /home t <Return> 3 <Return> # Windows-Partition 7 <Return> # NTFS etc. t <Return> 5 <Return> # swap-Partition 82 <Return> # swap p <Return> # gut anschaun, ob alles so stimmt: gut anschaun, ob alles so stimmt: Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 Köpfe, 63 Sektoren/Spur, 14593 Zylinder, zusammen 234441648 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x5a0bd3a1 Gerät boot. Anfang Ende Blöcke Id System /dev/sda1 2048 20973567 10485760 83 Linux /dev/sda2 20973568 41945087 10485760 83 Linux /dev/sda3 41945088 104859647 31457280 7 HPFS/NTFS/exFAT /dev/sda4 104861694 234441647 64789977 5 Erweiterte /dev/sda5 104861696 113250303 4194304 82 Linux Swap / Solaris /dev/sda6 113252352 134223871 10485760 83 Linux /dev/sda7 134225920 234441647 50107864 83 Linux wirklich gut anschaun, ob alles so stimmt. Dann: w <Return> # die neue Partitionstabelle schreiben. Weiter geht es nach einem Reboot; sudo reboot |
Überlegung: Wir wollen häufiges Schreiben auf der SSD unterbinden, denn es geht das Gespenst um, dass das die Lebenszeit der SSD arg verringert (beispielsweise von ca. 8 auf "nur" ca, 5 Jahre).
ferner liefen
|
Hier ist der beste Zeitpunkt für die Windows-Installation. | |
Für Ubuntu-Leute ist das folgende eher uninteressant. Während der Installationsfragen stattdessen immer schön EXT4-Journaling-Dateisystem auswählen. # ... format your disk aligning the partition blocksize to the SSD erase block size... # ...with the above information (5 partitions, swap, no journaling ext4): sudo mke2fs -t ext4 -O ^has_journal /dev/sda1 sudo fsck -f /dev/sda1 sudo mke2fs -t ext4 -O ^has_journal /dev/sda2 sudo fsck -f /dev/sda2 sudo mke2fs -t ext4 -O ^has_journal /dev/sda6 sudo fsck -f /dev/sda6 sudo mke2fs -t ext4 -O ^has_journal /dev/sda7 sudo fsck -f /dev/sda7 |
Das EXT4-Dateisystem und seine potentiellen Nachfolger unterstützen TRIM. Das Journaling stellen wir dann später mit tune2fs ab. Ohne Journal ist Datenverlust wahrscheinlicher als mit, wenn ein Dateisystem nicht sauber unmountet wird (etwa bei Stromausfall). Dafür lebt die SSD womöglich ein paar Jahre länger. |
Hier ist der Zeitpunkt für die Linux-Installation. | |
Journaling ausschalten
Die folgenden Änderungen sind nur möglich, wenn die Dateisysteme nicht gemountet sind. | |
Ubuntu ausprobieren auswählen. |
abwarten, bis der Rechner von CD gebootet hat. |
Eine Shell erlangen, etwa mit F2 und gnome-terminal | |
sudo tune2fs -O ^has_journal /dev/sda1 sudo tune2fs -O ^has_journal /dev/sda2 sudo tune2fs -O ^has_journal /dev/sda6 sudo tune2fs -O ^has_journal /dev/sda7 |
Das kann man auch ganz wunderbar in eine Zeile schreiben. Ich hab es lieber einzeln abgeschlossen. |
sudo fsck.ext4 -f /dev/sda1 sudo fsck.ext4 -f /dev/sda2 sudo fsck.ext4 -f /dev/sda6 sudo fsck.ext4 -f /dev/sda7 |
Es soll schon Probleme mit nicht automatisch mountenden Partitionen gegeben haben, wo der fsck ausgelassen wurde, drum steht er hier. Dank SSD ist der fsck äußerst schnell, also nicht wundern. Auch das kann man ganz wunderbar in eine Zeile schreiben (s.o.). |
Nach dem nächsten Restart, probiere folgendes: dmesg | grep EXT4 Das sollte u.a. folgendes ausspucken, wenn alles geklappt hat: EXT4-fs (sda1): mounted filesystem without journal EXT4-fs (sda6): mounted filesystem without journal EXT4-fs (sda7): mounted filesystem without journal |
Falls Du das Journal gerne wieder einschalten willst, einfach die Prozedur wiederholen - nur das Dach ^ beim tune2fs-Kommando weglassen. |
/etc/fstab | |
TmpfsDer System-Cache lagert in /tmp. In /etc/fstab geben wir an, es im RAM anzulegen, damit weniger auf die SSD geschrieben wird. tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 Testen! mount -oremount tmpfs |
In Tmpfs kompilierenAbsichtlich in /tmp zu kompilieren ist eine schlaue Idee um die SSD zu schonen. Für Rechner mit >4 GB RAM kann die tmp-Zeile in /etc/fstab mit der size=-Option dazu verwendet werden, mehr als die Hälfte des physischen Hauptspeichers zu belegen. Beispiel für eine Rechner mit 8 GB echtem RAM: tmpfs /tmp tmpfs nodev,nosuid,size=7G 0 0 |
Ausschnitt aus meiner /etc/fstabHier der relevante Ausschnitt aus meiner /etc/fstab: UUID=cae118db-d8f8-4e2c-905e-1a07ad396a3b / ext4 discard,noatime,errors=remount-ro 0 1 # /home was on /dev/sda7 during installation UUID=58bf619b-a49e-49f8-bc36-7cc6ada4985c /home ext4 defaults,discard,noatime 0 2 # /var was on /dev/sda6 during installation UUID=b223cc2e-795d-436e-b5de-8d3b31bcc38a /var ext4 defaults,discard,noatime 0 2 # swap was on /dev/sda5 during installation UUID=3a7aacf7-caae-4d5e-9b19-e2c7af7d4a4f none swap sw 0 0 /dev/sr0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 tmpfs /tmp tmpfs defaults,noatime,mode=1777,nodev,nosuid 0 0 |
Mount-Optionen für SSDs
|
Swap und swappiness | |
Folgende Zeile zu /etc/sysctl.conf hinzufügen: vm.swappiness=0 |
Der Rechner hat mit 4 GB deutlich mehr RAM als er braucht, Daher reduziere ich den Wert für swappiness auf 0 und sage damit Linux, es soll nur dann swappen, wenn es gar nicht anders geht, |
Eine SSD braucht keinen Disk Head Scheduler | |
Mögliche Optionen für den Disk Head Scheduler erhalten wir so: cat /sys/block/sda/queue/scheduler | |
noop deadline [cfq] |
Die Liste der Optionen für unseren Disk Head Scheduler. Sollte deadline dabei sein, dann ist das die beste Wahl. Alternative: Falls nicht, ginge auch noch noop sehr gut: |
In /etc/rc.local diese beiden Zeilen über der Zeile exit 0 einfügen: echo deadline > /sys/block/sda/queue/scheduler echo 1 > /sys/block/sda/queue/iosched/fifo_batch |
alternativ in /etc/rc.local diese Zeile über der Zeile exit 0 einfügen: echo noop > /sys/block/sda/queue/scheduler |
Caches nach tmp verlegenBrowser-Profile in die Ramdisk verlegenDie Browserprofile von chromium, firefox, opera usw. kann man leicht in die Ramdisk verlegenund mit rsync auf die SSD backupen. Das macht die Browser zum einen schneller, zum anderen spart es Schreibzugriffe auf die SSD. Im AUR gibt es verschiedene Packete, die das automatisieren, zum Beispiel den profile-sync-daemon. Ad Hoc für Ungeduldige: Caches nach tmp verlegen | |
Vermutlich hat die folgende Lösung mehr als einen Pferdefuß, ich hatte es nun einfach eilig: mv .cache ._cache;ln -s /tmp .cache mv .thumbnails/ ._thumbnails;ln -s /tmp .thumbnails mv .opera/thumbnails/ .opera/_thumbnails;ln -s /tmp .opera/thumbnails |
Ich mochte dann doch schnell ans Ziel gelangen und beschäftige mich mit dem profile-sync-daemon dann später. |
Firefox cache | |
Im Firefox about:config öffnen. Rechtsklick in einem leeren Bereich und dann "New" und "string value" auswählen. Die soll browser.cache.disk.parent_directory heissen. Als value dann /tmp oder auch /tmp/firefox-cache eingeben. |
Firefox legt seinen Cache ins $HOME-Verzeichnis. Wenn man den in die Ramdisk verlegt, macht das den Browser zum einen schneller, zum anderen spart es Schreibzugriffe auf die SSD. |
Neustart
Das alles funktioniert erst nach einem Neustart, Quellen
| |
Anhang | |
Die komplette fdisk-Sessionroot@ostend:~# sudo fdisk -H 255 -S 63 /dev/sda Befehl (m für Hilfe): o Building a new DOS disklabel with disk identifier 0x34582742. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warnung: Schreiben wird ungültiges Flag 0x0000 in Part.-tabelle 4 korrigieren Befehl (m für Hilfe): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p Partitionsnummer (1-4, Vorgabe: 1): Benutze den Standardwert 1 Erster Sektor (2048-234441647, Vorgabe: 2048): Benutze den Standardwert 2048 Last Sektor, +Sektoren or +size{K,M,G} (2048-234441647, Vorgabe: 234441647): +10G Befehl (m für Hilfe): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): Using default response p Partitionsnummer (1-4, Vorgabe: 2): Benutze den Standardwert 2 Erster Sektor (20973568-234441647, Vorgabe: 20973568): +10G Wert außerhalb des Bereichs. Erster Sektor (20973568-234441647, Vorgabe: 20973568): Benutze den Standardwert 20973568 Last Sektor, +Sektoren or +size{K,M,G} (20973568-234441647, Vorgabe: 234441647): +10G Befehl (m für Hilfe): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): Using default response p Partitionsnummer (1-4, Vorgabe: 3): Benutze den Standardwert 3 Erster Sektor (41945088-234441647, Vorgabe: 41945088): Benutze den Standardwert 41945088 Last Sektor, +Sektoren or +size{K,M,G} (41945088-234441647, Vorgabe: 234441647): +30G Befehl (m für Hilfe): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended Select (default e): e Partition 4 ausgewählt Erster Sektor (104859648-234441647, Vorgabe: 104859648): Benutze den Standardwert 104859648 Last Sektor, +Sektoren or +size{K,M,G} (104859648-234441647, Vorgabe: 234441647): Benutze den Standardwert 234441647 Befehl (m für Hilfe): n All primary partitions are in use Adding logical partition 5 Erster Sektor (104861696-234441647, Vorgabe: 104861696): Benutze den Standardwert 104861696 Last Sektor, +Sektoren or +size{K,M,G} (104861696-234441647, Vorgabe: 234441647): +4G Befehl (m für Hilfe): n All primary partitions are in use Adding logical partition 6 Erster Sektor (113252352-234441647, Vorgabe: 113252352): Benutze den Standardwert 113252352 Last Sektor, +Sektoren or +size{K,M,G} (113252352-234441647, Vorgabe: 234441647): +10G Befehl (m für Hilfe): n All primary partitions are in use Adding logical partition 7 Erster Sektor (134225920-234441647, Vorgabe: 134225920): Benutze den Standardwert 134225920 Last Sektor, +Sektoren or +size{K,M,G} (134225920-234441647, Vorgabe: 234441647): Benutze den Standardwert 234441647 Befehl (m für Hilfe): t Partitionsnummer (1-7): 5 Hex code (L um eine Liste anzuzeigen): 82 Der Dateisystemtyp der Partition 5 ist nun 82 (Linux Swap / Solaris) Befehl (m für Hilfe): t Partitionsnummer (1-7): 3 Hex code (L um eine Liste anzuzeigen): 7 Der Dateisystemtyp der Partition 3 ist nun 7 (HPFS/NTFS/exFAT) Befehl (m für Hilfe): p Disk /dev/sda: 120.0 GB, 120034123776 bytes 255 Köpfe, 63 Sektoren/Spur, 14593 Zylinder, zusammen 234441648 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x34582742 Gerät boot. Anfang Ende Blöcke Id System /dev/sda1 2048 20973567 10485760 83 Linux /dev/sda2 20973568 41945087 10485760 83 Linux /dev/sda3 41945088 104859647 31457280 7 HPFS/NTFS/exFAT /dev/sda4 104859648 234441647 64791000 5 Erweiterte /dev/sda5 104861696 113250303 4194304 82 Linux Swap / Solaris /dev/sda6 113252352 134223871 10485760 83 Linux /dev/sda7 134225920 234441647 50107864 83 Linux Befehl (m für Hilfe): w |
|