Laufenden Linux-Server klonen und virtualisieren

Dann ist das deren Problem was die Server angeht, aber du hast (leider) auch keine Ahnung was ein Clone ist und wie sich das aufs Produktivsystem auswirkt. Du kannst durchaus den Server abschießen wenn du Fehler machst und wie ich bereits sagte, du beeinflusst damit die Performance und wenns blöd läuft die Verfügbarkeit. Im laufenden Produktivbetrieb würde ich das niemals machen. Viel Spaß!
 
Nein es geht nicht ums Prinzip, da nicht jede Virtualisierungslösung eine Konvertierung bietet. VMware hat so einen Converter aber auch das geht nicht völlig nahtlos. Starten der Konvertierung und irgendwann musst du Bleck herunter und VM hoch fahren. Aus Erfahrung kann ich dir sagen, dass Datenbanken und Linux und der VMware Converter Glückssache sein können.

Warum du als Programmierer den Job eines Admins machst will ich gar nicht wissen aber vermutlich warst du einfach der Dienstleister mit dem billigsten Angebot :rolleyes:

Anstatt die komplette VM zu klonen/migrieren würde ich die Dienste umziehen. Das lässt sich ggf. schneller/besser realisieren.
Wenn es sich wirklich um eine DB wie z.B. mariadb oder mysql handelt könntest du zwischen Blech und neuer VM einen Cluster einrichten. Musst natürlich vorher testen ob du eine bestehende Instanz zu einem Cluster umwandeln kannst. Falls ja: Cluster einrichten, jetzige IP des Systems zur virtual (floating) IP des Clusters ändern wobei auch das schon eine kurze Dienstunterbrechung von ein paar Sekunden bringen kann aber natürlich testest du dies vorher als gewissenhafter Dienstleister. Wenn der Zugriff über die Cluster-IP funktioniert und die Replication zur neuen VM steht machst einen klassischen Failover und die VM wird der neue Master. Dann wieder den Cluster "zurück bauen", ggf. erneute kurze Dienstunterbrechung.

Hast du außer der VM mehrere Dienste ist vermutlich pacemaker/corosync die bessere Wahl wobei du da noch irgendwie den Storage syncen musst. DRBD wäre eine Option aber nicht mehr nachträglich. Aber auch corosync/pacemaker hat beim Schwenk eine kurze Downtime.

Oder eben eine VM parallel aufsetzen mit anderer IP, Daten per rsync over ssh migrieren, Datenbank per sql-dump. Migrationszeitpunkt bzw. Fenster bestimmen und vorher regelmäßig Daten wieder syncen sodass nur noch ein kleiner Diff da ist. Wenn Migration erfolgen soll: Stopp der laufenden Dienste auf altem Server, erneuten sql-dump & rsync und wenn alles i.O. ist alten Server herunter fahren oder Netzwerk abklemmen und an neuer VM die IP des alten Servers sowie Hostname übernehmen. Lässt sich in vielen Teilen verskripten sodass man die Downtime auf vermutlich 5 Minuten oder weniger drücken kann aber es wird sie geben.

Grundsätzlich musst du dem Auftraggeber jedoch klar machen, dass man einen einzelnen physikalischen Server niemals mit zero Downtime betreiben kann und er dies einsehen muss(!). Alle anderen, die dies versprechen verkaufen ihm Luftschlösser oder machen dies nachts um 3 Uhr "heimlich" und schieben es auch andere Dinge sollte es auffallen, z.B. "Netzwerk" oder "Backup" als Ausrede.

Überlege dir einen Weg, teste diesen, schlage dies dem Auftraggeber am Ende vor, weise explizit auf kurze Unterbrechung hin und lasse dir dies schriftlich oder per Mail bestätigen.


edit: Jetzt erst gesehen, dass es nur zum testen ist und keine Migration geplant ist. Dann nimm das letzte Backup und mach eine Wiederherstellung in eine VM (ohne Netzwerkadapter). Nach Restore per Konsole die IP ändern, dann Netzwerkadapter hinzufügen/aktivieren. Gibt es kein Backup dann bleibt dir nur eine neue VM erstellen, sprich altes SUSE 11 ISO besorgen, per zypper oder rpm alle installieren Pakete im Server anzeigen lassen und auf deiner VM installieren, Daten per rsync over ssh holen und von der DB einen Dump ziehen, ebenfalls per rsync zur VM bringen, Dump importieren. Vom DB-Serverdienst Config prüfen auf welcher IP der ggf. starten will und sonstige Parameter wie hostname, permissions, etc. usw. anpassen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: SR388 und adAstra
@snaxilian
Für diesen Beitrag müsste er dir eigentlich schon etwas bezahlen. Mir wäre das wirklich peinlich. Stell dir vor, der Auftraggeber liest das alles.
 
  • Gefällt mir
