Debian auf SSD umziehen
Durch den anhaltenden Preisverfall ist der Gedanke naheliegend, auch bei Systemen, die nicht direkt als Arbeitsplatz-Rechner im Einsatz sind, die konventionelle HD durch eine SSD zu ersetzen. Ein typischer Kandidat hierfür ist zum Beispiel ein in der Ecke stehender VDR, der seine Bootzeit nicht nur auf unter 10 Sekunden (inklusive BIOS und GRUB) verkürzt, sondern mit SSD auch so gut wie geräuschlos arbeitet.
Als Windows-orientierter Anwender schwirren bei der Umzugsplanung zunächst Begriffe wie “Disk-Imager” und ähnliches durch den Kopf, unter Linux reichen - wie so oft - in der Regel Bordmittel.
Als erstes sollte geklärt werden, wie groß die benötigte SSD mindestens sein muß. Die Ausgabe von “df -h” liefert den zur Zeit belegten Festplattenplatz, der mit 4,2GB so gering ausfällt, daß selbst eine 60GB SSD vollkommen überdimensioniert scheint.
root@vdr:~# df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
rootfs 143G 4,2G 132G 4% /
udev 10M 0 10M 0% /dev
tmpfs 203M 324K 203M 1% /run
/dev/disk/by-uuid/dcb30b21-2bd8-465b-8e45-f8d7d6c50560 143G 4,2G 132G 4% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1,2G 0 1,2G 0% /run/shm
Die SSD wird zunächst als zweite Platte ins System eingebaut und “fdisk” schafft Klarheit über die Verhältnisse:
root@vdr:~# fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
...
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 304205823 152101888 83 Linux
/dev/sda2 304207870 312580095 4186113 5 Extended
/dev/sda5 304207872 312580095 4186112 82 Linux swap / Solaris
Disk /dev/sdb: 60.0 GB, 60022480896 bytes
...
Device Boot Start End Blocks Id System
Wie der Ausgabe zu entnehmen ist die HD eine 160GB-Platte, unter “/dev/sda” zu erreichen, die SSD ist eine 60GB-Platte, die als “/dev/sdb” zur Verfügung steht. Insgesamt wurden auf der HD 2 Partitionen angelegt: eine Linux-Partition für Betriebssystem und Daten sowie eine SWAP-Partition.
Im nächsten Schritt kann nun die SSD analog zur HD aufgeteilt werden, das passende Werkzeug hierfür ist wiederum “fdisk”. Beim Anlegen der Systempartition sollte daran gedacht werden, das “Boot”-Flag für diese Partition zu setzen.
root@vdr:~# fdisk -l /dev/sdb
Disk /dev/sdb: 60.0 GB, 60022480896 bytes
...
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 83888127 41943040 83 Linux
/dev/sdb2 83888128 100665343 8388608 82 Linux swap / Solaris
Ob hierbei die ursprüngliche Partitionierung mit einer primären und einer erweiterten Partition plus logischem Laufwerk beibehalten oder auf zwei primäre Partitionen geändert wird, spielt für den Umzug keine Rolle.
Nach dem Anlegen der Partitionen werden die Dateisysteme erzeugt, was von “mkfs.ext4” bzw. “mkswap” erledigt wird:
root@vdr:~# mkfs.ext4 /dev/sdb1
...
Platz für Gruppentabellen wird angefordert: erledigt
Inode-Tabellen werden geschrieben: erledigt
Erstelle Journal (32768 Blöcke): erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
root@vdr:~# mkswap /dev/sdb2
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=f5dbddec-78e4-452d-96b3-c304a056d4db
Nach dem Erstellen der Dateisysteme wird ein Verzeichnis angelegt und die Systempartition der SSD in dieses Verzeichnis eingebunden. Anschließend wird mittels “rsync” der Inhalt der HD auf die SSD kopiert. Wichtig ist der Parameter “one-file-system”, der dafür sorgt, daß sich rsync nicht im soeben angelegten Ordner in einer Endlosschleife verrennt.
root@vdr:~# mkdir /mnt/ssd
root@vdr:~# mount /dev/sdb1 /mnt/ssd
root@vdr:~# rsync -av --one-file-system / /mnt/ssd
Im nächsten Schritt muß die Datei “/etc/fstab” für die SSD angepasst werden. Während “früher” die einzelnen Partitionen als “/dev/sdb1” etc angesprochen wurden, werden in neueren Systemen die UUIDs verwendet.
root@vdr:~# blkid
/dev/sda5: UUID="3d134e82-5338-4876-9a01-589259eb1569" TYPE="swap"
/dev/sda1: UUID="dcb30b21-2bd8-465b-8e45-f8d7d6c50560" TYPE="ext4"
/dev/sdb1: UUID="87111054-e9dc-4208-af1d-36657c13da4c" TYPE="ext4"
/dev/sdb2: UUID="f5dbddec-78e4-452d-96b3-c304a056d4db" TYPE="swap"
Eine Liste der im System vorhandenen UUIDs kann mittels des Befehls “blkid” ermittelt werden, anschließend sind in der Datei “/mnt/ssd/etc/fstab” die UUIDs anzupassen, d.h. alle Einträge der UUID “3d134e82-5338-4876-9a01-589259eb1569” durch “f5dbddec-78e4-452d-96b3-c304a056d4db” und alle einträge der UUID “dcb30b21-2bd8-465b-8e45-f8d7d6c50560” durch “87111054-e9dc-4208-af1d-36657c13da4c” zu ersetzen.
root@vdr:~# vi /mnt/ssd/etc/fstab
Damit letztendlich von der Platte gestartet werden kann, muß noch der Bootloader “GRUB” entsprechend eingerichtet werden.
Hierzu wird mittels “chroot” das Rootverzeichnis temporär geändert und GRUB auf der SSD installiert. Wichtig ist, vor der Installation die Datei “/boot/grub/grub.cfg” anzupassen, hier müssen analog zur fstab die UUIDs ersetzt werden.
root@vdr:~# mount --bind /dev /mnt/ssd/dev
root@vdr:~# mount --bind /proc /mnt/ssd/proc
root@vdr:~# chroot /mnt/ssd
root@vdr:/# vi /boot/grub/grub.cfg
root@vdr:/# grub-install /dev/sdb
Installation finished. No error reported.
root@vdr:/# exit
exit
Nach dem Verlassen des chroots mittels “exit” kann das System heruntergefahren und die HD abgeklemmt werden. Das System sollte nun von der SSD starten.
Nach erfolgtem Systemstart sind noch zwei Parameter in der Datei “/etc/fstab” hinzuzufügen, die sich hoffentlich positiv auf die Performance und Lebensdauer der SSD auswirken: “discard” sowie “relatime”. “discard” sorgt dafür, daß die SSD mit Hilfe des TRIM-Kommandos nicht mehr genutzte Speicherblöcke effektiver zu verwalten, “relatime” ist die sinnvolle Alternative zummeist vorgeschlagenen “noatime”.
...
UUID=87111054-e9dc-4208-af1d-36657c13da4c / ext4 discard,relatime,errors=remount-ro 0 1
UUID=f5dbddec-78e4-452d-96b3-c304a056d4db none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
...
hab da so meine bedenken eine ssd als Server platte einzusetzen. (Homeserver) mit einigen gsm modems dran die abfrage läuft alle 10 sek von usb Port in die mysql datenbank lg
am einfachsten bei einer Neuinstallation schon trennen. Ansonsten kann durch Anpassen der MySQL-Konfiguration (Datei “my.cnf” in “/etc/mysql”) das Datadir auf ein beliebiges anderes Verzeichnis umgebogen werden.