根据之前KVM虚拟化的整理,虚拟化技术分类如下:
虚拟化技术的分类:
(1) 模拟:Emulation
Qemu, PearPC, Bochs
(2) 完全虚拟化:Full Virtualization, Native Virtualization
HVM
VMware Workstation, VirtualBox, VMware Server, Parallels Desktop, KVM, Xen
(3) 半虚拟化:ParaVirtualization
GuestOS:知晓自己是运行Virtualization
Hypercall
解决安装:Xen, UML(User-Mode Linux)
(4) OS级别的虚拟化
将用户空间分割为多个,彼此间互相隔离,
容器级虚拟化
OpenVZ, LXC(Linux Container), libcontainer, Virtuozzo, Linux V Servers
(5) 库级别虚拟化
Wine
Xen组成部分:
(1) Xen Hypervisor
分配CPU、Memmory、Interrupt
(2) Dom0
特权域,I/O分配
网络设备:net-front(GuestOS), net-backend
块设备:block-front(GuestOS), block-backend
Linux Kernel:
2.6.37:开始支持运行Dom0
3.0:对关键特性进行了优化
提供管理DomU工具栈
用于实现对虚拟机进行添加、启动、快照、停止、删除等操作
(3) DomU
非特权域,根据其虚拟化方式实现,有多种类型:
PV:半虚拟化
HVM:全虚拟化
PV on HVM:I/O半虚拟化
Xen的PV技术:
不依赖于CPU的HVM特性,但要求GuestOS的内核作出修改以知晓自己运行于PV环境
运行于DomU中的OS:Linux(2.6.24+), NetBSD, FreeBSD, OpenSolaris
Xen的HVN技术:
依赖于Intel VT或AMD AMD-V,还要依赖于Qemu来模拟IO设备
运行于DomU中的OS:几乎所有支持此x86平台的
PV on HVM:
CPU为HVM模式运行
IO设备为PV模式运行
运行于DomU中的OS:只要OS能驱动PV接口类型的IO设备,比如net-front, block-front等
Xen的工具栈:
xm/xend:在Xen Hypervisor的Dom0中要启动xend服务
xm:命令行管理工具,有诸多子命令,如create, destroy, stop, pause...
xl:基于libxenlight提供的轻量级的命令行工具栈
xe/xapi:提供了对xen管理的api,因此多用于cloud环境,如Xen Server, XCP等
CentOS对Xen的支持:
RHEL 5.7-:默认的虚拟化技术为xen
kernel version:2.6.18
kernel
kernel-xen
RHEL 6+:仅支持kvm
Dom0:不支持
DomU:支持
如何在CentOS 6.6上使用Xen:
(1) 编译3.0以上版本的内核,启动对Dom0的支持
(2) 编译xen程序
制作好相关程序包的项目:
xen4centos
xen made easy
在CentOS 6.5上安装Xen:
yum -y install wget
wget http://us3.mirror.crc.id.au/repo/kernel-xen-release-el6-latest.noarch.rpm
rpm -ivh kernel-xen-release-el6-latest.noarch.rpm
yum -y install perl
yum install -y xen kernel-xen xen-libs python-virtinst bridge-utils
编辑/etc/grub.conf:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.9.38-1.el6xen.x86_64)
root (hd0,0)
kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin
module /vmlinuz-4.9.38-1.el6xen.x86_64 ro root=UUID=a7a56b12-cb53-4113-acc7-41cd71cf36bd rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
module /initramfs-4.9.38-1.el6xen.x86_64.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=a7a56b12-cb53-4113-acc7-41cd71cf36bd rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
重启系统
reboot
xl的常用命令:
list:显示Domain的相关信息
Xen虚拟机状态:
r:running
b:阻塞
p:暂停
s:停止
c:崩溃
d:dying, 正在关闭的过程中
shutdown:关机
reboot:重启
pause:暂停
unpause:解除暂停
save:将DomU的内存中的数据转存至指定的磁盘文件中
xl [-vf] save [options] <Domain> <Checkpointfile> [<ConfigFile>]
restore:从指定的磁盘文件中恢复DomU内存数据
xl [-vf] restore [options] [<ConfigFile>] <CheckpointFile>
vcpu-list
vcpu-pin
vcpu-set
info:当前xen hypervisor的摘要信息
domid
domname
top:查看domain资源占用排序状态的命令
network-list:查看指定域使用网络及接口
network-attach
network-detach
block-list:查看指定域使用的块设备列表
block-attach
block-detach
uptime:运行时长