Prérequis dans cet exemple: une debian-squeeze avec un noyau xen sur une machine supportant la virtualisation.

root@dellxen:/# uname -a
Linux dellxen 2.6.32-5-xen-amd64 #1 SMP Thu Mar 22 21:14:26 UTC 2012 x86_64 GNU/Linux

root@dellxen:/# cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 23
model name    : Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz
stepping    : 10
cpu MHz        : 2593.534
cache size    : 2048 KB
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu de tsc msr pae mce cx8 apic sep mtrr mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good aperfmperf pni est ssse3 cx16 hypervisor lahf_lm
bogomips    : 5187.06
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

processor    : 1
vendor_id    : GenuineIntel
cpu family    : 6
model        : 23
model name    : Pentium(R) Dual-Core  CPU      E5300  @ 2.60GHz
stepping    : 10
cpu MHz        : 2593.534
cache size    : 2048 KB
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu de tsc msr pae mce cx8 apic sep mtrr mca cmov pat clflush acpi mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good aperfmperf pni est ssse3 cx16 hypervisor lahf_lm
bogomips    : 5187.06
clflush size    : 64
cache_alignment    : 64
address sizes    : 36 bits physical, 48 bits virtual
power management:

Côté partitions: je ne disposais que d'un disque (/dev/sda). En fouillant un peu dans les cartons j'ai retrouvé un 40 Go SATA que j'ai déclaré en /dev/sdb. Install de lvm2 et création des pv, vg et lv.

root@dellxen:/# pvcreate /dev/sdb1

root@dellxen:/# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               vgxen
  PV Size               18,63 GiB / not usable 1,16 MiB
  Allocatable           yes
  PE Size               4,00 MiB
  Total PE              4769
  Free PE               2209
  Allocated PE          2560
  PV UUID               1QKc5p-3WeC-UiP7-C53r-FFOp-9cRX-RuKRMT

root@dellxen:/# vgcreate vgxen /dev/sdb1

root@dellxen:/# vgdisplay
  --- Volume group ---
  VG Name               vgxen
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               18,63 GiB
  PE Size               4,00 MiB
  Total PE              4769
  Alloc PE / Size       2560 / 10,00 GiB
  Free  PE / Size       2209 / 8,63 GiB
  VG UUID               4LbZn5-3dLp-jdb4-3D8i-LGWl-1k0e-QD9Lt9

root@dellxen:/# lvcreate -n win2003 -L 10G vgxen

root@dellxen:/# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vgxen/win2003
  VG Name                vgxen
  LV UUID                RGgXn2-g1gU-67NX-Mqu7-upcx-ym95-Y7Mi3O
  LV Write Access        read/write
  LV Status              available
  # open                 3
  LV Size                10,00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0



root@dellxen:/# cat /proc/partitions
major minor  #blocks  name

   8       16   39082680 sdb
   8       17   19535008 sdb1
   8        0  156250000 sda
   8        1   39061504 sda1
   8        2    3906560 sda2
   8        3  113280000 sda3
   7        0     718462 loop0
 253        0   10485760 dm-0



root@dellxen:/# dpkg -l | egrep 'lvm|xen' |grep '^ii'
ii  libxenstore3.0                       4.0.1-4                        Xenstore communications library for Xen
ii  linux-image-2.6.32-5-xen-amd64       2.6.32-41squeeze2              Linux 2.6.32 for 64-bit PCs, Xen dom0 support
ii  lvm2                                 2.02.66-5                      The Linux Logical Volume Manager
ii  xen-hypervisor-4.0-amd64             4.0.1-4                        The Xen Hypervisor on AMD64
ii  xen-qemu-dm-4.0                      4.0.1-2+squeeze1               Xen Qemu Device Model virtual machine hardware emulator
ii  xen-tools                            4.2-1                          Tools to manage Xen virtual servers
ii  xen-utils-4.0                        4.0.1-4                        XEN administrative tools
ii  xen-utils-common                     4.0.0-1                        XEN administrative tools - common files
ii  xenstore-utils                       4.0.1-4                        Xenstore utilities for Xen


