Xen convertion P2V

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

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

2 On prépare la place pour vieuxpc sur le serveur xen

Créer une image de disque ( taille 20 GB) :

dd if=/dev/zero of=/vieuxpc/vieuxpc.hda.img bs=1024k count=20000

Creer un loop device correspondant a l'image du disque entier

losetup /dev/loop0 /vieuxpc/vieuxpc.hda.img

Partitionner l'image:

fdisk /dev/loop0

Lister les partitions creees :

fdisk -ul  /dev/loop0 
Disk /dev/loop0: 20.9 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders, total 40960000 sectors
Units = sectors of 1 * 512 = 512 bytes
 
      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1              63    17591174     8795556   83  Linux
/dev/loop0p2        17591175    19567169      987997+  82  Linux swap / Solaris

Attacher les partitions comme loop devices:

losetup -o $((63*512)) /dev/loop1 /vieuxpc/vieuxpc.hda.img
losetup -o $((17591175*512)) /dev/loop2 /vieuxpc/vieuxpc.hda.img

Formater: ( note 8795556 est le nombre de blocks tel qu'affiche par fdisk )

mkfs.ext3 /dev/loop1 8795556
mkswap /dev/loop2 987997

3 On copie les données de vieuxpc

Monter la partition racine de vieuxpc et copier les donnees:

mount /dev/loop0 /target
mount /dev/sdc2 /source
cd /source
tar cf - . | ( cd /target/ && tar xf -)

Editer /source/boot/grub/menu.lst pour qu'il coincide avec votre schema de partitionnement

root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-5-486 root=/dev/hda1 ro
initrd          /boot/initrd.img-2.6.18-5-486

On démonte tout le bazar :

umount /target
umount /source
losetup -d /dev/loop{0,1,2}

4 On installe le bootloader

Installer GRUB sur le disque a L'aide d'une disquette de secours grub:

cat /usr/lib/grub/stage[12] > floppy.img

Note: les utilisateurs de debian peuvent installer grub-disk, une image bootable de GRUB preconfiguree pour booter pas mal d'OS.

qemu -fda floppy.img -hda  /vieuxpc/vieuxpc.hda.img -boot a 

GNU GRUB  version 0.95  (639K lower / 31744K upper memory)

[ Minimal BASH-like line editing is supported.  For the first word, TAB
  lists possible command completions.  Anywhere else TAB lists the possible
  completions of a device/filename. ]

grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... no
Running "install /boot/grub/stage1 (hd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
Done.

grub>

5 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 emulee.