Linux – SSD – TRIM aktivieren – dm-crypt, lvm, ext4, grub

Letztens habe ich meinem Media-PC eine 64 GB SSD spendiert. Bekanntlich ist bei SSDs eine gute Garbage Collection und/oder TRIM vonnöten – sonst kann es zu Performanceverlusten und zu einer verkürzten Lebensdauer kommen!

Hintergrund: Das Dateisystem streicht „gelöschte“ Dateien nur aus dem Inhaltsverzeichnis, die eigentliche Datei aber bleibt weiter gespeichert. Nach einiger Zeit der Nutzung ist damit jeder Bereich des Laufwerks mit entweder aktuellen, oder noch nicht tatsächlich gelöschten Inhalten belegt. Bei Festplatten war das kein Problem, da sie ihre Magnetisierungszustände direkt ineinander übergehen lassen können. Flashspeicher hingegen müssen die noch gefüllten Flashzellen erst leeren, um sie im zweiten Durchgang mit der neuen Datei zu beschreiben. Diese doppelte Arbeit ist anhand einer dann bis zu doppelt so langen Schreibzeit nachvollziehbar.

Quelle: Wikipedia.de – Solid-State-Drive – Performanceverluste

Die Crucial m4 hat zwar eine gute Garbage Collection, aber ich habe bereits unter Mac OS X mit aktiviertem TRIM bessere Benchmarkergebnisse erzielen können als ohne. Daher wollte ich auf meinem Arch Linux HTPC auch Trim aktivieren.Crucial SSD Logo - Linux - SSD - TRIM aktivieren - dm-crypt, lvm, ext4, grub

Grundsätzlich unterstützt Linux zwei Arten des Discards [TRIM] (discard = verwerfen):

  • Batched Discard – Der Befehl fstrim /mnt/point/ weist das Dateisystem an, ungenutzte Bereiche zu suchen und diese dem Controller der SSD zu melden. Dieser Befehl muss sporadisch und manuell vom Anwender ausgeführt werden.
  • Online Discard – Der Kernel informiert das Laufwerk sofort, wenn Speicherbereiche durch Löschen von Dateien frei werden. Diese Funktion ist von Haus aus deaktiviert und muss vom Anwender in /etc/fstab mit der Option -o discard eingeschaltet werden.

Quelle: wiki.ubuntuusers.de – SSD

Allerdings wird Online Discard nicht gerade empfohlen, aufgrund der zahlreichen TRIM-Befehle kann auch hier die Leistung bzw. Haltbarkeit der SSD einbrechen! Daher sollte man Batched Discard verwenden, diesen kann man automatisiert per Crontab ausführen.

Damit die TRIM-Befehle korrekt bei der SSD ankommen Linux – SSD – TRIM aktivieren – dm-crypt, lvm, ext4, grub weiterlesen

Arch Linux – Installation mit verschlüsseltem LVM

Schon vor einem Jahr war ich von Arch Linux absolut begeistert als ich mein NAS mit diesem Linux-Derivat aufsetzte. Durch die Arch Linux Install-HowTo von Voku (suckup_de) ist die Liebe zu dieser Distribution wieder neu entfacht! Mit diesem Artikel möchte ich Voku’s Arch Howto um ein verschlüsseltes Logical Volume (/, /home & swap) erweitern.

linux archlinux logo - Arch Linux - Installation mit verschlüsseltem LVM
Partitionierung

Nach dem Punkt 2die Shell“ werden wir erstmal die gewünschte Festplatte mit „fdisk“ partitionieren, in meinem Fall „/dev/sda„.

Ich habe …

/dev/sda1 – 100 MB – für /boot
/dev/sda2 – den Rest – für LVM

… geplant.

fdisk -l /dev/sda

Platte /dev/sda: 320.1 GByte, 320072933376 Byte
255 Köpfe, 63 Sektoren/Spur, 38913 Zylinder, zusammen 625142448 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
Disk identifier: 0x54eb3fb7

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sda1   *          63      224909      112423+  83  Linux
/dev/sda2          224910   625137344   312456217+  83  Linux

Verschlüsselung