Reaktionen: PHuV, SR388 und adAstra
Also zum ersten, wenn das wirklich "business" ist,dann stimmt etwas nicht. Warum soll ein Programmierer für Systembetreuung beauftragt werden? Oder hast du dich bei ihm so gut verkauft, das er glaubt da könntest das?

Per laufenden Betrieb die ganze Maschine zu klonen, wirst du eher kaum zusammen bekommen, außer das bestehende System verwendet LVs oder spezielle Filesystem wie btrfs. Dann kannst du nämlich von den Volumens einfach einen Snapshot nehmen, diese in eine Image-Datei laden und diese dann wiederrum auf eine entsprechend vorbereitete Maschine ziehen. Allerdings wäre es dann auch noch möglich, das die DB am Zielsystem nicht mehr konsistent ist.

Wenn das System nicht entsprechend konfiguriert ist, dann wirds ohne Downtime schwierig. Dann kannst du nur eine neue Vm aufsetzen, die gleiche OS Version wie am Quellserver installieren, dort alle User am besten mit gleichen UIDs wie am Quellserver anlegen, herausfinden was für Dienste am Quellserver laufen und diese dann auf dem Zielserver ebenfalls installieren, aber nicht starten. Dann alle relevanten Daten und Configfiles vom Quellserver auf den Zielserver kopieren... Aber mit Rsync unter Beibehaltung der Rechte, UIDs, GIDs, etc. Dann die Dienste am neuen Server starten. Von der DB kannst du am quellsystem einen Dump ziehen sofern möglich und am Zielserver importieren.
Alles in allem nicht trivial...
 
  • Gefällt mir
Reaktionen: snaxilian
@doktorpc Keine Sorge in meinem Beitrag ist nur das theoretische Konstrukt, wie er es fachlich dann umsetzt ist sein "Problem". Außerdem hab ich jetzt wieder eine schöne Aufgabe aus der Praxis für unsere nächsten Azubis^^
 
cc_aero schrieb:
Also zum ersten, wenn das wirklich "business" ist,dann stimmt etwas nicht. Warum soll ein Programmierer für Systembetreuung beauftragt werden? Oder hast du dich bei ihm so gut verkauft, das er glaubt da könntest das?

Das ist leider häufig so in der Branche. Die Kunden haben meist keine Ahnung und suchen eh erst IT wenn bereits alles den Bach runter gegangen ist. Für die meisten ist IT einfach auch IT. Also jeder kann angeblich alles. Ich bin mir fast sicher, der Kunde kennt nicht mal den Unterschied zwischen einem Programmierer und Integrator. Es gibt in der IT sehr viele Fachbereiche...

Wenn er sich nicht total zum Affen machen will sollte er ehrlich sagen was Sache ist. Also, er kann es nicht, ist nicht sein Gebiet. Schon deswegen sollte man hier auch jede Hilfe einstellen. Beim Clonen kann immer was schief gehen, ohne Restart gehts auch nicht wirklich (außer man zieht nur teile um) aber hier gehts wohl um einen vollständigen Clone eines permanent laufenden Produktivsystems. Würde ich verweigern im normalen Betrieb.
 
Bei deinem Download über FTP hast du absolut gar nichts gewonnen. Das wirst du nicht sinnvoll in eine neue Linux-Installation bekommen, denn du hast absolut alle Berechtigungen verloren. Du kannst mittels Rsync oder CP die Dateien mit Berechtigung und User-Zuordnung in eine Tar pipen. Dann bleibt dir wenigstens das...

Danach kannst du dir ein Suse in Virtualbox installieren, installierst alle Pakete des Orginal-Systems und entpackst die Tar nach /, passt fstab und Netzwerk an und bootest neu. Näher als so wirst du mit deinem Gefummel nicht an das Orginal-System rankommen.

nichtsdestotrotz auch in 24/7 Fertigungen können solche Maschinen mal durchgebootet werden (Mittagspause, Schichtwechsel etc.)
 
blablub1212 schrieb:
nichtsdestotrotz auch in 24/7 Fertigungen können solche Maschinen mal durchgebootet werden (Mittagspause, Schichtwechsel etc.)

Ich vermute das ist wie bei diversen Kunden die meine Firma mal betreut hat, das wird nicht gemacht weil man Angst hat das System startet erst gar nicht mehr.

Gab ja nie Updates oder Wartung und da ist das durchaus berechtigt. Anscheinend leistet man sich keine gescheite IT oder was glaubst du warum ein Programmierer hier im Forum nachfragt wie bei denen ein Clone des Servers während des Betriebes gemacht werden soll?

Ohne die volle Geschichte dahinter zu kennen, kann man sich seinen Teil dazu denken.
 
doktorpc schrieb:
Dann ist das deren Problem was die Server angeht, aber du hast (leider) auch keine Ahnung was ein Clone ist und wie sich das aufs Produktivsystem auswirkt. Du kannst durchaus den Server abschießen wenn du Fehler machst und wie ich bereits sagte, du beeinflusst damit die Performance und wenns blöd läuft die Verfügbarkeit. Im laufenden Produktivbetrieb würde ich das niemals machen. Viel Spaß!

Mit "klonen" meinte ich einfach nur, das System (einmalig) zu kopieren, um danach unabhängig vom echten Server damit experimentieren zu können. In meinem Eingangsposting sagte ich ja schon: ES DARF NICHTS AM SERVER VERÄNDERT WERDEN. Hat der Begriff "Clone" eine viel engere Bedeutung? Falls der Begriff von mir falsch verwendet worden ist, dann sorry.

Das ist trotzdem kein Grund, dass du mich hier verhöhnst. Wie gesagt, die Sache mit dem Server ist NICHT Teil meines Auftrags. Tust so als wäre ich der größte Vollidiot, der leichtsinnig mit einem Produktivsystem rumspielen will. Der ganze Sinn dieses Threads ist es, genau das zu vermeiden.
Außerdem bin ich noch Junior-Entwickler, und es ist überhaupt nichts ehrenrühriges daran, nicht sofort ALLES zu wissen. Ich arbeite mit einem älteren erfahrenen Kollegen an der Sache zusammen. Völlig auf mich allein gestellt wäre ich tatsächlich etwas überfordert (nicht nur technisch).

Ohne die volle Geschichte dahinter zu kennen, kann man sich seinen Teil dazu denken.
Es geht hier um einen Betrieb, wo die dort fest angestellten Programmierer ihren C-Code auf dem Produktivsystem kompilieren!!! Weil sie einfach sonst nichts anderes zur Verfügung haben. Kein Scherz. Das ist unfassbar. Es ist aber so.
Ergänzung ()

snaxilian schrieb:
edit: Jetzt erst gesehen, dass es nur zum testen ist und keine Migration geplant ist. Dann nimm das letzte Backup und mach eine Wiederherstellung in eine VM (ohne Netzwerkadapter). Nach Restore per Konsole die IP ändern, dann Netzwerkadapter hinzufügen/aktivieren. Gibt es kein Backup dann bleibt dir nur eine neue VM erstellen, sprich altes SUSE 11 ISO besorgen, per zypper oder rpm alle installieren Pakete im Server anzeigen lassen und auf deiner VM installieren, Daten per rsync over ssh holen und von der DB einen Dump ziehen, ebenfalls per rsync zur VM bringen, Dump importieren. Vom DB-Serverdienst Config prüfen auf welcher IP der ggf. starten will und sonstige Parameter wie hostname, permissions, etc. usw. anpassen.

blablub1212 schrieb:
Bei deinem Download über FTP hast du absolut gar nichts gewonnen. Das wirst du nicht sinnvoll in eine neue Linux-Installation bekommen, denn du hast absolut alle Berechtigungen verloren. Du kannst mittels Rsync oder CP die Dateien mit Berechtigung und User-Zuordnung in eine Tar pipen. Dann bleibt dir wenigstens das...

Danach kannst du dir ein Suse in Virtualbox installieren, installierst alle Pakete des Orginal-Systems und entpackst die Tar nach /, passt fstab und Netzwerk an und bootest neu. Näher als so wirst du mit deinem Gefummel nicht an das Orginal-System rankommen.

Danke. Das sind endlich mal Aussagen, die nicht völlig am Thema vorbeigehen.


@blablub1212

Das mit den Berechtigungen ist aber so, dass sowieso alle Dateien auf dem Server dem Nutzer root gehören. :D
 
Zuletzt bearbeitet:
@Andarkan
Nicht nur ich habe dir etwas zum Thema gesagt und das geht ganz und gar nicht am Thema vorbei.
Zumal du selbst feststellst, dass du A keine Ahnung hast und B in dem Betrieb einiges nicht zu stimmen scheint. Ich sehe hier nichts von verhöhnen, ich arbeite nur mit der Datenlage.
 
Andarkan schrieb:
Es geht hier um einen Betrieb, wo die dort fest angestellten Programmierer ihren C-Code auf dem Produktivsystem kompilieren!!

Man kann durchaus auch ein paar Stunden ohne Compiler überstehen. Angeblich kann man ja sogar ohne IDE programmieren ...
 
Andarkan schrieb:
@KuestenNebel

Ja, kann man. Was hat das jetzt mit meiner Aussage zu tun?

Dass man den Server auch mal fuer eine Stunde Abends um 23 Uhr an einem Freitag herunterfahren kann, um die Festplatte zu clonen. Wenn das bei euch nicht drin ist, dann habt ihr definitiv groessere Baustellen.
 
Meine Aussage bezog sich darauf, dass man Code nicht erst auf dem laufenden(!) Produktivsystem kompilieren sollte, sondern schon vorher.
Als Beispiel dafür, wie am Arsch dieser Betrieb ist.

Es ist aber gar nicht mein Job, den Betrieb zu retten, sondern eine speziellere Aufgabe, die hier jetzt nichts zur Sache tut. Erstaunlich, wie viele "Ratschläge" ich hier bekomme von Leuten, die meinen, es ganz genau zu wissen, was meine Aufgabe ist.
 
Das geht durchaus, aber so Sätze wie 'via FTP auf mein Windows Laptop kopiert' lassen die Frage eher offen, ob Du schon bereit dafür bist.

Grob ginge es so:
  • Dateien via ssh kopieren (tar/ssh/tar Tunnel, ggf. mit Kompression)
  • Loopimage erstellen, partitionieren, mounten (angelehnt an das Original)
  • Dateien in die entsprechende Partition entpacken
  • Bootmanager installieren
  • via QEMU booten
  • ggf. Datenbanken u.ä. individuell sichern und einspielen (Alle Datenbanken können das (Online/Live Backup). Gute Erfahrungen habe ich aber nur mit PostgreSQL gemacht.)
 
Zuletzt bearbeitet:
Ich werfe einfach mal rsync in den Raum.
Aber ganz ohne Downtime wird es nicht gehen, ich schätze mal, wenn man es geschickt anstellt vielleicht 30 Sekunden ...
 
Uridium schrieb:
Das geht durchaus, aber so Sätze wie 'via FTP auf mein Windows Laptop kopiert' lassen die Frage eher offen, ob Du schon bereit dafür bist.
Dieser Windows-Laptop gehört nicht mir, sondern wurde mir hier zur Verfügung gestellt. Mit einem anderen komme ich hier gar nicht ins Netz rein. Der Laptop hat Windows 7 32-Bit mit 4 GB RAM. Damit lässt sich natürlich "wunderbar" arbeiten. Die Leute hier haben alle nichts besseres...
 
Ich stand vor einem ähnlichen Problem,
da ich aus einem physikalischen Rechner ein VM Abbild auf einem anderen PC erstellen wollte.
Den genauen Ablauf weiß ich nicht mehr so genau, aber ich habe auf jeden Fall VMware vCenter Converter benutzt.
Damit hatte ich ein 1:1 Abbild des Rechners im laufenden Betrieb erstellt.

Mein Hostsystem auf dem die VM läuft, ist jedoch eine Windows 10 Umgebung.

Schau' mal ob dir das weiterhilft: https://www.nakivo.com/blog/vmware-p2v-linux-conversion-comprehensive-walkthrough/
 
@meph!sto Jo, der Converter ist brauchbar nur mit Datenbanken fällt man da gerne auf die Schnauze. Been there, done that. Fileserver, Webserver, etc alles easy aber bei DBs sind Probleme vorprogrammiert.
 
Andarkan schrieb:
Der Laptop hat Windows 7 32-Bit mit 4 GB RAM. Damit lässt sich natürlich "wunderbar" arbeiten.
Das ist nicht das Problem. Der Rechner reicht vollkommen.
Auffällig ist eher deine Herangehensweise, die auf einen typischen Windowsnutzer hindeutet, um nicht zu sagen, auf jemanden, der grobe Linuxdefizite hat. Wenn du den Zusammenhang zwischen ext/ntfs/unix file permissions schon nicht verstehst, bzw. mit Linux Standardtools wie ssh oder tar nicht selbstverständlich umgehen kannst, wird es vermutlich sehr schwer, das oben genannte Ziel umzusetzen.
 
Zurück
Oben