Sonntag, 7. Juli 2013
Auf Grund eines längeren Ausfalls meines Servers (Gründe: Netzteil des Cablemodems ist gestorben, Switch auf Grund eines Wackelkontaktes des Netzteils ohne Strom) war ich heute im Elternhaus. Aus gegebenem Anlass habe ich mich entschieden, die Debian-Installation von einer Samsung HD161GJ (160GB) auf eine hier unbenutzt herumliegende 128GB SSD–Festplatte (Crucial M4-CT128M4SSD2) zu migrieren.
Nachfolgend eine Schritt-für-Schritt-Anleitung, wie dieses Vorhaben in möglichst kurzer Zeit bewerkstelligt werden kann.
Grob (für Profis)
- Zweite Festplatte an Server anschliessen (SATA oder via USB-Adapter)
- SSD-Festplatte partitionieren (bei mir: /boot, Swap und / (root))
- SSD-Partitionen formatieren (mkfs.ext4, mkswap)
- Partitionen mounten
- Mittels rsync alle Nutzdaten von den System-Partitionen auf die SSD-Partionen verschieben
- Die UUIDs in /etc/fstab der SSD-Festplatte anpassen
- grub-install auf die SSD-Festplatte
- Herunterfahren
- Ehemalige System-Platte vom System trennen
- Neu starten
- BIOS anpassen
- grub rescue überreden, von der SSD-Festplatte zu starten, obwohl die UUIDs nicht mehr stimmen
- update-grub ausführen
Detailliert (für Anfänger/Erfahrene)
Partitionierung
Nachdem die Festplatte erfolgreich an den SATA-Bus angeschlossen worden ist, sollte sie sowohl unter /var/log/messages als auch mittels fdisk -l aufgelistet werden. Den von dort übernommenen Device-Namen (in meinem Fall: /dev/sdd) verwendet man, um das Partitionierungstool fdisk zu starten:
# fdisk /dev/sdd
Ich habe mir zuerst eine primäre Partition für /boot erstellt (p, 1024MB) und die Partition bootbar gemacht (a). Anschliessend habe ich eine erweiterte Partition erstellt, in welcher ich einerseits eine Swap-Partition erstellt habe (Typ 82, 1024MB — so gross wie der verfügbare RAM-Speicher) als auch die root-Partition.
Ganz wichtig ist, alle Änderungen am Schluss mittels w auch effektiv auf die SSD zu schreiben.
Formatierung
Die Formatierung ist schnell erledigt. Mittels mkfs.ext4 formatiert man die /boot-Partition:
# mkfs.ext4 /dev/sdd1
… als auch die / (root)-Partition:
# mkfs.ext4 /dev/sdd6
Mittels mkswap formatiert man die Swap-Partition:
# mkswap /dev/sdd5
Mounten
Solange man die /etc/fstab-Einträge noch nicht umgebogen hat, müssen /boot und / (root) manuell gemountet werden:
# mount /dev/sdd1 /mnt/neu/boot
# mount /dev/sdd6 /mnt/neu/root
Der Filesystem-Typ wird automatisch erkannt.
Filesystem klonen
Die beiden Partitionen klont man folgendermassen:
# cd /
# rsync -av --one-file-system . /mnt/neu/root
# cd /boot
# rsync -av --one-file-system . /mnt/neu/boot
fstab
Die fstab-Datei muss auf der neuen / (root)-Partition angepasst werden. Die Festplatten sollte man heutzutage mit den UUIDs ansprechen. Die UUIDs findet man mit dem Befehl blkid heraus:
...
/dev/sdd1: UUID="3993c6e2-de5c-4227-9cae-637bbfc820b7" TYPE="ext4"
/dev/sdd5: UUID="79c00de9-06a7-41e5-a470-641b5f68b909" TYPE="swap"
/dev/sdd6: UUID="9672eb79-b6da-4192-a507-45de2662af2d" TYPE="ext4"
...
Die Partitionen definiert man basierend darauf folgendermassen in /etc/fstab:
...
#/etc/fstab: static file system information.
#
#
UUID=3993c6e2-de5c-4227-9cae-637bbfc820b7 /boot ext4 discard,noatime,errors=remount-ro 0 2
UUID=79c00de9-06a7-41e5-a470-641b5f68b909 none swap sw 0 0
UUID=9672eb79-b6da-4192-a507-45de2662af2d / ext4 discard,noatime,errors=remount-ro 0 1
...
Gemäss SSD-Fetischisten sind die Optionen discard,noatime unendlich wichtig, um die Lebensdauer der SSD-Festplatte von 19 auf 19.1 Jahre zu erhöhen … Randbemerkung: Die SSD-Optimierer erscheinen mir ähnlich suspekt wie die Idioten, welche bei jedem Mac-Problem erst einmal raten, Repair Permissions durchzuführen (Richtigstellung: Seriously, ‘Repair Permissions’ Is Voodoo).
grub installieren
Mittels folgendem Befehl wird der grub Bootloader in den MBR der neuen Festplatte geschrieben:
# grub-install /dev/sdd
ACHTUNG: Viele Web-Seiten raten in diesem Schritt, den Computer von einer Linux Live-CD zu starten, mittels chroot das Root des Systems auf die SSD-Festplatte umzubiegen sowie sys, proc und dev neu zu mounten. Wer den hier notierten Anweisungen folgt, kann sich diesen umständlichen Schritt sparen.
BIOS
In meinem Fall war im BIOS hardkodiert, dass die 160 GB-Platte von Samsung die zu bootende Festplatte war. Da diese nun fehlte, blieb das System ohne Fehlermeldung hängen. Im BIOS musste ich deshalb die SSD-Festplatte neu als Boot-Festplatte aufnehmen.
grub rescue
Da ich grub-install ausgeführt hatte, als Linux noch von der Samsung-Festplatte als Systemplatte lief, wurden die UUIDs der Partitionen dieser Festplatten in den grub-MBR der SSD-Festplatte geschrieben.
Als das BIOS den Bootloader von der SSD-Platte startete, erschien folgende Fehlermeldung auf dem Schirm:
No such Device: ad4103fa-d940-47ca-8506-301d8071d467
Mittels des Befehls ls wurden mir alle erkannten Festplatten und Partitionen angezeigt. Nachdem ich die System-Festplatte in der grub-Nomenklatur ausgemacht hatte, konnte ich grub mitteilen, wie es zu starten hatte:
set prefix=(hd0,msdos0)/grub
set root=(hd0,msdos5)
insmod normal
normal
Mit diesen Angaben fand grub die Partitionen mit den benötigten Boot-Informationen und Debian startete sauber — und dank SSD blitzschnell.
grub
Da das System nun von SSD-Festplatte lief, konnte ich grub-install erneut ausführen. Dieses Mal übernahm grub die UUIDs der SSD-Partitionen, was ich mir mit update-grub bestätigen liess. Der letzte Befehl schrieb die grub-Konfiguration im Klartext in die Datei /boot/grub/grub.cfg.
Links