Cloning VM

Admin

Save a snapshot of the running System
Mount the lvm, where all files should be stored from the running system, create a snapshot and save the files from the running system on the created lvm. lvcreate -L 20G -n vm36sda1 d lvcreate -s -L 5G -n snap /dev/d/vm35sda1 lvdisplay /dev/d/snap mount -o ro /dev/d/snap /mnt/d/rootsnapshot/

Copy all files with dd (ssh)
dd if=/dev/l1/vm35sda1 | ssh root@srv08.mpdl.mpg.de dd of=/dev/d/vm36sda1

Alternate: Copy all files with rsync
rsync -azx --delete -e /mnt/d/rootsnapshot/* /vm36sda1

Delete the snapshot
umount /mnt/d/rootsnapshot lvremove /dev/d/snap

Modify config files
Change to the mounted lvm

cd /vm36sda1

Edit hosts
vi etc/hosts

and add this line.

134.76.28.204  vm36.mpdl.mpg.de vm36

Edit the network device
vi etc/udev/rules.d/XX-net_persistent_names.rules

Change the MAC-Adress. The MAC adress must be the same as the xen config file.

Edit the following file and rename it
vi etc/sysconfig/network/ifcfg-eth-id-mac-adress

Change the IP-adress in this file

IPADDR='134.76.28.204'

Rename the file to ifcfg-eth-id-new-mac-adress

mv ifcfg-eth-id-mac-adress ifcfg-eth-id-new-mac-adress

Modify the used server in TSM-Config
vi opt/tivoli/tsm/client/ba/bin/dsm.sys

Create, copy and modify the xen-config of the old vm
Start YaST2 create with Xen-Tools a new vm (vm36) Save the uuid and copy all other entrys to the new config file.

cp /etc/xen/vm/vm35 /etc/xen/vm/vm36 vi /etc/xen/vm/vm36

Change the hostname and name. Change the MAC adress. Add the uuid of the created config. Change the disks/harddrive and save.

Start the new machine
Unmount the all lvm which you will use in this virtual machine.

umount /vm36sda1

Start the VM.

xm create vm36

Log in with your login data and start as root YaST.

Open the network device settings and change the hostname of the virtual machine.

=VM umkopieren=

Anliegen
Sie möchten Ihr SuSE Linux wie es ist auf eine andere Festplatte bzw. Partition kopieren, ohne es neu installieren zu müssen.

Vorgehen
Prinzipiell geht das folgende nur ohne Komplikationen, wenn die Partition des Root-Dateisystems nicht als solches gemountet ist, d.h. es geht nur z.B. aus dem Rettungssystem (vgl. das einschlägige Kapitel im Handbuch; s. im Index unter dem Stichwort "Rettungssystem").

Das Vorgehen soll anhand eines Beispiels beschrieben werden.

Sie haben eine alte Platte /dev/hda (1. IDE-Festplatte) und kaufen eine neue SCSI-Platte (/dev/sda; erste Platte am SCSI-Bus). Die Root-Partition ist /dev/hda5 (erstes logisches Laufwerk in der erweiterten Partition). Das neue Root-Dateisystem soll /dev/sda1 werden. Nach dem Starten des Rettungssystems mit Linuxrc und nachdem Sie sich eingeloggt können Sie die beiden Partitionen an verschiedene Mountpoints mounten. Hier wird davon ausgegangen, daß Sie auf /dev/sda schon Partionen mit ext2-Dateisystemen angelegt haben.

Legen Sie die Mountpoints an
mkdir /OLD mkdir /NEW

Falls Sie das Rettungssystem von SuSE Linux 10.2 nutzen kann es sein, das Sie die Meldung mkdir: cannot create diretory 'OLD': Read-only file system erhalten. Wenn dies der Fall ist können Sie das umkopieren in '/tmp' erledigen. Ersetzen Sie hierzu alle Anweisungen mit /OLD oder /NEW durch /tmp/OLD bzw. /tmp/NEW z.B. vorher -> nachher mkdir /OLD -> mkdir /tmp/OLD cd /NEW -> cd /tmp/NEW

Mounten Sie die beiden Partitionen (Dateisysteme)
mount /dev/hda5 /OLD mount /dev/sda1 /NEW

Kontrollieren Sie, ob
* /dev/hda5 die richtige Root-Partition ist * /dev/sda1 leer ist.

Wechseln Sie ins /OLD-Verzeichnis
cd /OLD

Geben Sie nun folgenden tar-Befehl ein
tar -cSp --numeric-owner --atime-preserve -f -. | ( cd ../NEW && tar -xSpv --atime-preserve -f - )

Dadurch sollten alle Dateien aus /OLD nach /NEW gebracht werden. Links und Rechte der Dateien sollten als solche erhalten bleiben. Passen Sie nun einige wichtige Dateien auf die neue Root-Partition an

Alternativer tar-Befehl, wenn die Partitionen auf unterschiedlichen Servern liegen:
tar -cSp --numeric-owner --atime-preserve -f -. | ssh root@servername "( cd ../NEW && tar -xSpv --atime-preserve -f - )"

Dadurch sollten ebenfalls wie oben alle Daten kopiert werden, nur jetzt über das Netz.

Editieren Sie die Datei /NEW/etc/fstab nach den neuen Anforderungen, z.B. mit vi:
vi /NEW/etc/fstab

Eintrag vorher:
/dev/hda5 /   ext2    defaults   1   1

Eintrag nachher:
/dev/sda1 /   ext2    defaults   1   1

im Falle von LILO:
Passen Sie ggf. auch /NEW/etc/lilo.conf an. LILO können Sie erst nach dem Starten mit der neuen Partition aufrufen.

im Falle von GRUB:
Passen Sie /NEW/boot/grub/menu.lst an.

Eintrag vorher:
kernel /boot/vmlinuz root=/dev/hda1 ...

Eintrag nachher:
kernel /boot/vmlinuz root=/dev/sda1 ...

Je nachdem ob die neue Platte die erste (vom Bios) gefundene Platte ist oder nicht und ob sich da etwas verändert hat muß evtl. noch der Eintrag:
root (hd0,0)

angepasst werden. hd0 steht für die erste (Bios) Platte und ,0 steht für die erste Partition, in unserem Beispiel müsste dieser Eintrag nicht geändert werden wenn sda1 vom Bios auch wieder als erste Partition auf der ersten Platte gefunden wird.

Wechseln Sie dann ins Root-Verzeichnis und unmounten Sie beide Partitionen
cd / umount /OLD umount /NEW