Je ne redétaille pas la procédure d'install de xen ni celle de la creation d'un DomU. Dans le cas présent je vais simplement repartir d'un fichier de configuration d'un DomU précédemment créé mais qui utilise un fichier image et le modifier pour utiliser un lv.

root@dellxen:/# cat /etc/xen/win2003.cfg
kernel = "/usr/lib/xen-4.0/boot/hvmloader"
builder='hvm'
memory = 512
shadow_memory = 8
name = "win"
vif = [ 'type=ioemu, bridge=eth0' ]
disk = [ 'phy:/dev/vgxen/win2003,hda,w', 'file:/home/win2003.iso,hdb:cdrom,r' ]

# config disques du domU précédent
#disk = [ 'file:/home/xen/xenwin.img,hda,w', 'phy:/dev/scd0,hdb:cdrom,r' ]

device_model = '/usr/lib/xen-4.0/bin/qemu-dm'
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="dc"
vfb = [ "type=vnc,keymap=fr" ]
sdl=0
vnc=1
vncconsole=1
vncpasswd=''
stdvga=0
serial='pty'
usbdevice='tablet'


On constate que je lui indique d'utiliser une partition lv au lieu d'un fichier image et que je vais booter sur une image iso d'un win2003.

root@dellxen:/# xm create /etc/xen/win2003.cfg

Là.... on installe un windows... on ne va pas s'étendre...

Subtilité tout de même constatée en fin d'install: l'accès en client TS doit être validé dans les propriètés du Poste de travail. Autrement dit (sauf erreur/lacune de ma part) il faut installer un serveur X sur la machine hôte xen !!! pour pouvoir le faire... Dommage ...
Si l'hôte xen ne dispose pas de serveur X on peut se connecter depuis un autre poste:

root@p733:/tmp# ssh -f -N -L 5900:127.0.0.1:5900 root@<ip hôte xen>
puis:
root@p733:/tmp# vncviewer 127.0.0.1:5900


Je me connecte donc en local avec un vncviewer:

root@dellxen:/# vncviewer 127.0.0.1:5900 &

lvm xen


Un petit coup de F8

lvm xen

Je sélectionne Send ctrl-alt-del et j'active ce @#! de service TS:

lvm xen


Ensuite rien de compliqué: un client terminal Server sur mon desktop et le tour est joué:

lvm xen


lvm xen


Maintenant qu'on s'est bien amusé, on passe aux choses sérieuses à savoir les sauvegardes.

Comme pour les vm xen utilisant un fichier image je crée un cliché lvm de la même façon:


root@dellxen:/# lvcreate -l 100%FREE -s -n snap /dev/vgxen/win2003
  Logical volume "snap" created

root@dellxen:/# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vgxen/win2003
  VG Name                vgxen
  LV UUID                RGgXn2-g1gU-67NX-Mqu7-upcx-ym95-Y7Mi3O
  LV Write Access        read/write
  LV snapshot status     source of
                         /dev/vgxen/snap [active]
  LV Status              available
  # open                 3
  LV Size                10,00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  
  --- Logical volume ---
  LV Name                /dev/vgxen/snap
  VG Name                vgxen
  LV UUID                tDj5F7-sGc6-8y9y-A0i7-1SjO-Ffv3-2XvDEW
  LV Write Access        read/write
  LV snapshot status     active destination for /dev/vgxen/win2003
  LV Status              available
  # open                 0
  LV Size                10,00 GiB
  Current LE             2560
  COW-table size         8,63 GiB
  COW-table LE           2209
  Allocated to snapshot  0,00%
  Snapshot chunk size    4,00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1


Mais comme on utilise un lv il n'est plus possible de monter le cliché :

root@dellxen:/# mount /dev/vgxen/snap /mnt
mount: you must specify the filesystem type

Un peu de recherches m'amène finalement ici: http://cedric-tintanet.developpez.com/tutoriels/linux/sauvegarde-virt/

Grand merci à l'auteur de cet article d'ailleurs: tuto précis et fiable !

Comme indiqué dans le lien il est nécessaire de créer un fichier périphérique qui va mapper le snapshot. On réalise cette opération avec kpartx.


