在CentOS上安装和配置Xen并且安装Xen guest

创建和安装xen guest
我们这里使用virt-install工具进行guest的安装,当然你也可以使用xm命令安装,不过相对麻烦点。
如果virt-install工具没有则需要安装
yum -y install virt-install

可以执行virt-install -help学习这工具的使用方法。
下面是安装guest的示例

virt-install -n CentOSVM1 -r 512 -f /xen/CentOSVM1.img  -l http://www/  –network=network:default -s 10 –nographics –vcpus=2

或者使用交互式安装

virt-install –prompt

-n CentOSVM1 设置虚拟服务器名称
-r 512 设置内存大小
-f /xen/CentOSVM1.img 虚拟磁盘文件的保存路径,如果有重名可以使用–force参数强制重建。
-l http://www/ 安装文件的访问方式,支持nfs http ftp smb等多种方式。如果你对你的带宽比较自信,可以使用http://mirrors.163.com/centos/5.5/os/i386/网易的镜像站
–network=network:default 网络连接方式,我选择的是route中的default
-s 10磁盘文件的大小,单位是G
–nographics 不使用图形界面,可以不加此参数,然后加–vnc看看图形效果
–vcpus=2 虚拟CPU的个数
在执行virt-install命令安装系统之前,先确定你的安装源,支持nfs http ftp smb等多种方式,宽带大的话,可以使用http直接连接远程安装源,比如mirror.163.com。
我这里adsl上网的,本地已经下载有iso文件了,所以在本地架设个http服务器进行安装。
1、挂载iso文件到/iso目录,这个目录必须存在。

mount -o loop CentOS-6.2-x86_64-minimal.iso /iso

2、安装httpd服务器,我这里安装apache

yum install httpd
service httpd start

3、创建软链接或直接复制文件到apache根目录/var/www/html,如果你的centos 6.2是完整版,只需要做个软链接,如果下载的是精简版,也就是minimal,需要复制全部文件到根目录,因为.treeinfo这个文件需要相应的修改。

centos 6.2完整版:

ln -s /iso /var/www/html

centos 6.2精简版:

cp -R /iso /var/www/html

修改.treeinfo文件,如:

    [general]
    family = CentOS
    timestamp = 1323560005.81
    variant =
    totaldiscs = 1
    version = 6.2
    discnum = 1
    packagedir =
    arch = x86_64

    [images-x86_64]
    kernel = isolinux/vmlinuz
    initrd = isolinux/initrd.img

    [images-xen]
    kernel = isolinux/vmlinuz
    initrd = isolinux/initrd.img

    [stage2]
    mainimage = images/install.img

centos 6.4精简版:

[general]
family = CentOS
timestamp = 1362445360.18
variant =
totaldiscs = 1
version = 6.4
discnum = 1
packagedir =
arch = x86_64

[images-x86_64]
 kernel = isolinux/vmlinuz
 initrd = isolinux/initrd.img

[images-xen]
 kernel = isolinux/vmlinuz
 initrd = isolinux/initrd.img

[stage2]
mainimage = images/install.img

注意:以上第1、第2、第3步,可以不用操作(除了修改.treeinfo文件),通过把镜像文件(最好用软件UltraISO打开镜像文件,然后通过“提取”功能导出所有文件,如果直接通过解压缩软件解压,会出现下文所提到的可能出现的问题)放到局域网内的另一个服务器上也可以实现

4、在安装之前,需要暂时关闭iptables,否则安装过程中会无法取得相应文件。

service iptables stop

5、开始使用virt-install安装
创建xen目录
mkdir /xen
安装

virt-install -n centos6 -r 512 -f /xen/CentOSVM1.img -l http://192.168.1.100/iso --network=network:default -s 4 --vcpus=2

安装Debian系统示例:

virt-install -n Debian_61 -r 512 --vcpus=2 -f /xen/Debian_61.img -l http://mirrors.sohu.com/debian/dists/Debian7.1/main/installer-amd64/ --accelerate --nographics --network=bridge:br0 -s 10

或者使用官方下载源

virt-install -n Debian_61 -r 512 --vcpus=2 -f /xen/Debian_61.img -l http://ftp.debian.org/debian/dists/Debian7.1/main/installer-amd64/ --accelerate --nographics --network=bridge:br0 -s 10

之后会自动调用virt-viewer工具显示安装界面。
6、启动guest centos6
安装完成后会要求重启,这时guest关闭之后不会自动启动,需要使用xm start命令启动:

xm start centos6

7、开启iptables

之前为了连接安装源,暂时关闭了iptables,现在需要启动iptables,否则guest无法连接外网。