Aus Sicherheitsgründen ist empfehlenswert die Partition ein mal mit Zufallszahlen zu überschreiben, vor allen Dingen, wenn auf dieser vorher unverschlüsselte Daten gespeichert waren. Ansonsten sind unter Umständen viele Dateien nach dem Verschlüsseln noch auslesbar. (http://wiki.ubuntuusers.de/LUKS#Erstellen)

shred -vz /dev/sda2“ löscht /dev/sda2 – 3 mal mit Zufallswerten und 1 mal mit Nullen

Jetzt laden wir das benötigte Kernel-Modul für unsere Verschlüsselung, …

modprobe dm-crypt

… im Anschluss verschlüsseln wir unser /dev/sda2 und legen das gewünschte Entschlüsselungspasswort fest, …

cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2

… mit …

cryptsetup luksOpen /dev/sda2 lvm

… öffnen wir die verschlüsselte Partition und mounten diese nach /dev/mapper/lvm.
Logical Volume Manager

Nachdem wir die Verschlüsselung angelegt haben, müssen wir nun das LVM erstellen
Arch Linux – Installation mit verschlüsseltem LVM weiterlesen

Ubuntu/Debian – Kernel: 2.6.32.3 – Loop-AES selber kompilieren

Nach meinem Kernelupdate auf Version 2.6.32.3 wollte ich ganz normal, wie in der alten HowTo beschrieben, loop-AES kompilieren. Jedoch lief bereits das Kompilieren von util-linux-2.12r auf Fehler.

cc -c -O2 -fomit-frame-pointer -I../lib -Wall -Wmissing-prototypes -Wstrict-prototypes -DNCH=1   -D_FILE_OFFSET_BITS=64 -DSBINDIR=\"/sbin\" -DUSRSBINDIR=\"/usr/sbin\" -DLOGDIR=\"/var/log\" -DVARPATH=\"/var\" -DLOCALEDIR=\"/usr/share/locale\" -O2 fsck.cramfs.c -o fsck.cramfs.o
fsck.cramfs.c:79:22: error: asm/page.h: No such file or directory
fsck.cramfs.c: In function ‘romfs_read’:
fsck.cramfs.c:144: warning: ignoring return value of ‘read’, declared with attribute warn_unused_result
fsck.cramfs.c: In function ‘do_symlink’:
fsck.cramfs.c:274: warning: ignoring return value of ‘symlink’, declared with attribute warn_unused_result
fsck.cramfs.c: In function ‘do_uncompress’:
fsck.cramfs.c:361: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result
fsck.cramfs.c: In function ‘main’:
fsck.cramfs.c:532: warning: ignoring return value of ‘read’, declared with attribute warn_unused_result
make[1]: *** [fsck.cramfs.o] Fehler 1
make[1]: Verlasse Verzeichnis '/usr/src/util-linux-2.12r/disk-utils'
make: *** [all] Fehler 1

Um dieses Problem schnellstmöglich zu umgehen habe ich mich für die util-linux Alternative util-linux-ng entschieden. Kurz und knapp nochmal die veränderte HowTo: Ubuntu/Debian – Kernel: 2.6.32.3 – Loop-AES selber kompilieren weiterlesen

Ubuntu/Debian – Loop-AES selber kompilieren

In einem älteren Artikel haben wir uns die veraltete loop-aes-source aus dem Debian-Repository beschafft. Diesmal werden wir uns die aktuellste Source vom Entwickler direkt holen und diese auf unserem Debian Lenny selbst kompilieren.

UPDATE: …funktioniert auch mit Ubuntu!

ACHTUNG: Wichtig ist das, dass Modul loop vorhanden ist. Bei manchen Distributionen ist loop direkt im Kernel kompiliert (CONFIG_BLK_DEV_LOOP=y) oder garnicht (CONFIG_BLK_DEV_LOOP=n), es muss aber als Modul vorhanden sein (CONFIG_BLK_DEV_LOOP=m) damit loop-AES dieses anpassen kann. Zum Kernel kompilieren kann mein Artikel oder die Ubuntuusers Wiki zu Rat gezogen werden.

Zuerst installieren wir uns ein wenig Kernelzubehör.

aptitude install linux-headers-`uname -r` make gcc bzip2

Jetzt holen wir uns die Source von util-linux und loop-AES. Ubuntu/Debian – Loop-AES selber kompilieren weiterlesen

Ubuntu/Debian – Loop-AES einrichten

linux happytux - Ubuntu/Debian - Loop-AES einrichtenEigentlich wollte ich euch einen Artikel über die Erstellung eines Software-RAID’s unter Debian schreiben, aber das wäre ein sinnloses Unterfangen gewesen. Dem Wiki-Eintrag bei ubuntuusers.de gibt es nämlich nichts mehr hinzuzufügen. Daher habe ich mich entschlossen euch „Loop-AES“ etwas näher zu bringen, die AES-Verschlüssung sollte jedem von Euch ein Begriff sein. Was aber macht Loop-AES? Loop-AES erzeugt ein neues „loop“-Device, was euch beim ISO-Image mounten unter Linux schon ein Begriff sein könnte. Dieses Loop-Device wird zwischen dem eigentlichen Device und dem Mountpunkt gehangen.

losetup -a
/dev/loop0: [000d]:3313 (/dev/md0) encryption=AES256
grep loop /etc/fstab
/dev/md0        /media/fooooo   ext3    defaults,loop=/dev/loop0,encryption=AES256,noauto      0       0

Das Loop-Device verschlüsselt die Daten mit AES256 bevor diese auf das eigentliche Device geschrieben werden, je nach Einstellungen natürlich auch mit einer anderen Bit-Zahl. Loop-AES kann nicht nur Block-Devices verschlüsseln sondern auch Container die zum Beispiel mit „dd“ erstellt werden können. Es gibt für Linux viele verschiedene Verschlüsselungsmöglichkeiten : Truecrypt, DM-Crypt, Loop-AES, Cryptsetup etc., warum ich mich für Loop-AES entschieden habe kann ich euch nicht sagen. Eine kleine HowTo möchte euch dennoch nicht vorenthalten:

Ubuntu/Debian – Loop-AES einrichten weiterlesen