一、近日接到CTO分下来任务,研发部经常使用一批机器来业务测试,准备几台性能好服务器放在IDC房做Linux虚拟化来接入使用。我第一时间想到就是用xen,以前看过这方面资料,但没运用在生产环境上,先从xen实施起,以后在利用openstack打造内部私有云。
二、以下回忆xen原理,具体原理,网上有很多资料查询的到
虚拟化技术的分类:
模拟:著名的模拟器,PearPC, Bochs, QEMU
完全虚拟化:也称为native virtulization
两种加速方式:
BT
HVM
VMware Workstation, VMware Server, Parallels Desktop, KVM, Xen(HVM)
半虚拟化:para-virtualization
xen, uml(user-mode linux)
OS级别的虚拟化:
OpenVZ, lxc
Solaris Containers
FreeBSD jails
库虚拟化:
wine
应用程序虚拟化:
jvm
虚拟化网络:
nat mode
bridge mode
routed mode
isolation mode
Xen的工作模式:
pv: 半虚拟化
fv: 依赖于CPU的HVM
pv on hvm: CPU完全虚拟化,但IO采用半虚拟化;
xen的使用方式:
xen hypervisor
硬件 --> 安装Linux --> 安装xen --> 修改grub,配置其内核为xen,而不再使用原Linux的内核(原Linux的内核和initramfs文件被当作xen的模块)--> 重新编译Linux内核,使得其能够运行于Dom0 --> 重启系统;
DomU: 在Dom0使用工具创建虚拟机-->启动虚拟机-->安装操作系统;
xenserver:
citrix:
xcp: xen cloud platform
工具栈:xm/xend, xl, xapi/xe
libvirt: virsh/libvirtd, virtmanager
基本组件
Xen包含三大部分:
Hypervisor:直接运行于硬件之上,是Xen客户操作系统与硬件资源之间的访问接口。通过将客户操作系统与硬件进行分类,Xen管理系统可以允许客户操作系统安全,独立的运行在相同硬件环境之上。
Domain 0:运行在Xen管理程序之上,具有直接访问硬件和管理其他客户操作系统的特权的客户操作系统。
DomainU:运行在Xen管理程序之上的普通客户操作系统或业务操作系统,不能直接访问硬件资源(如:内存,硬盘等),但可以独立并行的存在多个。
二、操作系统
拿公司一台装有linux系统的物理来测试
1
2
3
4
|
[root@logicserver ~]# cat /etc/issue;uname -r
CentOS release
6.3
(Final)
Kernel \r on an \m
2.6
.
32
-
279
.el6.x86_64
|
三、部署安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
[root@logicserver ~]# yum install centos-release-xen
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink |
4.8
kB
00
:
00
* base: mirrors.pubyun.com
* epel: ftp.cuhk.edu.hk
* extras: centos.ustc.edu.cn
* updates: centos.ustc.edu.cn
epel |
4.3
kB
00
:
00
epel/primary_db |
5.7
MB
00
:
13
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package centos-release-xen.x86_64
10
:
6
-
4
.el6.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================================================================
Installing:
centos-release-xen x86_64
10
:
6
-
4
.el6.centos extras
4.9
k
Transaction Summary
==========================================================================================================================================================================================================
Install
1
Package(s)
Total download size:
4.9
k
Installed size:
1.3
k
Is
this
ok [y/N]: y
Downloading Packages:
centos-release-xen-
6
-
4
.el6.centos.x86_64.rpm |
4.9
kB
00
:
00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing :
10
:centos-release-xen-
6
-
4
.el6.centos.x86_64
1
/
1
Verifying :
10
:centos-release-xen-
6
-
4
.el6.centos.x86_64
1
/
1
Installed:
centos-release-xen.x86_64
10
:
6
-
4
.el6.centos
Complete!
[root@logicserver ~]# yum list xen*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.skyshe.cn
* epel: ftp.cuhk.edu.hk
* extras: centos.ustc.edu.cn
* updates: centos.ustc.edu.cn
Xen4CentOS |
3.4
kB
00
:
00
Xen4CentOS/primary_db |
150
kB
00
:
00
Available Packages
xen.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-debuginfo.x86_64
4.1
.
2
-
20
.el6 el6-xen
xen-devel.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-doc.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-hypervisor.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-libs.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-licenses.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-ocaml.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-ocaml-devel.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xen-runtime.x86_64
4.4
.
2
-
7
.el6 Xen4CentOS
xenserverjava.noarch
5.6
.
100.1
-
1
.el6 epel
xenserverjava-javadoc.noarch
5.6
.
100.1
-
1
.el6 epel
|
1
2
3
4
5
|
[root@logicserver ~]# ll /boot/xen*
-rw-r--r--.
1
root root
855600
8
月
3
20
:
18
/boot/xen-
4.4
.
2
-
7
.el6.gz
lrwxrwxrwx.
1
root root
18
9
月
8
13
:
20
/boot/xen-
4.4
.gz -> xen-
4.4
.
2
-
7
.el6.gz
lrwxrwxrwx.
1
root root
18
9
月
8
13
:
20
/boot/xen.gz -> xen-
4.4
.
2
-
7
.el6.gz
-rw-r--r--.
1
root root
15925635
8
月
3
20
:
18
/boot/xen-syms-
4.4
.
2
-
7
.el6
|
安装完支持 Xen 的 Linux 内核后需要加新条目到 grub.conf,以便系统能默认启动带 Xen 的 Linux 内核(而不是常规 Linux 内核),这个操作可以通过 grub-bootxen.sh 自动完成,弄完后打开 grub.conf 文件再次确认一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
root@logicserver ~]# vim /etc/grub.conf
# 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/sda2
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default
=
0
timeout=
5
splashimage=(hd0,
0
)/grub/splash.xpm.gz
hiddenmenu
title CentOS (
3.18
.
17
-
13
.el6.x86_64)
root (hd0,
0
)
kernel /xen.gz dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
module /vmlinuz-
3.18
.
17
-
13
.el6.x86_64 ro root=UUID=
17793804
-41a2-4cec-b58d-ffec3766aaf3 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-
8
rd_NO_LVM rd_NO_DM rhgb quiet
module /initramfs-
3.18
.
17
-
13
.el6.x86_64.img
title CentOS (
2.6
.
32
-
279
.el6.x86_64)
root (hd0,
0
)
kernel /vmlinuz-
2.6
.
32
-
279
.el6.x86_64 ro root=UUID=
17793804
-41a2-4cec-b58d-ffec3766aaf3 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-
8
rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-
2.6
.
32
-
279
.el6.x86_64.img
|
重启机器reboot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[root@logicserver ~]# service xend start
启动 xend 守护进程: [确定]
[root@logicserver ~]# xm info
WARNING: xend/xm
is
deprecated.
host : logicserver
release :
3.18
.
17
-
13
.el6.x86_64
version : #
1
SMP Tue Jul
21
17
:
17
:
17
UTC
2015
machine : x86_64
nr_cpus :
2
nr_nodes :
1
cores_per_socket :
2
threads_per_core :
1
cpu_mhz :
2993
hw_caps : bfebfbff:
28100800
:
00000000
:00007f00:059ae3bf:
00000000
:
00000001
:
00000281
virt_caps : hvm
total_memory :
8068
free_memory :
6951
free_cpus :
0
xen_major :
4
xen_minor :
4
xen_extra : .
2
-
7
.el6
xen_caps : xen-
3.0
-x86_64 xen-
3.0
-x86_32p hvm-
3.0
-x86_32 hvm-
3.0
-x86_32p hvm-
3.0
-x86_64
xen_scheduler : credit
xen_pagesize :
4096
platform_params : virt_start=
0xffff800000000000
xen_changeset : Thu Apr
23
15
:
06
:
13
2015
+
0100
git:8621d99-dirty
xen_commandline : dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
cc_compiler : gcc (GCC)
4.4
.
7
20120313
(Red Hat
4.4
.
7
-
11
)
cc_compile_by : mockbuild
cc_compile_domain : centos.org
cc_compile_date : Mon Aug
3
12
:
17
:
58
UTC
2015
xend_config_format :
4
|
1
2
3
4
|
[root@logicserver ~]# xm list
WARNING: xend/xm
is
deprecated.
Name ID Mem VCPUs State Time(s)
Domain-
0
0
1021
2
r-----
94.7
|
另外xl不需要xend服务的,所以在使用它前,需要把xend服务停掉
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
[root@logicserver ~]# service xend stop
正在关闭 xend 守护进程: [确定]
[root@logicserver ~]# xl info
host : logicserver
release :
3.18
.
17
-
13
.el6.x86_64
version : #
1
SMP Tue Jul
21
17
:
17
:
17
UTC
2015
machine : x86_64
nr_cpus :
2
max_cpu_id :
1
nr_nodes :
1
cores_per_socket :
2
threads_per_core :
1
cpu_mhz :
2993
hw_caps : bfebfbff:
28100800
:
00000000
:00007f00:059ae3bf:
00000000
:
00000001
:
00000281
virt_caps : hvm
total_memory :
8068
free_memory :
6951
sharing_freed_memory :
0
sharing_used_memory :
0
outstanding_claims :
0
free_cpus :
0
xen_major :
4
xen_minor :
4
xen_extra : .
2
-
7
.el6
xen_version :
4.4
.
2
-
7
.el6
xen_caps : xen-
3.0
-x86_64 xen-
3.0
-x86_32p hvm-
3.0
-x86_32 hvm-
3.0
-x86_32p hvm-
3.0
-x86_64
xen_scheduler : credit
xen_pagesize :
4096
platform_params : virt_start=
0xffff800000000000
xen_changeset : Thu Apr
23
15
:
06
:
13
2015
+
0100
git:8621d99-dirty
xen_commandline : dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
cc_compiler : gcc (GCC)
4.4
.
7
20120313
(Red Hat
4.4
.
7
-
11
)
cc_compile_by : mockbuild
cc_compile_domain : centos.org
cc_compile_date : Mon Aug
3
12
:
17
:
58
UTC
2015
xend_config_format :
4
[root@logicserver ~]# xl list
Name ID Mem VCPUs State Time(s)
Domain-
0
0
1021
2
r-----
106.8
|