root@dellxen:/# kpartx -a /dev/mapper/vgxen-snap

root@dellxen:/# ll /dev/mapper
total 0
drwxr-xr-x  2 root root    180 14 avril 18:09 .
drwxr-xr-x 19 root root   3460 14 avril 18:09 ..
crw-------  1 root root 10, 56 14 avril 15:15 control
lrwxrwxrwx  1 root root      7 14 avril 18:04 vgxen-snap -> ../dm-1
lrwxrwxrwx  1 root root      7 14 avril 18:09 vgxen-snap1 -> ../dm-5
lrwxrwxrwx  1 root root      7 14 avril 18:04 vgxen-snap-cow -> ../dm-3
lrwxrwxrwx  1 root root      7 14 avril 18:04 vgxen-win2003 -> ../dm-0
lrwxrwxrwx  1 root root      7 14 avril 18:04 vgxen-win2003-real -> ../dm-2

Et ça se passe nettement mieux:

root@dellxen:/# mount /dev/mapper/vgxen-snap1 /mnt
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.

root@dellxen:/# ll /mnt
total 786789
drwxrwxrwx  1 root root      4096 14 avril 15:51 .
drwxr-xr-x 23 root root      4096 26 mars   2011 ..
-rwxrwxrwx  1 root root         0 14 avril 15:48 AUTOEXEC.BAT
-rwxrwxrwx  1 root root       192 14 avril 15:40 boot.ini
-rwxrwxrwx  1 root root         0 14 avril 15:48 CONFIG.SYS
drwxrwxrwx  1 root root      4096 14 avril 15:52 Documents and Settings
-rwxrwxrwx  1 root root         0 14 avril 15:48 IO.SYS
-rwxrwxrwx  1 root root         0 14 avril 15:48 MSDOS.SYS
-rwxrwxrwx  1 root root     47548  3 avril  2003 NTDETECT.COM
-rwxrwxrwx  1 root root    277152  3 avril  2003 ntldr
-rwxrwxrwx  1 root root 805306368 14 avril 15:51 pagefile.sys
drwxrwxrwx  1 root root      4096 14 avril 15:47 Program Files
drwxrwxrwx  1 root root         0 14 avril 15:51 System Volume Information
drwxrwxrwx  1 root root     20480 14 avril 16:01 WINDOWS
drwxrwxrwx  1 root root         0 14 avril 15:48 wmpub

Dès lors comme expliqué dans le lien, on peut utiliser ntfsclone pour la sauvegarde/restauration du cliché:

Sauvegarde:

root@dellxen:/# umount /mnt (puisque je l'avais monté juste avant)

root@dellxen:/# ntfsclone --save-image -o - /dev/mapper/vgxen-snap1 | bzip2 > /home/win2003.bkp.bz2
ntfsclone v2.0.0 (libntfs 10:0:0)
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 10725732352 bytes (10726 MB)
Current device size: 10725732864 bytes (10726 MB)
Scanning volume ...
100.00 percent completed
Accounting clusters ...
Space in use       : 2100 MB (19,6%)  
Saving NTFS to image ...
100.00 percent completed
Syncing ...

root@dellxen:/# ll /home/win2003*
-rw-r--r-- 1 root root 1386468630 14 avril 18:26 /home/win2003.bkp.bz2
-rw-r--r-- 1 root root  735705088 14 avril 15:22 /home/win2003.iso


Je vais ensuite supprimer le snapshot:

root@dellxen:/# kpartx -d /dev/mapper/vgxen-snap

root@dellxen:/# lvremove -f /dev/mapper/vgxen-snap
  Logical volume "snap" successfully removed

root@dellxen:/# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     80 14 avril 18:30 .
drwxr-xr-x 19 root root   3380 14 avril 18:30 ..
crw-------  1 root root 10, 56 14 avril 15:15 control
lrwxrwxrwx  1 root root      7 14 avril 18:30 vgxen-win2003 -> ../dm-0

Je vous laisse suivre le lien pour la restauration et les divers conseils qui s'y rattachent.