Univention Bugzilla – Bug 21299
Klonen von Instanzen
Last modified: 2011-12-13 15:49:01 CET
Es sollte in UVMM eine Möglichkeit geben Instanzen zu klonen.
So geht es von Hand: # qemu-img create -f qcow2 /var/lib/libvirt/images/master.qcow2 10M # qemu-img create -f qcow2 -o backing_file=/var/lib/libvirt/images/master.qcow2,backing_fmt=qcow2 /var/lib/libvirt/slave.qcow2
Im UVMMd wurde jetzt das passenden Kommando "domain_clone <uri> <uuid> <new_name> [subst]" implementiert, das die VM mit der angegebenen UUID auf dem angegebenen Server klont: 1. Die neue Instanz bekommt den neuen Namen 2. Die neue Instanz bekommt eine zufällige UUID. 3. Die MAC-Adressen werden zufällig neu generiert. Alternativ kann per "mac#alt=neu" eine gezielte neue MAC-Adresse vorgegeben werden. 4. Device-Images von CDROM und FLOPPY werden shared, die von DISKs kopiert. Der neue Name wird „geschickt“ aus dem alten Namen abgeleitet bzw. neu generiert. Per "copy#dev={copy,cow,share}" bzw. "name#dev=neu" kann das ebenfalls überschrieben werden. Voraussetzung für das Kopieren ist, daß der Storage-Pool ein kopieren unterstützt. Getestet wurden "dir" (lokales Verzeichnis in bereits gemounteten Dateisystem), "fs" (zu mountendes lokales DS), "netfs" (zu mountendes Netzwerk-FS, z.B. NFS) und "logical" (LVM). iSCSI ist ungetestet, wird aber voraussichtlich nicht funktionieren, da jeder iSCSI-Hersteller sein eigenes Süppchen kocht und libvirt keine Möglichkeit hat, generisch neue LUNs zu erzeugen. Das CLI uvmm wurde entsprechend erweitert und kann zum Testen verwendet werden: uvmm domain_clone qemu:///system 99c95fd4-fa18-4771-4274-a80f75819cac \ clone2 \ mac#52:54:00:f9:8e:a2=52:54:00:f9:8e:00 \ copy#vdb=cow \ name#vda=clone123 Was jetzt noch Fehlt ist die ganze Anbindung an UMC. svn28662..28664, univention-virtual-machine-manager-daemon_1.0.21-1.304.201111021808 ChangeLog: DRAFT \item UVMM now supports cloning VMs. Prerequisites are that the underlaying storage pool supports storage volume creation, which currently includes local file systems, NFS and LVM, but excludes iSCSI. (\ucsBug{21299}).
Standardmäßig werden nun die alten MAC-Adressen beibehalten anstatt sie standardmäßig automatisch neu generieren zu lassen. Das ist notwendig, wenn von VMs exakte Kopien erstellt werden müssen, um diese anschließend zu testen, Sicherungskopiene zu ertsellen bzw. diese in Produktivsystem migriert werden sollen. Ist kein entsprechender mac#xx:xx:xx:xx:xx:xx-Eintrag vorhanden, wird die MAC-Adresse beibehalten. Ist ein Eintrag vorhanden, der in Python zu False evaluiert, wird eine neue MAC-Adresse von libvirt generiert. Alle anderen (Zeichenketten) werden direkt als neue MAC-Adresse gesetzt. svn29406, univention-virtual-machine-manager-daemon_1.0.75-2.340.201111211050
Nach dem Klonen fehlt ein Refresh.
(In reply to comment #4) > Nach dem Klonen fehlt ein Refresh. Das kann ich nicht reproduzieren. Nach einem Klonen ist die neue Instanz sofort in der Liste
Funktioniert soweit. Ich habe dazu zwei weitere Bugs angelegt, die aus meiner Sicht die 3.0 Freigabe nicht blockieren sollten: Bug #25040 Bug #25041
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"