Xen是主流虚拟机中性能损耗最小的(可是不支持windows平台),目前能够运行在x86系统上,并正在向x86_6四、IA6四、PPC移植。移植到其余平台从技术上是可行的,将来有可能会实现。
1.安装支持Xen的Linux内核和 Xen
yum -y install xen kernel-xen xen-lib virt-manager python-virtinst
kernel-xen:能够跑 Xen 的 Linux 核心
xen:主要的 xen 套件,包括配置文件、启动脚本和一些函数库
xen-libs:Xen 所须要的函数库
python-virtinst:提供终端安装的软件
virt-manager:用于图形界面管理xen
2.修改默认以支持xen的内核启动
default=0
重启系统
检查内核
uname -r
输出 2.6.18-238.9.1.el5xen
查看xen是否启动
3.在xen中安装操做系统
xen中安装操做系统时,能够支持三种安装源:
NFS : nfs:主机IP:目录
WWW : http://主机IP/目录
FTP : ftp://主机IP/目录
咱们采用 WWW 方式(这种方式很是方便,安装源能够是一个包含安装文件的能够访问到的web环境):
制做安装源(将光驱挂载到/mnt/cdrom)
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
安装httpd(若是未安装)
修改httpd默认目录
vi /etc/httpd/conf/httpd.conf
将DocumentRoot "/var/www/html"修改成DocumentRoot "/mnt/cdrom"
将<Directory "/var/www/html">修改成<Directory "/mnt/cdrom">
sed -i 's#DocumentRoot "/var/www/html"#DocumentRoot "/mnt/cdrom"#' /etc/httpd/conf/httpd.conf
sed -i 's#<Directory "/var/www/html">#<Directory "/mnt/cdrom">#' /etc/httpd/conf/httpd.conf
重启httpd
制做客户机主要磁盘
mkdir -p /data/vm
dd if=/dev/zero of=/data/vm/web_001.img bs=2k seek=4096k count=1
制做客户机交换磁盘
dd if=/dev/zero of=/data/vm/swap.img bs=2k seek=512k count=1
安装操做系统
virt-install -n web_001 -r 512 --vcpus=1 --nographic -f /data/vm/web_001.img -l http://192.168.9.220
# -n :后面接虚拟机名称,配置 /etc/xen 底下
# -r :后面接分配的内存大小,至少须要 256MB 才能夠執行
# --vcpus : 分配多少个cpu
# -f :后面接新建的磁盘文件!
# --nographics :不使用图形化安装;
# -p : 半虚拟化
# -s : 虚拟机的硬盘空间
# -l :后面接安装源。写法为:
# NFS : nfs:主机IP:目录
# WWW : http://主机IP/目录
# FTP : ftp://主机IP/目录
而后根据系统提示安装系统
安装完成后,查看真实机上的虚拟机列表
输出的列表中会包含新建的 web_001 虚拟机
4.附相关操做命令
ls /etc/xen #xen配置文件目录
xm list #查看各个域状态
xm shutdown web_001 #关闭web_001这个虚拟机
xm console web_001 链接web_001控制台,链接到虚拟机上面能够用组合键 ctrl + ] 键切换到物理机
#若是配置了IP,能够用ssh -l username IP 来链接
xm create web_001 启动web_001
5.真实机开机如何自动启动虚拟机
ln -s /etc/xen/web_001 /etc/xen/auto/web_001
#也能够直接把配置文件拷贝到/etc/xen/auto/
cp -r /etc/xen/web_001 /etc/xen/auto/
6.XM命令:
xm create vm1 #其中vm1 为虚拟机的配置文件,位于/etc/xen/vm/vm1
xm create -c vm1 #若是须要启动控制台,则能够运行命令
xm list #能够列出全部的虚拟机
xm console <domid> #能够显示某虚拟机的控制台
xm reboot|shutdown <domid> #能够重起和关闭id 为domid 的虚拟机
xm destroy <domid> #能够销毁id 为domid 的虚拟机
xm console fc5 #从终端或控制台登陆正在运行的虚拟操做系统
xm save <DomId> <File> # 存储正在运行的虚拟操做系统的状态
xm restore <File> # 唤醒虚拟操做系统
xm pause <DomId> #中止正在运行的虚拟操做系统
xm unpause <DomId> #激活中止的虚拟操做系统
xm mem-set <DomId> <Mem> #调整虚拟平台/虚拟操做系统的占用内存
xm shutdown 虚拟操做系统的Name或DomID #关闭被虚拟的系统
xm destroy <DomId> #当即中止虚拟的系统 (重要);
xm vcpu-set <DomId> <VCPUs> #调整虚拟平台及虚拟操做系统的虚拟CPU个数
xm top 或 xentop # 查看虚拟系统运行的状态
xm save VM1 VM1.chk # stop the domain and save its current state into a file called VM1.chk
xm restore VM1.chk #resume execution of this domain
7.XEN虚拟机复制
关闭运行中的虚拟机
复制虚拟机的镜像文件和配置文件
cp /data/vm/web_001.img /data/vm/web_002.img
cp /etc/xen/web_001 /etc/xen/web_002
修改新复制虚拟机的配置文件
原内容为:
name = "web_001"
uuid = "21e3bccf-4778-747e-c3b7-a87cadfa29fa"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/data/vm/web_001.img,xvda,w" ]
vif = [ "mac=00:16:36:64:98:f1,bridge=xenbr0,script=vif-bridge" ]
修改后的内容为:
name = "web_002"
uuid = "21e3bccf-4778-747e-c3b7-a87cadfa29fd"
maxmem = 512
memory = 512
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/data/vm/web_002.img,xvda,w" ]
vif = [ "mac=00:16:36:64:98:f5,bridge=xenbr0,script=vif-bridge" ]
*保证name、uuid、mac的惟一性,还有就是disk路径
启动并进入新复制的虚拟机
修改主机名
将web_001修改成web_002
vi /etc/sysconfig/network
将web_001修改成web_002
修改IP
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Xen Virtual Ethernet
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.9.255
HWADDR=00:16:36:64:98:f5
IPADDR=192.168.9.222
NETMASK=255.255.255.0
NETWORK=192.168.9.0
ONBOOT=yes
Q:
bs=2k seek=4096k count=1 参数详细意思
bs=2k:设置读写块的大小为 2k
seek=4096k:从输出文件开头跳过 4096k 个块后再开始复制(一般只有当输出文件是磁盘或磁带时才有效)
count=1:仅拷贝 1 个块(块大小等于 bs 指定的字节数)