如果要使用virt-manager安装,可以参考CentOS官网上的《采用LibVirt/Virt-install及Virt-Manager来管理xen4centos》,也可以参考我的另外一篇博客《Xen使用virt-manager创建虚拟机》,半虚拟化的创建与完全虚拟化的创建过程基本相似,若是想采取完全虚拟化的安装,可以参考《Xen使用命令行创建虚拟机》。
然后使用lvcreate创建Dom U所需的逻辑分区
[root@bogon xen]# lvcreate -L 100G -n xen_centos_pv VG_CentOS
Logical volume "xen_centos_pv" created
[root@bogon xen]# lvdisplay /dev/VG_CentOS/xen_centos_pv
--- Logical volume ---
LV Path /dev/VG_CentOS/xen_centos_pv
LV Name xen_centos_pv
VG Name VG_CentOS
LV UUID A9FR3Q-uhwH-Xc2g-6Nk0-KShV-i4iS-qZ7WvQ
LV Write Access read/write
LV Creation host, time bogon, 2017-08-21 10:57:03 +0800
LV Status available
# open 0
LV Size 100.00 GiB
Current LE 25600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
若是不使用逻辑卷管理当作Dom U的硬盘也是可以的,CentOS官网是采用映像文件来作为 Dom U的硬盘,详情可参考《 创建及安装一台CentOS 5 domU》。
[root@bogon ye]# cd /srv/centos-pv/
[root@bogon centos-pv]# ls
initrd.img vmlinuz
CentOS的initrdy映像和内核可以到这里下载:http://mirrors.sohu.com/centos/6/os/x86_64/images/pxeboot
然后我们需要为每个虚拟机配置文件。在安装成功Xen后有一个名为/etc/xen/xlexample.pvlinux的半虚拟化配置的示例文件,参照这个配置文件,我在/srv/xen/ 目录下创建了这个虚拟机的配置文件。
[root@bogon xen]# cat centos-pv.cfg
kernel = "/srv/centos-pv/vmlinuz"
ramdisk = "/srv/centos-pv/initrd.img"
name = "centos-pv"
memory = "1024"
disk = [ 'phy:/dev/VG_CentOS/xen_centos_pv,xvda,w']
vif = [ 'bridge=xenbr0']
vcpus=1
on_reboot = 'destroy'
on_crash = 'destroy'
sdl = 0
vnc = 1
vnclisten = "127.0.0.1"
vncdisplay = 0
vncpasswd = 123456789
stdvga=1
videoram = 64
各个选项什么意思可以参考Xen官网的说明手册: xl.cfg(5),但要注意以下几点:
1. on_reboot和on_crash的参数都是destroy是指当Dom U关机或者重启时“摧毁”这个Dom U(有点像物理机强制关机的意思),以便再安装完成后对Dom U重新配置。
2. disk选项我这里使用的是逻辑卷,也可以使用其他的方式当做Dom U的磁盘。
3. 我是使用VNC对虚拟机进行安装,VNC的配置可以参考《Linux中VNC的安装与配置》。当然也可以使用文本模式安装或者使用kickstart自动进行安装。
到此虚拟机就已经创建好了。
使用xl命令可以启动虚拟机
[root@bogon xen]# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1024 4 r----- 5367.5
[root@bogon xen]# xl create /srv/xen/centos-pv.cfg
Parsing config from /srv/xen/centos-pv.cfg
[root@bogon xen]# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1024 4 r----- 5370.9
centos-pv 7 960 1 r----- 2.2
刚才创建的虚拟机已经启动了,这里我使用VNC进行控制Dom U。
[root@bogon xen]# xl vncviewer centos-pv
便可以进入Dom U的控制窗口了。
安装完成后,这个Dom U因为要重启而会被销毁。
之前的配置文件是用于安装domU,安装完成以后需要修改配置文件。
[root@bogon xen]# cat centos-pv.cfg
#kernel = "/srv/centos-pv/vmlinuz"
#ramdisk = "/srv/centos-pv/initrd.img"
name = "centos-pv"
memory = "1024"
disk = [ 'phy:/dev/VG_CentOS/xen_centos_pv,xvda,w']
bootloader = "pygrub"
vif = [ 'bridge=xenbr0']
vcpus=1
#on_reboot = 'destroy'
#on_crash = 'destroy'
sdl = 0
vnc = 1
vnclisten = "127.0.0.1"
vncdisplay = 0
vncpasswd = 123456789
stdvga=1
这个新的配置文件不会再使用内核和initrd映像。取而代之,它会使用pygrub为开机程序。pygrub会尝试在磁盘的分区内寻找一个有GRUB配置文件的文件系统,找到GRUB的配置文件,它便会被用来引导内核。
同时,你也会注意到开关机选项参数由destroy更改为默认,关机或重启Dom U后不会再被摧毁。
注意:主机与虚拟机直接的切换是使用快捷键:ctrl+]
遇到的问题:
1、pygrub启动失败,查看它的日志,报no module named xen.lowlevel.xc错误,可以修改pygrub,注释掉import xen.lowlevel.xc即可,详细参见这篇文章的解释。
2、pygrub启动失败,查看它的日志,报no module named fsimage错误,可以locate一下fsimage,看到它在/usr/local/lib64/python2.6/site-packages目录下,所以修改pygrub,在import fsimage前面添加:
sys.path = ['/usr/local/lib64/python2.6/site-packages'] + sys.path
详细参见这篇博客里面的解释。
参考文献:
[1]. https://wiki.centos.org/zh/HowTos/Xen/InstallingCentOSDomU
[2]. http://blog.csdn.net/hustsselbj/article/details/45815175?locationNum=9