Wie kann ich einen dedicated Server in eine VM transferieren?

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
bumer
Beiträge: 238
Registriert: 02.07.2014 12:29:15

Wie kann ich einen dedicated Server in eine VM transferieren?

Beitrag von bumer » 02.12.2020 14:42:11

Hallo liebe Community,

ich habe folgendes Problem: Wir haben einen dedicated (bare metal) Hardware-Server bei Hetzner stehen auf dem wir keinen direkten physischen Zugriff haben. Nun möchte ich jegliche Daten und Anwendungen, die sich auf diesem Server befinden, in eine VM transferieren und diese auf einem KVM-Host laufen lassen.

Warum ich die Anwendung nicht direkt in der VM installiere? Die Installation dieser Anwendung (Perl-Zeugs mit Apache Web-Server, läuft seit ca. 10 Jahren auf dem gleichen Server) ist so aufwendig, dass man eher was kaputt machen würde. Also traut sich da keiner ran. Jetzt muss aber umgezogen werden und aus diesem Grund muss irgendein smarter Workaround her.

Ich dachte daran alle Perl-und Apache-Dienste auszuschalten und die Festplatte per 'dd' über Netzwerk zu transferieren - das Problem ist aber, dass der Ziel-KVM-Host weniger Speicherplatz hat, als die 'sda' vom Hetzner-Server (letztendlich wird aber weniger Speicher genutzt, als verfügbar ist, 'sda' ist einfach überdimensioniert) groß ist.

Die zweite Möglichkeit wäre auf der KVM die gleichen Pakete mit exakt den gleichen Versionsnummern (laut 'dpkg --list') zu installieren, alle Dienste auf dem Hetzner-Server auszuschalten (um die Daten konsistent zu halten) und /etc, /var/, /usr und alles was von Bedeutung ist vom Hetzner-Server in einen Tarball zu packen und einfach auf der KVM zu entpacken. Natürlich könnte ich das auch per Rsync machen, aber das Prinzip ist mehr oder weniger das gleiche.

Was haltet ihr von der letzten Idee?
Habt ihr evtl. noch andere Idee?
Wie würdet ihr mit so einer Aufgabe verfahren?

Viele Grüße und vielen lieben Dank im Voraus,
bumer

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Wie kann ich einen dedicated Server in eine VM transferieren?

Beitrag von heisenberg » 02.12.2020 15:14:57

Ich habe das sehr oft getan. Im Wesentlichen habe ich alle Dienste angehalten und komplett alle Dateien auf leere Dateisysteme kopiert und anschließend die notwendigen Anpassungen vorgenommen. Das hat bis auf wenige Ausnahmen mit kniffeligen Fehlern sehr gut geklappt. Mit dd habe ich das auch selten mal gemacht, aber dass war - so meine ich mich zu erinnern - deutlich langsamer. (bei rsync kopiert man ja nur belegte Daten, bei dd alles). dd ging aber auch.

Ich habe dafür 2 Methoden:
  1. mit einfachem rsync
  2. mit lsyncd
zu a) Ablauf mit einfachem rsync
  • ggf. DNS-TTL heruntersetzen.
  • Dateisysteme des Quellsystems untersuchen(Bei alten Systemen sollte man besonders die Inode Size(-> tune2fs -l) auf dem neuen System identisch übernehmen (bei alten systemen war das ab und an noch "128". Kann sein, dass das neue System nicht hochfährt, wenn dass mit einer größeren Inode-Size angelegt wird, was bei neueren Versionen von mkfs automatisch der Fall ist)
  • Ziel-VM mit rescue hochfahren. Festplatte partitionieren und formatieren(am besten identisch wie auf dem Quellsystem)
  • Einmal einen rsync (mit -aH ! ) synchronsieren
  • Nach dem der erste rsync fertig ist, alle Dienste (außer ssh oder sonstiges, wonach der Server nicht mehr laufen würde) abschalten
  • Noch einen rsync (mit -aH ! ) durchführen
  • Anpassungen vornehmen(fstab,grub,netzwerkkonfig)
  • grub installieren
  • Rescue auf der neuen VM herunterfahren und installiertes System hochfahren(da das alte System in diesem Fall eine andere IP hat, muss man die nicht herunterfahren).
  • Falls das neue System nicht erreichbar ist, nochmal mit einer KVM-Konsole schauen, woran es hakt(Netzwerkkonfig nicht geladen? Boot failed(root-fs nicht gefunden? ...)
zu a) Ablauf mit lsyncd

lsyncd ist rsync kombiniert mit der Funktionalität von inotify. D. h. alle Dateien, die sich ändern, werden kontinuierlich nachsynchronisiert. Der Vorteil ist, dass die Downtime geringer ist, da die Nachsynchronisation der Dateien nach abschalten der Dienste schneller durchläuft.

Der Ablauf ist ähnlich der vorigen Methode. Der Unterschied ist, dass es kein vorher-/nachher-rsync gibt, sondern, dass nur der lsyncd gestartet wird auf dem Quellsystem und nach dem Dienste-herunterfahren gewartet wird, bis die Daten fertig nachsynchronisiert sind. Die Anpassungen können auch bereits unmittelbar vor abschalten der Dienste vorgenommen werden, da die betreffenden Konfigurationsdateien ja mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Quellsystem nicht mehr geändert werden.
Zuletzt geändert von heisenberg am 05.12.2020 22:43:11, insgesamt 3-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

pixelpirat
Beiträge: 158
Registriert: 05.07.2007 17:22:21

Re: Wie kann ich einen dedicated Server in eine VM transferieren?

Beitrag von pixelpirat » 05.12.2020 22:07:32

Ich habe es mit rsync ganauso gemacht wie @Heisenberg es beschrieben hat. :THX:
Funktionierte einwandfrei. Den Tipp mit lsync muss ich mir mal genauer anschauen. Scheint ein interessantes Tool zu sein. :idea: :D

bumer
Beiträge: 238
Registriert: 02.07.2014 12:29:15

Re: Wie kann ich einen dedicated Server in eine VM transferieren?

Beitrag von bumer » 11.12.2020 14:03:31

@heisenberg - danke, habe es genau so gemacht und alles hat wunderbar funktioniert. Besonders der Tipp mit den Inodes-Sizes war sehr hilfreich, danke :)

etron770
Beiträge: 197
Registriert: 28.01.2016 16:56:58

Re: Wie kann ich einen dedicated Server in eine VM transferieren?

Beitrag von etron770 » 29.06.2022 09:42:43

heisenberg hat geschrieben: ↑ zum Beitrag ↑
02.12.2020 15:14:57
[*] Ziel-VM mit rescue hochfahren. Festplatte partitionieren und formatieren(am besten identisch wie auf dem Quellsystem)
Die alten LXC Container sind aber ext4 und die VMs sollten btrfs werden.

Kann das dann auch noch klappen?

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Wie kann ich einen dedicated Server in eine VM transferieren?

Beitrag von heisenberg » 29.06.2022 12:37:49

Das dürfte genauso klappen.

Im Zweifelsfall vorher mit einem Testsystem ausprobieren.

Ein Aspekt, der die Sache deutlich verzögert ist, wenn sehr große Dateien im Spiel sind, die sich häufig ändern, wie sehr große Datenbanken oder VM-Dateien.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten