Wie erstelle ich eine virtuelle Maschine von einem Live-Server?

8

Ich suche nach Möglichkeiten, einen Live-Server remote in eine virtuelle Maschine zu klonen, um ihn als Testumgebung zu verwenden, die so identisch wie möglich mit dem Live-Server ist. Dies würde verwendet, um Änderungen, neue Softwareversionen usw. zu testen. Der Klon müsste den Boot-Manager, Partitionsinformationen usw. enthalten.

Wie kann ich dies mit minimaler Auswirkung auf den Live-Server erreichen und gleichzeitig ein funktionierendes Image erstellen, von dem ich booten kann (vorausgesetzt, es wird ordnungsgemäß gemountet oder nach dem Klonen in ein Image konvertiert)?

Auf dem Live-Server wird Centos 6.7 ausgeführt, und ich plane, Virtualbox zum Ausführen des Klons zu verwenden. Ich mache dies von einem Mac mit Homebrew aus, Bonuspunkte, wenn die Antwort von einem Mac aus funktioniert, aber bei Bedarf * nix verwenden kann.

Ich habe versucht, rsync zu verwenden und ein Image aus dem resultierenden Ordner zu erstellen, aber es fehlten Partitions- und Startinformationen, sodass ich das resultierende Image in Virtualbox nicht verwenden konnte, ohne zuerst Centos zu installieren und dann alle Dateien zu kopieren. Seien Sie nicht treu genug für eine Testumgebung.

Update: Ich habe versucht, den VMware-Konverter zu verwenden, aber leider scheint er nur für Windows verfügbar zu sein, und ich kann ihn nicht verwenden.

Stattdessen lade ich ein Image des Servers mit dd over ssh herunter. Ich plane, dieses Bild zu konvertieren, sobald es mit dem Befehlszeilenprogramm von virtuablox in eine .vdi heruntergeladen wurde. Wenn dies funktioniert, werde ich die Frage mit weiteren Details aktualisieren.

Marmeladenpfirsich
quelle
1
Da Sie die VM auf einem Remote-Linux-Server kvmausführen , würde ich die Verwendung anstelle von Virtualbox empfehlen. virtualbox eignet sich gut zum Ausführen einiger VMs auf dem Desktop eines Benutzers, kvmist jedoch besser für Server geeignet. Sie können es virt-managerauf Ihrem Mac verwenden, wenn Sie möchten, dass eine GUI-Verbindung die VM verwaltet oder deren Konsole verwendet (siehe z . B. github.com/jeffreywildman/homebrew-virt-manager ). kvm + qemu + libvirt. Sie können das Rohbild dddirekt verwenden oder Sie können es qcow2mitqemu-img
cas
Tatsächlich können Sie die Blockgeräte des Live-Servers direkt lesen und andere Bilddateitypen (einschließlich vdi, vmdk, raw und mehr) erstellen, qemu-imganstatt ddwenn Sie möchten qcow2. Siehe qemu-img --helpoder die Manpage für Details. Übrigens ist es am besten, den Live-Server zu klonen, während er nicht läuft.
Cas
Sie haben gute Backups Ihres Produktionssystems, oder? Gute Zeit, um es herauszufinden ... und als Bonus erhalten Sie den Klon, nach dem Sie gefragt haben. Wenn nicht, reparieren Sie zuerst Ihr Backup-System / Ihre Backup-Methode!
ivanivan

Antworten:

7

Physisch zu virtuell - P2V - ist das Verfahren, nach dem Sie suchen. rsyncwird in diesem Fall nicht helfen.

Sie sollten das kostenlose VMware Converter-Tool von Vmware verwenden, um die Festplatten Ihres physischen Servers in virtuelle Festplatten zu konvertieren, eine virtuelle Maschine in VirtualBox zu erstellen und die vorhandenen virtuellen Festplatten hinzuzufügen.
Eine vollständige Schritt-für-Schritt-Beschreibung finden Sie hier .

Labyrinthe
quelle
2
+1. rsynckann tatsächlich verwendet werden, aber Sie müssen die VM mit einem Live-CD-Image starten, Partitionen auf den virtuellen Laufwerken der VM erstellen, formatieren und mounten, mit diesen Partitionen rsyncieren und dann in das System chrooten und verwenden grub-install, um zu erstellen es bootfähig. mäßig kompliziert, aber viel weniger Ausfallzeiten für den Live-Server.
Cas
eigentlich ja - das ist der Fall, wenn rsynces nützlich wäre
mazs
Ich habe in der Vergangenheit rsync verwendet, um P2V durchzuführen. Funktioniert gut. Siehe meine verknüpfte Antwort in dieser Frage.
Kyle
0
  1. Starten Sie im Rettungsmodus
  2. Geben Sie diesen Befehl ein, um eine Verbindung zur Serverfestplatte herzustellen, diese herunterzuladen und am Client zu speichern

    ssh [email protected] "dd if=/dev/sda " | dd of=/home/backups/centos_image.img Wenn die Verbindung abgelehnt wird, stellen Sie sicher, dass Sie sshd im Neustart-Cron-Job hinzufügen und aktivieren, dass es im Debug-Modus ausgeführt wird. Wenn Sie Windows verwenden möchten, stellen Sie sicher, dass Sie über Cygwin verfügen

  3. Nachdem Sie das heruntergeladen haben .img, wird die folgende Ausgabe angezeigt

    xxxxxxxxxx bytes (x.x GB) copied, xxx.xxx s, x.x MB/s

  4. Verwenden Sie jetzt VBoxManage, um es zu konvertieren .vdi

    VBoxManage convertfromraw --format VDI [filename].img [filename].vdi

  5. Mounten Sie den VDI als Festplatte

Yousef Al-Hadhrami
quelle
0

Ich schrieb Schritt für Schritt eine detaillierte Antwort darauf, wie ich eine sehr ähnliche Herausforderung in der Frage gelöst habe: Ein laufendes Linux-System in eine KVM-Instanz auf einem anderen Computer verwandeln . Ich hoffe, es ist auch eine nützliche Antwort auf diese Frage.

Ziel der Antwort: Nehmen Sie einen physischen Linux- PKnoten, auf dem Live-Produktion ausgeführt wird, und virtualisieren Sie ihn. Ohne Multi-Terabyte-Festplatten erstellen und zuweisen zu müssen oder im VGast md raid verwenden zu müssen , da der Zielhypervisor (Proxmox 5) ZoL / ZFS verwendet. Wollte auch Ausfallzeiten / Neustarts auf dem laufenden PKnoten verringern .

Kyle
quelle