Linux系统Xen虚拟机安装配置详细教程

作者:技术拾光时间:2026-07-26 08:56:02浏览:198

注 1 :本次实验环境 真机 CentOS 5.8 32位, 虚拟机 CentOS 5.2 32位, 真机IP: 192.168.100.117 注 2 :实验前一定要先记下真机的 MAC 地址,以免以后不能上网用,我这里的 MAC 是 00:1D:7D:CD:D7:74 第一步 查看硬件支持 1.

注 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 字符。有的话,就说明支持半虚拟化。本次实验就是基于半虚拟化来做的。

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 虚拟机就复制完成了。