在基于debian6的宿主机上安装一台debian6 xen全虚拟化的虚拟机,宿主机根分区划分30G,剩余空间做成lvm卷用来安装虚拟机。
安装xen的hypervisor,会自动安装相关依赖包
apt-get install xen-linux-system-2.6-xen-amd64
使debian6支持xen的HVM
apt-get install xen-qemu-dm-4.0
查看cpu是否支持硬件辅助虚拟化,VMX for Intel and SVM for AMD
egrep '(vmx|svm)' /proc/cpuinfo
使xen内核称为默认的启动内核
dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
撤销变更
dpkg-divert --rename --remove /etc/grub.d/20_linux_xen
注:也可以直接在/boot/grub/grub.cfg里面修改默认启动内核
使配置后的grub生效,在每次修改grub都需要使grub配置生效
update-grub
配置dom0的内存
在使用xen技术的虚拟化中,大部分主要的内存在启动时时分配给dom0,dom0的大小是可以动态变化的的以容纳新启动的客户端,定义为“ballooned”,在运行虚拟机的宿主机上给dom0分配静态的ram要比动态分配好,并且禁止动态变化。
修改文件:/etc/default/grub,记得修改grub后要使配置生效
GRUB_CMDLINE_LINUX="dom0_mem=1024M"
接着修改/etc/xen/xend-config.sxp文件
(dom0-min-mem 1024) (enable-dom0-ballooning no)
配置vm在重启时的行为
默认在dom0在重启或者关闭时,它会保存domU的状态,这样有一个问题,但是在/var空间不够时,就会产生一些问题。这时可以禁止保存domU的状态。
修改文件:/etc/default/xendomains
XENDOMAINS_RESTORE=false XENDOMAINS_SAVE=""
配置虚拟网络使用桥接模式
修改文件:/etc/xen/xend-config.sxp
(network-script 'network-bridge antispoof=yes') (vif-script vif-bridge)
配置vnc:/etc/xen/xend-config.sxp
(vnc-listen '0.0.0.0') (vncpasswd '')
安装lvm
apt-get install lvm2
配置lvm卷,创建一个30G的卷给虚拟机使用
pvcreate /dev/sda4 vgcreate lvm-xen /dev/sda4 lvcreate -L 30G -n xen-hvm /dev/sda4
创建hvm虚拟机配置文件:/etc/xen/xen-hvm.cfg
kernel='hvmloader' builder='hvm' memory=3072 name='xen-hvm' vif=['mac=00:30:48:35:48:e8,bridge=eth0'] disk=['phy:/dev/lvm-xen/xen-hvm,hda,w', 'file:/opt/debian-6.0.2.1-amd64-CD-1.iso,hdc:cdrom,r'] device_model='qemu-dm' boot='dc' sdl=0 vnc=1 vncunused=1 vncdisplay='1' nographic=0 localtime=1 stdvga=0 vcpus=2 apic=0 acpi=1
启动xen-hvm虚拟机
cd /etc/xen xm create xen-hvm.cfg
打开vnc就会看到安装界面了,就跟装一般机器一样,配置完虚拟机后,把配置文件中的boot='dc'改为boot='cd',然后启动虚拟机xm create xen-hvm.cfg,利用xm list可以查看目前在运行的虚拟机
这时利用ssh即可登录虚拟机了。
参考:http://wiki.debian.org/Xen
把刚装好的xen-hvm虚拟机系统打个包,在后面实验半虚拟化tar安装时使用。
tar czvfp debian6.tgz bin/ boot/ dev/ etc/ home/ initrd.img lib/ lib32/ lib64/ lost+found/ media/ mnt/ opt/ --exclude=proc/* proc/ root/ sbin/ selinux/ srv/ --exclude=tmp/* tmp/ usr/ var/ --exclude=sys/* sys/ vmlinuz