xen p2v ( physical to virtual) howto

par marcello^

Comment remédier au tombage en ruine physique d'un serveur (vieuxpc) en migrant l'OS dans un domU HVM Xen flambant neuf.

1- on prépare la place pour vieuxpc sur le serveur xen

Créer et partitionner l'image en suivant les indications du wiki osdev: http://wiki.osdev.org/Loopback_Device#Hard_Disk_Images

On vérifie qu'on a bien une table de partitions valide. Il est impératif que la première partition commence au 63ème secteur, sinon vous n'aurez pas de place pour installer GRUB.

fdisk -ul -C4000 -S63 -H16 /vieuxpc/vieuxpc.hda.img 

Disk /vieuxpc/vieuxpc.hda.img: 0 MB, 0 bytes
16 heads, 63 sectors/track, 4000 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb7db35f2

                   Device Boot      Start         End      Blocks   Id  System
/vieuxpc/vieuxpc.hda.img1              63     3891263     1945600+  83  Linux
/vieuxpc/vieuxpc.hda.img2         3891264     4031999       70368   83  Linux

Attacher les partitions comme loop devices via kpartx:

kpartx -av /vieuxpc/vieuxpc.hda.img

Formater:

mkfs.ext4 /dev/mapper/loop0p1
mkswap /dev/mapper/loop0p2

2- on copie les données de vieuxpc

Monter la partition racine de vieuxpc et copier les données:

mount /dev/mapper/loop0p1 /target
mount /dev/sdc2 /source
cd /source
tar cf - . | ( cd /target/ && tar xpf -)

On démonte tout le bazar

umount /target
umount /source
kpartx -d /vieuxpc/vieuxpc.hda.img 

3- on installe le bootloader

  • Grub2 ne pouvant pas s'installer sur une image disque, il va falloir booter l'image disque depuis un live cd et installer grub via un chroot.
qemu -hda /vieuxpc/vieuxpc.hda.img -cdrom installers/debian-6.0.4-amd64-CD-1.iso -boot d

Depuis l'installeur demander un shell en choisissant “<Go back>” ou choisir le mode rescue au démarrage du CD:

  • On monte la partition racine du disque vieuxpc.hda.img
fdisk -l
mount /dev/sdaX /target
  • Grub a besoin de ces FS virtuels pour accèder aux partitions et disques
for FS in /sys /dev /proc; do mount --bind $FS /target/$FS; done
  • On réinstalle grub depuis la partition racine du disque vieuxpc.hda.img sur le MBR de vieuxpc.hda.img
chroot /target /bin/bash
apt-get install grub-pc            
update-grub                        
grub-install /dev/sda

4 - on teste et on met en prod

Tester le tout avec qemu:

qemu -hda  /vieuxpc/vieuxpc.hda.img

Creer le fichier de conf xen-hvm cf http://wiki.gcu.info/doku.php?id=unix:xen_hvm par exemple:

name="vieuxpc"
kernel = "/usr/lib/xen/boot/hvmloader"
builder = "hvm"
vif=['type=ioemu, mac=00:16:3E:00:03:05, bridge=xenbr0']
disk = [ 'file:/vieuxpc/vieuxpc.hda.img,ioemu:hda,w' ]
device_model = "/usr/lib/xen/bin/qemu-dm"
dhcp="dhcp"
memory="256"
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
vnc=1

Au premier boot, reconfigurer l'interface reseau, l'interface physique n'existant évidemment plus, on dispose a la place d'une carte réseau ne2000 emulée.

unix/xen_p2v_howto.txt · Last modified: 2012/03/11 15:49 by marcello