Migration zu einem Datenträger mit höherer Speicherkapazität (LUKS, LVM)
Da mir die Speicherkapazität der SSD in meinem Notebook so langsam nicht mehr reichte, entschied ich mich, mir eine etwas größere zuzulegen. Meine aktuelle SanDisk SSD Plus mit einer Speicherkapazität von 120 GB habe ich durch eine Samsung Evo 860 mit 500 GB ersetzt. Dabei war zu beachten, dass die primär genutzte Partition der SSD durch LVM verwaltet wird und die Systemdateien mittels LUKS verschlüsselt sind.
Was bei einem Wechsel zu beachten ist, bei welchem man die Eigenschaften und Daten eines kleineren Datenträgers auf einen größeren übernehmen möchte, werde ich in diesem Artikel erläutern.
Der Artikel wird sich in die folgenden Unterpunkte aufteilen:
- Sichern der Daten
- Übertragen der Daten auf neuen Datenträger
- Partition vergrößern
- Physical Volume und Logical Volume vergrößern
- Dateisystem vergrößern
Zur Vorbereitung empfehle ich, die beiden Datenträger (neu, alt) an einen von den Datenträgern unabhängigen PC anzuschließen.
Sichern der Daten
Um alles, was sich auf der aktuellen SSD befindet, auf die neue zu übertragen, habe ich zu Beginn ein Image der aktuellen SSD erstellt. Dazu habe ich folgendes Kommando ausgeführt. Dieses erstellt ein Image des Datenträgers unter /dev/sdb, welches unter /media/USB gesichert wird.
dd if=/dev/sdb of=/media/USB/T430_2018.img status=progress
Image auf neuen Datenträger übertragen
Um das eben erstellte Image nun auf den zukünftigen Datenträger aufzuspielen, wird erneut dd verwendet. In meinem Fall, befindet sich die SSD unter /dev/sdc.
dd if=/media/USB/T430_2018.img of=/dev/sdc status=progress
Partition vergrößern
Da die neue SSD über mehr Speicherplatz als die alte verfügt, musste ich nun die Partition(en) anpassen. Hier kommt das Tool „fdisk“ zum Einsatz. Mit diesem habe ich die alte Partition gelöscht und eine neue, mit der gewünschten Größe angelegt.
Um „fdisk“ zu öffnen und die Bearbeitung des neuen Datenträgers zu starten, führte ich folgendes Kommando aus:
fdisk /dev/sdc
Mit dem Kommando „p“ für print, ließ ich mir eine Übersicht der aktuellen Partitionen ausgeben.
Info: Die neue Platte wird hier mit einer Speicherkapazität von 320 (290) GB statt 512GB angezeigt. Das kommt daher, dass ich den ursprünglichen Verlauf im Terminal nicht mehr besitze und ich den Ablauf hier mit einer anderen Platte darstelle!
Die erste Partition (boot) kann hier unbeachtet bleiben. In meinem Fall musste ich die zweite Partition der SSD vergrößern. Um dies durchzuführen, muss die aktuelle Partition gelöscht werden und anschließend eine neue angelegt werden. Wichtig hierbei ist, dass die Partition, welche vergrößert wird, die letzte auf der jeweiligen Platte ist.
Zum löschen der Partition führte ich das Kommando „d“ aus.
Die Frage, welche Partition ich entfernen möchte, beantwortete ich mit „2“.
Nun musste ich eine neue Partition anlegen. Dies erledigte ich mit dem Kommando „n“.
Bei der Frage, ob es eine primäre oder erweiterte Partition werden soll, drückte ich Enter. (primär ist Standard)
Um die Standard-Partitionsnummer (2) zu wählen, drückte ich erneut Enter.
Nun folgte der eigentlich wichtige Teil. Die Auswahl der Start- und End-Sektoren der neuen Partition. Als Startsektor sollte der Sektor ausgewählt werden, welcher bei der bisherigen Partition ebenfalls der Startsektor war. Dieser wurde in der Übersicht ein paar Schritte weiter oben bereits aufgelistet. In meinem Fall stimmte der Standardwert bereits und ich drückte Enter. Bei der Auswahl des End-Sektors wählte ich ebenfalls den Standard-Wert.
Außerdem wählte ich noch aus, die LVM2 Member Signatur zu behalten.
Die neue Partition war somit erstellt! Um sicherzugehen, dass meine Einstellungen richtig übernommen wurden, ließ ich mir mit „p“ erneut die Partitionstabelle ausgeben.
Hierbei war zu sehen, dass zweite Partition statt ursprünglich 110GB nun eine Größe von 297GB hatte. Der Schritt war somit erfolgreich.
Da der Typ der neuen Partition automatisch auf „Linux“ eingestellt wurde, habe ich diesen noch manuell auf „Linux LVM“ gesetzt. Dazu benutze ich das Kommando „t“, wählte anschließend die Partition (2), und gab den Code „8e“ ein, welcher für Linux LVM steht.
Nun mussten die Einstellungen noch gespeichert werden. Dafür führte ich das Kommando „w“ (write) aus.
Die Partition war somit erfolgreich vergrößert!
Physical Volume und Logical Volume vergrößern
Info: In den folgenden Schritten wird die Platte, welche im Artikel als /dev/sdc bezeichnet wurde, unter dem Namen /dev/sdl aufgeführt.
Sofern LVM installiert ist, sollte der Rechner erkannt haben, dass sich entsprechende Partitionen auf der Platte befinden. Ich ließ mir daher die vom System erkannten Physical Volumes ausgeben.
pvs
Hier war zu erkennen, dass die Festplatte erkannt wurde, aber noch die Größe der alten Platte besitzt. Also vergrößerte ich diese.
pvresize /dev/sdl2
Nun stimmte die Größe des Physical Volumes.
Ähnliche Schritte mussten nun noch mit dem Logical Volume durchgeführt werden.
lvs
lvextend -l +100%FREE /dev/mapper/fedora-00
LVM-seitig hatte ich nun alle Schritte erledigt.
Dateisystem vergrößern
Das Dateisystem entsprach zu dem Zeitpunkt noch der Größe, welche die vorherige Festplatte hatte, von welcher das Image erstellt wurde. Daher habe ich zum Abschluss noch das Dateisystem vergrößert.
Um das Dateisystem überhaupt erst zu erreichen, öffnete ich das Volume, welches ich im letzten Schritt vergrößert habe. Dieser Schritt ist notwendig, da ich, wie anfangs erwähnt, LUKS zur Verschlüsselung nutze.
cryptsetup luksOpen /dev/mapper/fedora-00 USB
Um mir nun die Größe anzuzeigen, mountete ich ich das Volume.
mount /dev/mapper/USB /media/USB
Anschließend ließ ich mir die Größe vom Dateisystem anzeigen.
df -h
/dev/mapper/USB 105G 66G 40G 63% /media/USB
Bevor ich das Dateisystem vergrößerte, führte ich einen File System Check durch. Dafür musste das Volume wieder unmounted werden.
umount /dev/mapper/USB
e2fsck /dev/mapper/USB
Um das Dateisystem (ext4) zu vergrößern, führte ich folgendes Kommando aus.
resize2fs /dev/mapper/USB
Nun mountete ich es wieder.
mount /dev/mapper/USB /media/USB
Und ließ mir die Größe ausgeben.
df -h
/dev/mapper/USB ext4 289G 66G 224G 23% /media/USB
Erledigt! Das Dateisystem hatte nun auch eine passende Größe.
Ende
Sollten Fragen zum Artikel entstehen, bin ich gerne bereit, diese zu beantworten!
Für Verbesserungsvorschläge bin ich ebenfalls immer offen!
Nach einer ersten Sichtung kommen mir zwei Gedanken:
1. LVM mit nur einer Festplatte ist sinnloser overkill.
2. Boar wie umständlich 🙂
Ansatz:(ohne LVM => normale Partitonen)
1. Neue Platte mit LUKS-Partitionieren ( swap / boot / root / Home )
2.cd /olddrive;tar -cv *|tar -x -C /newdrive/
3. Die Uuids in fstab und crypttab und grub.conf anpassen (Befehl blkids)
4. selinux restore durchführen, sonst gibts beim Booten Fehlermeldungen.
5. Fertig
ALT:
1. Mit DD kopieren
2. Mit GPARTED vergrößern ( das kann auch LUKS )
3. Blkids prüfen
4. nach dem Boot growfs ausführen.sync.
5. fertig
Übrigens DD kann auch Progress anzeigen 😉 und PV ist ein LVM Kommando afair.
LVM nutze ich, auch mit nur einer Festplatte, da es
1. mit vielen Linux Distris standardmäßig dabei ist
2. sich super zur Online Partitionierung der einen Festplatte eignet
Deine Methode erscheint mir nicht weniger kompliziert, als die die ich gewählt habe. Zumal ich es vom Gefühl her „unordentlich“ finde, die Dateien stumpf vom einen Dateisystem in ein anderes zu kopieren.
Danke für den Tipp mit DD und der Status Option. Werde ich so direkt im Artikel ergänzen. 🙂
Grüße