注 1:本次实验环境——真机 CentOS 5.8 32 位,虚拟机 CentOS 5.2 32 位,真机 IP:192.168.100.117
注 2:实验前请务必记录真机的 MAC 地址,以免后续无法正常联网。本机 MAC 为 00:1D:7D:CD:D7:74
第一步 检查硬件支持情况
1. 半虚拟化硬件要求
首先确认 CPU 是否支持半虚拟化功能,执行以下命令即可查看:
[root@xen ~]# cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
pbe nx lm constant_tsc pni monitor ds_cpl est tm2 cid cx16 xtpr lahf_lm
重点观察输出中是否包含 pae 标识。如果出现该标志,说明 CPU 支持半虚拟化。本次实验正是基于半虚拟化方式进行。
2. 全虚拟化硬件要求
由于手头暂无支持全虚拟化的硬件,这里简要说明查询方法,命令与上述相同:
Intel CPU 需同时出现 pae 和 vmx;AMD CPU 则需同时出现 pae 和 svm。满足这些条件才能运行全虚拟化。
第二步 安装 Xen 核心组件
开始安装之前,请务必关闭 SELinux 和 NetworkManager。在 /etc/sysconfig/network-scripts/ifcfg-eth0 中添加一行:
NM_CONTROLLED=no
1. 基本安装与验证
[root@xen ~]# yum install xen* kernel-xen*
[root@xen ~]# vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-308.4.1.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-308.4.1.el5
module /vmlinuz-2.6.18-308.4.1.el5xen ro root=LABEL=/ rhgb quiet
module /initrd-2.6.18-308.4.1.el5xen.img
title CentOS (2.6.18-308.4.1.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-308.4.1.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-308.4.1.el5.img
看到上面那个 el5xen 内核选项了吗?将 default 修改为 0,重启后系统便会以 Xen 内核引导。
[root@xen ~]# shutdown -r now
重启完成后,检查内核版本:
[root@xen ~]# uname -r
2.6.18-308.4.1.el5xen
[root@xen ~]# chkconfig --list | grep xen
xend 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
xendomains 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
[root@xen ~]# pstree -p | grep xen
| |-xenbus(14)
| `-xenwatch(13)
|-xenconsoled(2860)---{xenconsoled}(2861)
|-xend(2856)---xend(2858)-+-{xend}(2862)
| |-{xend}(2866)
| |-{xend}(2867)
| |-{xend}(3086)
| `-{xend}(3087)
|-xenstored(2852)
[root@xen ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 1763 2 r----- 37.1
若上述输出与加粗部分基本相符,则说明 Xen 内核已成功启动。
2. Xen 的软件结构解析
/usr/sbin/xend— xend 守护进程的启动脚本,用 Python 编写,结构清晰易懂。/usr/sbin/xm— 管理 Xen 的命令行工具,输入xm help即可查看全部用法。/etc/xen/xend-config.sxp— xend 的主配置文件,通常无需修改。/etc/xen/— 存放各个 domain-U 的配置文件模板,其中xmexample.hvm是全虚拟化的参考配置。/etc/xen/auto/— 系统开机时自动启动某个 domain-U 的目录。例如:
[root@xen ~]# cd /etc/xen/auto/
[root@xen auto]# ln -s ../xmexample.hvm .
这样系统启动时会自动加载 xmexample 虚拟机——但鸟哥提醒,切勿直接使用,需自行修改配置文件。
/etc/xen/scripts— 存放虚拟设备及网络相关的启动脚本。
第三步 安装虚拟系统
1. 创建存放虚拟系统的目录
[root@xen auto]# cd /var
[root@xen var]# mkdir vps
我们将虚拟机镜像统一放置在 /var/vps 目录下。
2. 制作空映像文件
[root@xen var]# dd if=/dev/zero of=/var/vps/vps1.img bs=1M count=8000
count 参数决定镜像大小,这里分配了 8 GB 空间。
3. 安装 vsftpd 并挂载系统光盘
[root@xen ~]# yum install vsftpd
[root@xen ~]# service vsftpd start
[root@xen ~]# mount /dev/cdrom /var/ftp/pub/
至此,匿名 FTP 服务搭建完成。通过浏览器访问:
ftp://192.168.100.117/pub/
若能看到光盘内容,则说明配置成功。
4. 进入 /var/vps 目录创建虚拟机
[root@xen ~]# cd /var/vps/
[root@xen vps]# virt-install --prompt
What is the name of your virtual machine? vps1 #输入虚拟机名称
How much RAM should be allocated (in megabytes)? 415 #分配内存大小
What would you like to use as the disk (file path)? /var/vps/vps1.img #指定磁盘镜像路径
What is the install URL? ftp://192.168.100.117/pub/ #设置安装源地址
接下来会进入文本模式的安装界面:
Welcome to CentOS
+---------+ Choose a Language +---------+
| |
| What language would you like to use |
| during the installation process? |
| |
| Catalan ^ |
| Chinese(Simplified) : |
| Chinese(Traditional) # |
| Croatian : |
| Czech : |
| Danish : |
| Dutch : |
| English v |
| |
| +----+ |
| | OK | |
| +----+ |
| |
| |
+---------------------------------------+
/ between elements | selects | next screen
文本安装模式并不复杂,选择语言、分区等步骤与图形界面类似,若遇到问题可随时搜索解决。
安装完成后重启,会看到:
CentOS release 5.2 (Final)
Kernel 2.6.18-92.el5xen on an i686
localhost.localdomain login: root
Password:
[root@localhost ~]#
输入用户名和密码即可进入系统。退出虚拟机的快捷键与 telnet 相同——CTRL + ]。
5. 管理 Xen 虚拟机基本命令
查看当前系统中的虚拟机信息:
[root@xen vps]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 1599 2 r----- 421.9
vps1 2 415 1 -b---- 24.9
顺便说明 State 列中 6 种状态的含义:
r— 运行中(running)b— 阻塞(blocked,类似于 sleep 状态,不执行)p— 暂停(paused,通常因执行了xm pause)s— 已关闭(shutdown)c— 崩溃(crashed)d— 即将消亡(dying)
查看虚拟机负载:
[root@xen vps]# xm top
关闭虚拟机:
[root@xen vps]# xm shutdown vps1
进入虚拟机控制台:
[root@xen vps]# xm console vps1
启动虚拟机:
[root@xen vps]# xm create vps1
将 vps1 添加至真机开机自启动:
[root@xen xen]# ln -s /etc/xen/vps1 /etc/xen/auto/vps1
更多参数可输入 xm help 查看。
6. Xen 虚拟机克隆与复制
首先关闭要复制的虚拟机:
[root@xen xen]# xm shutdown vps1
复制镜像文件和配置文件:
[root@xen xen]# cp /var/vps/vps1.img /var/vps/vps2.img
[root@xen xen]# cp /etc/xen/vps1 /etc/xen/vps2
修改新虚拟机的配置文件:
[root@xen xen]# vi /etc/xen/vps2
原始配置内容:
name = "vps1"
uuid = "1f251cca-5ea2-49fb-95e6-3b08359e6d33"
maxmem = 415
memory = 415
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/var/vps/vps1.img,xvda,w" ]
vif = [ "mac=00:16:3e:44:09:ca,bridge=xenbr0,script=vif-bridge" ]
修改后的配置:
name = "vps2"
uuid = "1f251cca-5ea2-49fb-95e6-3b08359e6d34"
maxmem = 415
memory = 415
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/var/vps/vps2.img,xvda,w" ]
vif = [ "mac=00:16:3e:44:09:cb,bridge=xenbr0,script=vif-bridge" ]
关键点:name、uuid、mac 必须保持唯一,disk 路径也要指向新镜像文件。
然后启动新虚拟机:
[root@xen xen]# xm create -c vps2
进入系统后,修改主机名和 IP:
[root@localhost ~]# vi /etc/hosts
[root@localhost ~]# vi /etc/sysconfig/network
[root@localhost ~]# hostname vps2
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Xen Virtual Ethernet
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:16:3E:44:09:CB # 替换为配置文件中设定的 MAC 地址
ONBOOT=yes
IPADDR=192.168.100.167
NETMASK=255.255.255.0
NETWORK=192.168.100.0
GATEWAY=192.168.100.1
至此,一台全新的 Xen 虚拟机克隆完成。
