Quelques trucs en vrac sur Xen.
kernel = "/var/xen_images/centos/vmlinuz" ramdisk = "/var/xen_images/centos/initrd.img" extra = "text ks=https://192.168.3.1/_ks_.cfg noverifyssl" name = "centos6_1" memory = "1024" disk = [ 'phy:/dev/datavg/centos6_1-disk,xvda,w', ] vif = [ 'bridge=xenbr0', ] vcpus=1 on_reboot = 'destroy' on_crash = 'destroy'
install url --url http://mirror.centos.org/centos/6/os/x86_64 lang en_US.UTF-8 network --device eth0 --bootproto dhcp # Bogus password, change to something sensible! rootpw bogus firewall --disabled authconfig --enableshadow --enablemd5 selinux --disabled timezone --utc Europe/Paris bootloader --location=mbr --driveorder=xvda --append="console=xvc0" reboot # Partitioning clearpart --all --initlabel --drives=xvda zerombr ignoredisk --only-use=xvda part /boot --fstype ext4 --size=100 --ondisk=xvda part pv.2 --size=8000 --grow --ondisk=xvda volgroup rootvg pv.2 logvol / --fstype ext4 --name=LogVol00 --vgname=rootvg --size=1024 --grow logvol swap --fstype swap --name=LogVol01 --vgname=rootvg --size=256 --grow --maxsize=512 %packages @core
tar vxf Hortonworks_Sandbox_2.1.ova qemu-img convert -O raw Hortonworks_Sandbox_2.1-disk1.vmdk Hortonworks_Sandbox_2.1.raw
xen-create-image -lvm=vgdata --debootstrap --size=4GB --memory=1500MB --swap=1500MB --dist=etch --mirror=http://ftp.fr.debian.org/debian/ --force --ip=192.168.1.1 --netmask=255.255.255.0 --gateway=192.168.1.254 --hostname=wowvmii --passwd --kernel=/boot/vmlinuz-2.6.18-6-xen-686 --initrd=/boot/initrd.img-2.6.18-6-xen-686
# # Configuration file for the Xen instance gameVM, created # by xen-tools 3.9 on Mon Jun 29 14:35:36 2009. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.26-2-xen-amd64' ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64' memory = '2048' extra = 'xencons=tty' vcpus = '2' # # Disk device(s). # root = '/dev/sda2 ro' disk = [ 'phy:/dev/vg_data/gameVM-swap,sda1,w', 'phy:/dev/vg_data/gameVM-disk,sda2,w', 'phy:/dev/vg_data/gameVM-data,sdb,w', 'phy:/dev/vg_data/gameVM-data2,sdc,w', ] # # Hostname # name = 'gameVM' # # Networking # vif = [ 'ip=192.168.1.3,vifname=vif1.3' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Testé avec Xen 3.2 sur Debian Lenny
kernel = '/usr/lib/xen-3.2-1/boot/hvmloader' builder = 'hvm' memory = '1024' name = "xpVM" vcpus = 1 vif = ['type=ioemu, bridge=xenbr0'] disk = [ 'phy:/dev/vg_data/xpVM-disk,ioemu:hda,w', 'file:/tmp/xp.iso,ioemu:hdc:cdrom,r' ] device_model = '/usr/lib/xen-3.2-1/bin/qemu-dm' boot = 'd' sdl = 0 vnc = 1 vncdisplay = 0 vncviewer = 0 usbdevice = 'tablet'
Penser à modifier (vnc-listen 'X.X.X.X') dans /etc/xen/xen-config.sxp pour avoir un accès VNC lors de l'install et relancer un /etc/init.d/xend restart.
Une fois l'install terminée on peut retirer la ligne suivante :
'file:/tmp/xp.iso,ioemu:hdc:cdrom,r'
Et remplacer :
boot = 'd' vnc = 1
Par :
boot = 'c' vnc = 0
La connexion se fera via un client RDP par la suite.
Le NAT ne marche pas des masses (Xen 3.2) avec une VM avec HVM. Du coup un bridge local permet de résoudre le souci :
tunctl -t tap0 -u root ip link set up dev tap0 brctl addbr xenbr0 brctl addif xenbr0 tap0 ip link set up dev xenbr0 ip addr add 192.168.3.1/24 dev xenbr0 brctl addif xenbr0 tap0
Sur la ou les VM(s) on utilise 192.168.3.2 par ex. comme adresse IP.
dedibox:/usr/sbin# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1014 2 r----- 16540.9 NXvm 2 256 1 -b---- 459.6 WEBvm 3 512 1 -b---- 1020.3 WoWvmII 1 1000 1 -b---- 6352.7 gserver 8 256 1 r----- 7579.9
dedibox:/usr/sbin# xm uptime Name ID Uptime Domain-0 0 22:39:40 NXvm 2 22:36:21 WEBvm 3 22:36:02 WoWvmII 1 22:36:40 gserver 8 19:54:13
xentop -b -i 2 2>/dev/null |grep -v vdb |tail -12 |grep -v vbd xentop - 13:37:31 Xen 3.0.3-1 5 domains: 2 running, 1 blocked, 0 paused, 0 crashed, 0 dying, 0 shutdown Mem: 3144124k total, 3143720k used, 404k free CPUs: 2 @ 2000MHz NAME STATE CPU(sec) CPU(%) MEM(k) MEM(%) MAXMEM(k) MAXMEM(%) VCPUS NETS NETTX(k) NETRX(k) VBDS VBD_OO VBD_RD VBD_WR SSID Domain-0 -----r 16666 99.1 1037476 33.0 no limit n/a 2 0 0 0 0 0 0 0 0 gserver -----r 7712 99.5 261996 8.3 262144 8.3 1 0 0 0 5 6 57598 163161 0 NXvm --b--- 460 0.1 261968 8.3 262144 8.3 1 0 0 0 2 52 27095 216960 0 WEBvm ------ 1029 0.4 524104 16.7 524288 16.7 1 1 637789 364648 8 420 138717 536729 0 WoWvmII ------ 6354 0.5 1023748 32.6 1024000 32.6 1 1 52265 548430 3 193 154307 1415267 0
dedibox:/usr/sbin# xm vcpu-list Name ID VCPUs CPU State Time(s) CPU Affinity Domain-0 0 0 0 r-- 8989.2 any cpu Domain-0 0 1 0 --- 7777.5 any cpu NXvm 2 0 0 --- 461.1 any cpu WEBvm 3 0 0 -b- 1032.7 any cpu WoWvmII 1 0 0 --- 6355.7 any cpu gserver 8 0 1 r-- 7817.7 any cpu
dedibox:/usr/sbin# xm list |egrep -v "Domain|Name"|awk '{print $1}'|while read i > do > echo $i > xm network-list $i > done NXvm Idx BE MAC Addr. handle state evt-ch tx-/rx-ring-ref BE-path 0 0 00:16:3e:7b:7c:6e 0 4 8 522 /523 /local/domain/0/backend/vif/2/0 WEBvm Idx BE MAC Addr. handle state evt-ch tx-/rx-ring-ref BE-path 0 0 00:16:3e:54:d8:29 0 4 14 528 /529 /local/domain/0/backend/vif/3/0 WoWvmII Idx BE MAC Addr. handle state evt-ch tx-/rx-ring-ref BE-path 0 0 00:16:3e:11:b8:c3 0 4 9 523 /524 /local/domain/0/backend/vif/1/0 gserver Idx BE MAC Addr. handle state evt-ch tx-/rx-ring-ref BE-path 0 0 00:16:3e:27:dd:cb 0 4 11 525 /526 /local/domain/0/backend/vif/8/0
xm list|egrep -v Name|awk '{print $1}'|while read i; do echo "--- $i ---" ;xm sched-credit -d $i; done --- Domain-0 --- {'cap': 0, 'weight': 256} --- NXvm --- {'cap': 0, 'weight': 256} --- WEBvm --- {'cap': 0, 'weight': 512} --- WoWvmII --- {'cap': 0, 'weight': 512} --- gserver --- {'cap': 0, 'weight': 256}
lvcreate -L 51200 -n ftpVM-data8 vg_data xm block-attach ftpVM phy:/dev/vg_data/ftpVM-data8 /dev/sdi w
⇒ Penser à modifier le fichier de conf de la VM pour la prise en compte au boot
Par défaut les VMs sont démarrées par rapport à l'ordre alphabétique des liens sous /etc/xen/auto :
lrwxrwxrwx 1 root root 20 Dec 22 15:50 0WoWvmII.cfg -> /etc/xen/WoWvmII.cfg lrwxrwxrwx 1 root root 17 Dec 22 15:50 1NXvm.cfg -> /etc/xen/NXvm.cfg lrwxrwxrwx 1 root root 18 Dec 22 15:50 2WEBvm.cfg -> /etc/xen/WEBvm.cfg lrwxrwxrwx 1 root root 20 Mar 8 21:02 3gserver.cfg -> /etc/xen/gserver.cfg
On peut parfois avoir des soucis si plusieurs VMs démarrent en parallèle. Cela peut arriver qu'une VM soit plus longue à démarrer (fsck par ex.) ce qui amène la VM suivante à démarrer alors que la précédente est toujours en cours de boot. On peut temporiser le lancement des VMs grâce à la variable XENDOMAINS_CREATE_USLEEP présente dans le fichier /etc/default/xendomains.
Sous Debian, décommenter la ligne suivante dans /etc/network/interfaces sur les VMs :
post-up ethtool -K eth0 tx off
le package ethtool doit être installé.
Sur la VM, lancer :
apt-get install udev
Rajouter la ligne ci-dessous dans le /etc/fstab (sur la console de la VM) :
none /dev/pts devpts defaults 0 0
Lancer :
mkdir /dev/pts mount -a