service iptables start

8、使用virt-viewer管理guest

virt-viewer centos6

执行这条命令即可连接虚拟机centos6进行管理了,当然也可以直接使用ssh连接更简单。

进入 guest
安装成功后就可以登录 guest 了,

/usr/sbin/xm console centos6

如果要退出 guest 的话,用 Ctrl + ],就会回到 host。

如果想每次启动 host 时自动启动 guest 的话:

ln -s /etc/xen/centos6 /etc/xen/auto

常用 Xen 命令
xm console 连接到虚拟机控制台
xm create 根据配置文件创建主机,如果您一直follow之前的操作并且完成了虚拟主机的安装,这条命令实际上等于启动一台虚拟机
xm shutdown 关机
xm reboot 重启
xm delete 从xend 的Domain 管理器中删除一个Domain ;
xm destroy 删除主机
xm top 各主机之前的资源占用情况
xm uptime 显示你的Xen环境里所有域的正常运行时间
xm list – List all running systems.
xm help – List of all commands.

xm常用命令一览表

xm list:所有已知的虚拟机列表
xm create:启动一个非托管的虚拟机
xm top:提供所有虚拟机的状态概貌
xm console:打开控制台管理虚拟机
xm new:添加虚拟机到Xenbase托管环境
xm start:从Xenbase托管环境启动虚拟机
xm destroy:像关掉电源那样关闭虚拟机
xm shutdown:正确地关掉虚拟机
xm reboot:重新启动虚拟机
xm pause:暂停虚拟机的活动而不释放使用的内存资源
xm unpause:激活使用xm pause命令暂停的虚拟机
xm save:保存虚拟机状态到一个文件
xm restore:重新启动已经保存在文件里的虚拟机
xm block-attach:添加一块新的硬盘
xm block-detach:删除一块硬盘。
xm log 打印Xen日志
xm addlabel label dom configfile [policy]
xm addlabel label res resource [policy] 增加了名称为label的安全标签,标签名称可自定义
xm getlabel dom configfile
xm getlabel res resource 显示标准从dom的配置文件 or resource
xm labels [policy] [type=dom|res|any] 列出了所有类型的标签中所界定的策略,除特殊,默认策略是当前实施的访问控制策略。默认的类型为dom,这些标签是按字母顺序排列。
xm rmlabel dom configfile
xm rmlabel res resource 删除标签从dom的配置文件或res resource
xm migrate [destination domain] 离线迁移guest os
xm migrate -l [destination domain] 在线迁移guest os
xm mem-set 调整正在运行中的虚拟平台(Domain-0)所占存大小及虚拟操作系统所占用的内存大小,可以动态修改,如果出现Error:memory_dynamic_max must be less than or equal to memory_static_max
说明超出内存的最大限制,可以使用 xm mem-max /

xm network-attach [script=scriptname] [ip=ipaddr] [mac=macaddr] [bridge=bridge-name] [backend=bedomain-id]
在指定的domain创建一个新的网络设置(指定设备id)
script=scriptname 使用指定的脚本的名称,默认设置为xend-config.sxp中的vif-script
ip=ipaddr
mac=macaddr
bridge=bridge-name
backend=bedomain-id

xm network-detach devid
从domain中移除指定的域ID的网络设备。 devid是虚拟接口domain内设备号

xm network-list 列出某个域使用的所有的网络接口
xm pci-attach 建立一个新的pci设备
xm pci-detach 从domain中移除pci设备
xm pci-list 显示domain的pci设置
xm scsi-attach [BackDomain] 添加一个新的scsi设备
xm scsi-detach 移除一个指定的scsi设备
xm scsi-list [–long] 列出所有当前连接的SCSI设备。
xm uptime 显示你的Xen环境里所有域的正常运行时间
xm usb-add <[host:bus.addr] [host:vendor_id:product_id]> 添加usb设备到FV VM
xm usb-del <[host:bus.addr] [host:vendor_id:product_id]> 删除FV VM的usb设备
xm vcpu-list 列出所有域的CPU对应情况
xm vcpu-pin vcpu cpu 固定vcpu到物理cpu
例如 xm vcpu-pin domname all all 固定vcpu到所有物理cpu

xm vcpu-pin domname all 2,3,4,5 固定vcpu到物理cpu的2-5
xm vcpu-set vcpu-num 修改虚拟机的 CPU 数量
xm vncviewer [–autopass/–vncviewer-autopass] 使用vnc连接guest os
xm vnet-create 从配置文件创建一个vnet
xm vnet-delete 删除vnet
xm vnet-list Vnets的列表
xm vtpm-list [-l|–long] 显示domain中虚拟tpm的设备。

