Klonen eines Laptops mit NVME TCP
- Kürzlich wurde ein neuer Laptop gekauft und musste für die Nutzung eingerichtet werden.
- Es bestand wenig Motivation, die bereits bekannten Schritte erneut zu wiederholen.
- Auf Vorschlag eines Kollegen wurde erwogen, die bestehende Festplatte auf den neuen Laptop zu kopieren.
Fragen zum Klonvorgang
- Es gab kein Werkzeug, um den alten Laptop zu öffnen und die neue Festplatte per USB anzuschließen.
- Es wird vollständige Festplattenverschlüsselung verwendet, und der alte Laptop nutzt 512 GB, der neue 1 TB NVME.
- Es bestand keine Vertrautheit mit dem Ändern der Größe von LUKS-Partitionen.
Vorschlag des Kollegen
- Es wurde vorgeschlagen, NVME over TCP zu verwenden, um die Festplatte über das Netzwerk freizugeben und eine vollständige Festplattenkopie durchzuführen.
- Die vorgeschlagenen Schritte waren wie folgt:
- Die Festplatte vom alten Laptop mit
nvmet-tcp exportieren.
- Die Festplattenkopie auf den neuen Laptop durchführen.
- Die Partitionen so vergrößern, dass die gesamten 1 TB genutzt werden.
- Die Größe von LUKS anpassen.
- Abschließend die Größe der BTRFS-Root-Festplatte anpassen.
Export der Festplatte über NVME TCP
- Als einfachster Weg wurde die Verwendung von
systemd-storagetm.service vorgeschlagen.
- Stattdessen wurden beide Laptops mit einer GRML-Rescue-CD gebootet und die Schritte zum Export der NVME-Festplatte mit dem Modul
nvmet-tcp durchgeführt.
Kopieren der Festplatte
- Mit dem Befehl
dd wurde die Root-Festplatte auf den neuen Laptop kopiert.
- Da der neue Laptop keinen Ethernet-Port hatte, musste ausschließlich Wi‑Fi verwendet werden; das Kopieren der gesamten 512 GB dauerte etwa siebeneinhalb Stunden.
- Die Kopiergeschwindigkeit lag bei etwa 18–20 MB/s.
Anpassen der Größe von Partitionen und LUKS-Container
- Beim Ausführen von
parted wurde erkannt, dass die Partitionstabelle nicht mit der Festplattengröße übereinstimmte, und eine Korrektur wurde vorgeschlagen.
cloud-guest-utils wurde installiert, um mit growpart die Partition auf 1 TB zu erweitern.
- Mit
cryptsetup-resize wurde die Größe des LUKS-Containers erhöht.
- Nach der Anmeldung am System wurde die Größe des BTRFS-Dateisystems angepasst.
Fazit
- Der einzige Vorteil dieses Vorgehens besteht darin, dass sich die Nutzung des neuen Laptops genauso anfühlt wie die des alten.
- Das Einrichten eines neuen Laptops dauert normalerweise 1 bis 2 Wochen, was in diesem Fall eingespart werden konnte.
- Ein zusätzlicher Vorteil besteht darin, gelernt zu haben, wie man eine Festplatte mit NVME over TCP exportiert.
Meinung von GN⁺
- Das Klonen eines Laptops mit NVME over TCP bietet eine effiziente Möglichkeit, eine bestehende Systemumgebung schnell auf neue Hardware zu übertragen.
- Für Systemadministratoren und Entwickler kann diese Technik interessant sein, weil sie Zeit spart und Einrichtungsfehler minimieren kann.
- Sie ist jedoch stark von der Netzwerkgeschwindigkeit abhängig, und wenn nur Wi‑Fi verfügbar ist, kann sie erheblich Zeit in Anspruch nehmen, was als Nachteil berücksichtigt werden sollte.
- Es gibt Werkzeuge wie Clonezilla oder Acronis mit ähnlicher Funktionalität, doch NVME over TCP bietet den besonderen Vorteil eines direkten Festplattenzugriffs über das Netzwerk.
- Für den Einsatz dieser Technik sind ausreichende Kenntnisse über Netzwerkkonfiguration, den Umgang mit verschlüsselten Festplatten und die Größenanpassung von Dateisystemen erforderlich.
1 Kommentare
Hacker-News-Kommentar
Im Szenario des Autors gibt es keinen Vorteil durch die Nutzung von NVMe/TCP. Es wird lediglich eine serielle Blockkopie mit
dddurchgeführt, sodass kein gleichzeitiges I/O genutzt wird. Die komplexen Befehle könnten einfach durchnetcatersetzt werden.$ nc -l -p 1234 | dd of=/dev/nvme0nX bs=1M$ nc x.x.x.x 1234 </dev/nvme0nXddSchreibvorgänge, was es schneller und effizienter macht. Wenn man auf Quelle/Ziel nochgzip/gunzipergänzt, geht der gesamte Vorgang deutlich schneller, sofern die Platte nicht voll ist. Das ist meine bevorzugte Methode, um PC-Images über das Netzwerk zu erstellen. Es ist sinnvoll,gzipdie Option--fastmitzugeben oder es durch das schnellerelz4/unlz4zu ersetzen. Ich habe das kürzlich verwendet, um einen neuen Windows-Laptop mit 1-TB-NVMe zu imag(en); über GigE dauerte es etwa 20 Minuten, und das resultierende Image war 20 GB groß. Normalerweise sichere ich dieseslz4-Image und stelle es Jahre später beim Spenden des Laptops mitunlz4 | ddwieder her. Sehr praktisch.nvme-tcpnicht, aber man lernt jeden Tag etwas Neues. Sein Nutzen liegt eher darin, ein Dateisystem auf entferntem NVMe zu mounten, als perddroh darauf zuzugreifen.dd bs=Xtechnisch gesehen nicht größer sein.bs=1Mschadet jedoch nicht (es puffert 64-kB-Lesevorgänge, bis 1 MB erreicht ist) und ist auch in Zukunft nutzbar, falls die Pipe-Größe erhöht wird. Einigenetcat-Versionen haben Optionen zur Steuerung der Eingabe- und Ausgabe-Blockgröße, was die Notwendigkeit vondd bs=Xverringert, aber auf Rescue-Disks findet man meist einnetcat-Binary ohne solche Optionen.Die Verwendung von
nbdkitundnbdcopyist deutlich einfacher.nbdkit file /dev/nvme0n1nbdcopy nbd://otherlaptop localfileAls ich einen neuen Laptop einrichten musste, war es nützlich, ein USB-C-Kabel zu verwenden und mit 10 Gb/s zu übertragen. Die einzige andere Option war WiFi.
rsyncmöglich. Die Verbindung schien ausgelastet zu sein, daher wäre ein anderes Protokoll sinnlos gewesen.Ich musste kürzlich etwa 200 GB an Dateien über WiFi kopieren. Ich habe
rsyncverwendet, damit ich bei einem Verbindungsabbruch nicht wieder von vorne anfangen muss, aber es dauerte trotzdem mindestens 6 Stunden. Ich frage mich, ob es eine bessere Methode gibt.dd-Methode? Sollte man die md5 der resultierenden Blockgerätedaten vergleichen?Ich verstehe nicht, warum der Autor nicht
btrfsüber das Netzwerk gepiped hat. Man erstellt zuerst einenbtrfs-Snapshot und überträgt dann mitbtrfs send => nc => network => nc => btrfs receivenur die tatsächlich verwendeten Blöcke.Bei früheren Laptop-Übertragungen habe ich auf beiden Seiten einen Installer ausgeführt, der
ddundnckombinierte. Soweit ich mich erinnere, habe ich zusätzlichgzipverwendet, um die Übertragung zu beschleunigen.Mit
Clonezillawerden nur die tatsächlich belegten Datenblöcke kopiert, und Partitionen lassen sich automatisch anpassen. Ich verwende immer diese Methode.Seit Jahrzehnten habe ich ein OS nicht mehr wirklich „installiert“, sondern kopiere einfach Dateien und passe sie bei Bedarf an. Meist nutze ich das als Gelegenheit, ein neues Dateisystem anzulegen und dabei Dateisystemtyp/-parameter (z. B. Blockgröße), Verschlüsselung usw. zu aktualisieren, und übertrage die Dateien mit
rsync.NixOSbesser. Dann kopiert man nur die Konfiguration und kann anschließend alles automatisch neu installieren.Keine Erwähnung von FDT (Fast Data Transfer).
-limit <rate>kann die Übertragung auf eine bestimmte Geschwindigkeit begrenzt werden. Als Suffixe können K (KiloBytes/s), M (MegaBytes/s) und G (GigaBytes/s) verwendet werden.