实例
#xm list
查看正在运行的虚拟机name就是domain的名字。
ID是domain的id号。
Men是分配给这个domain的内存大小。
VCPUS是分配给这个domain的VCPU个数。
State是domain的运行状态(参看下文)。
Time是通过Xen判断的domain运行时间。
STATES
state段能列出6中Xen Domain的状态,State为下面的其中一个。
r – 运行
Domain正在CPU里面运行
b – 阻塞
domain阻塞,意味这个domain不处于运行或者可运行的状态。导致这种状态可能是因为domain正在等待IO(a traditional wait state)或者因为闲置而已经处于sleep状态。
p – 暂停
domain处于暂停状态,通常是因为管理员运行了xm pause命令。处于暂停状态的domain依旧会占用系统资源,比如内存。但是不会被Xen hypervisor列出(but will not be eligible for scheduling by the Xen hypervisor)。
s– 关闭
guest已经被请求关闭,重启,挂起(suspended),或者domain处于即将被摧毁的进程状态。
c – 崩溃
domain崩溃,which is always a violent ending。通常这种状态只有在没有在配置文件中设置当崩溃时候重启的时候才会出现。更多信息请参照xmdomain.cfg。
d – 垂死
domain处于垂死状态,但是还没有完全被关闭,或者未崩溃。
#xm create vm1
启用vm1虚拟机
#xm -f /etc/xen/vm1
启用vm1虚拟机,/etc/xen/vm1为虚拟机配置文件。
#xm console vm1
打开控制台管理vm1虚拟机
#dd if=/dev/zero of=/data/vm1.img bs=1M count=30720
#xm block-attach vm1 tap:aio:/data/vm1.img xvdb w
添加新的30G硬盘

更多命令参考:
xen虚拟机管理命令:http://www.cnblogs.com/heidsoft/p/4158767.html
xm 命令详解:http://blog.sina.com.cn/s/blog_3f12afd00100xqsz.html

===========================================
其他常用命令

克隆一个虚拟机
virt-clone –original sencond –name windows3 –file /data/windows3.img

创建一个虚拟机
virt-install –name solaris2 –ram 1024 –nographics –file /dev/md/dsk/solaris2-disk –os-type=solaris os-variant=solaris10 –location /export/isos/nv75-dvd.iso

查看Xen内核版本
[root@localhost ~]# cd /sys/hypervisor
[root@localhost hypervisor]# ls
compilation properties type uuid version vmcoreinfo
[root@localhost hypervisor]# cat properties/changeset
unavailable
[root@localhost hypervisor]# cat version/major
3
[root@localhost hypervisor]# cat version/minor
4
[root@localhost hypervisor]# cat version/extra
.3
Xen内核版本为3.4.3
参考资料:http://blog.163.com/bihonggang_anshan/blog/static/131715643201211541510733/

补充:
生成配置文件的位置:/var/lib/xend/domains/UUID(用实际的UUID号代替)/config.sxp

可能出现的问题
1、网络安装出现错误 “unable to read package metadata.this may be due to a missing repodata directory”
现象:网络安装配置完成client 可以获取文件进行安装,忽然出现错误提示
“unable to read package metadata.this may be due to a missing repodata directory . please ensure that your install tree has been correctly generated ……”
解决方案:根据错误提示查看了/var/www/html/repodate/ 下的文件.(镜像文件存放目录)
发现这些文件都没有后缀名无法识别。
后来想到自己的安装文件都是本地光驱拷贝文件后上传到服务器上的.难道问题出在这里?
然后把安装光盘放入光驱挂载(或用软件UltraISO打开镜像文件,然后通过“提取”功能导出repodate目录)到本地看看是不是有后缀名。结果证明我是对的,光盘里面的文件确实有后缀名。替换自己安装文件里面的repodate。
替换之后重新网络无人安装:(成功)

参考资料:
在 CentOS 上安装和配置 Xen:http://www.vpsee.com/2009/07/install-xen-on-centos/
CentOS 6安装配置Xen:http://www.centos.bz/2012/03/centos-6-install-deploy-xen/
xen虚拟化使用virt-install命令安装虚拟机:http://ppp1013.blog.51cto.com/927700/335053
使用virt-install 创建Xen虚拟机:http://blog.csdn.net/zklth/article/details/6339811
Linux 中的 XEN 虚拟化技术(三)创建 Xen 虚拟系统:http://jiayf.blog.51cto.com/1659430/353028

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据