xen实验笔记.docx
《xen实验笔记.docx》由会员分享,可在线阅读,更多相关《xen实验笔记.docx(14页珍藏版)》请在冰豆网上搜索。
xen实验笔记
xen实验笔记
(2011-10-0621:
39:
25)
转载▼
标签:
杂谈
分类:
linux
!
!
没保存被新浪给忽悠了,只能重写了
1.在VM的centos5.6主机上装xen:
yuminstall-ybridge-utilsiproutegrubgccbinutilsmakezlibzlib-develpythonpython-develdnsmasqSDLcyrus-sasl-md5iscsi-initiator-utilsxen-libslibvirtlibvirt-pythonpython-virtinst
yuminstall-ykernel-xen-2.*kernel-xen-devel-2.*xen-devel*xen-3*
[root@xen~]#cat/boot/grub/grub.conf
#grub.confgeneratedbyanaconda
#
#Notethatyoudonothavetorerungrubaftermakingchangestothisfile
#NOTICE:
Youdonothavea/bootpartition. Thismeansthat
# allkernelandinitrdpathsarerelativeto/,eg.
# root(hd0,0)
# kernel/boot/vmlinuz-versionroroot=/dev/sda1
# initrd/boot/initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
titleCentOS(2.6.18-274.3.1.el5xen)
root(hd0,0)
kernel/boot/xen.gz-2.6.18-274.3.1.el5
module/boot/vmlinuz-2.6.18-274.3.1.el5xenroroot=LABEL=/rhgbquiet
module/boot/initrd-2.6.18-274.3.1.el5xen.img
titleCentOS(2.6.18-274.3.1.el5)
root(hd0,0)
kernel/boot/vmlinuz-2.6.18-274.3.1.el5roroot=LABEL=/rhgbquiet
initrd/boot/initrd-2.6.18-274.3.1.el5.img
titleCentOS(2.6.18-238.el5)
root(hd0,0)
kernel/boot/vmlinuz-2.6.18-238.el5roroot=LABEL=/rhgbquiet
initrd/boot/initrd-2.6.18-238.el5.img
用xen的grub来引导系统,否则会报错,重启系统后:
[root@xen~]#servicexendstatus
xendisrunning
则表示xend已经成功启动啦
测试xmlist
[root@xen~]#xmlist
Name IDMem(MiB)VCPUsState Time(s)
Domain-0 0 747 4r----- 1478.0
这里的DOmain-0就是控制器了,详细的解释在XEN半虚拟化机制已经有很明确的说明了
2安装寄宿虚拟机
2.1首先选择安装介质,简单的方法就是将宿主机的cdrom挂载利用nfs共享安装介质
/etc/init.d/nfsstart
serviceportmapstart
mkdir-p/mnt/cdrom
mount/dev/cdrom/mnt/cdrom/
echo"/mnt/cdrom/192.168.126.0/24(ro)">>/etc/exports
servicenfsrestart
2.2创建虚拟磁盘:
mkdir/mnt/xen
ddif=/dev/zeroof=/mnt/xen/vm01.hdimgbs=1Mcount=6000
上文的意思是以/dev/zero这个特殊设备为模板,将其内容复制到/mnt/xen/vm01.hdimg设备文件上,
bs=1M的意思是每块尺寸1M,count=4096就是说要分配6000块,也就是说我们要创造一个6G的虚拟磁盘文件。
mkfs-text3/mnt/xen/vm01.hdimg
2.3进行安装:
virt-install-nvm01-r256-f/mnt/xen/vm01.hdimg--nographics-lnfs:
192.168.126.60:
/mnt/cdrom
利用nfs介质安装
选项说明详见virt-install--help
几幅图:
和图形界面安装无异,只是这里多了一个vnc,选择了不安装
安装完成后进入系统:
[root@vm01~]#uname-a
Linuxvm012.6.18-238.el5xen#1SMPThuJan1317:
49:
40EST2011i686i686i386GNU/Linux
发布的httpd也能正常访问,当然是在关掉iptabls的情况下。
初步的测试结束查看宿主机xmlist:
[root@xen~]#xmlist
Name IDMem(MiB)VCPUsState Time(s)
Domain-0 0 747 4r----- 1486.1
vm01 3 256 1-b---- 102.4
相关宿主机命令:
XEN自带的控制命令是xm工具,输入“xmhelp”后可以看到多种用法,这里列出常见的用法:
☆xmlist:
所有已知的虚拟机列表
☆xmconsole:
打开控制台管理虚拟机
☆xmcreate:
启动一个基础系统
☆xmshutdown:
正确地关掉虚拟机
☆xmdestroy:
像关掉电源那样关闭虚拟机
☆xmreboot:
重新启动虚拟机
☆xmhelp:
所有可用的xm命令概述
☆xmtop:
提供所有虚拟机的状态概貌
☆xmnew:
添加虚拟机到Xenbase托管环境
☆xmstart:
从Xenbase托管环境启动虚拟机
☆xmpause:
暂停虚拟机的活动而不释放使用的内存资源
☆xmunpause:
激活使用xmpause命令暂停的虚拟机
☆xmsave:
保存虚拟机状态到一个文件
☆xmrestore:
重新启动已经保存在文件里的虚拟机
+++++++++++++++++++++++++++++++++++++++++++++++++++++转载+++++++++++++++++++++++++++
下面我们就试试这些常见用法:
a.xmlist;列出来当前所有虚拟机的名字、ID、分配的内存、CPU、状态和开启时间
[root@xen~]#xmlist
NameIDMem(MiB)VCPUsStateTime(s)
Domain-007452r-----1401.8
vm0112551-b----2684.7
Domain-0的ID是1,分配了745M的内存,使用了2个CPU,当前状态是R(runing),CPU运
算时间是1401.8。
vm01的ID是1,它只有255M的内存和一个CPU,当前状态是B(blocked),
CPU运算时间是2684秒.(这里说的状态指的是硬件相关的状态,比如说开关机的过程中启动
硬件,比如说执行“sync”或者“clock-w”命令;)
b.xmconsole;可以连接到虚拟机的控制台,后面接虚拟机名字或者ID,console可以简写;
进入控制台后可以按“ctrl+]”退出控制台。
如下的几个命令是相同的:
xmconsolevm01xmconsole1xmcon1
c.执行完成上一步操作后我就关闭服务器回老家过端午节了,节后重新开机输入“xmlist”
却只能看到domain-0了,要想启动之前创建的虚拟机,需要使用这个命令:
[root@xen~]#xmcreate-f/etc/xen/vm01
Usingconfigfile"/etc/xen/vm01".
Starteddomainvm01
其中create是启动非托管(默认创建即为非托管)的虚拟机的意思;
“-f”制定的文件正是前面试验中为虚拟机创建的配置文件,默认的存放路径在/etc/xen.
另外,下面这个命令也很方便:
xmcreate-f/etc/xen/vm01
+============>xmcreate-c/etc/xen/vm01
xmconsolevm01
d.关闭虚拟机的时候,可以进入虚拟机,然后执行init或者shutdown相关命令。
但如果虚拟机已经处于假死状态,或者想在XEN上执行命令,则可以用如下方法:
[root@xen~]#xmshutdownvm01
[root@xen~]#xmdestroyvm01
第一个命令向虚拟机系统发出关机指令,然后由虚拟机系统自觉关闭系统;
第二个命令很暴力也很有效,模拟拔掉电源的操作;
2,XEN的套件结构
/usr/sbin/xendx
——该文件是用pythone编写的xend的启动脚本;
/usr/sbin/xm
——该命令可以管理xen虚拟机;
/etc/xen/xend-config.sxp
——该文件是设定xen服务本身和Domain-0的一些配置文档;
/etc/xen/
——这是xen设定的主目录,既有xen服务自己的设定档,下级目录有硬件脚本目录和auto目录。
virt-install安装后预设的虚拟机配置文件、预设的示例配置文件都在这里。
/etc/xen/auto
——如果你将虚拟机的配置文件放在这里或者链接到这里,在xend启动后就会启动它。
/etc/xen/scripts
——虚拟设备的启动脚本;
3,虚拟机的配置文件详解;
在/etc/xen目录,有虚拟机的示例配置文件xmexample1/xmexample2;文件中对每个具体参数
都做了很详细的解释,需要资料的朋友可以来这里查询。
刚才我们添加了一个虚拟机叫“vm01”,在/etc/xen/下面就会生成一个同名的配置文件,我们
就以此为例,来了解一下最基本的参数设定:
[root@xenxen]#catvm01
name="vm01"——虚拟机的名字叫“vm01”,也就是“xmlist”显示的内容;
uuid="92594675-9cb9-f728-b3cf-b252a837033c"——可以定义装置的uuid号,可注释掉;
maxmem=256——可注释掉;
memory=256——内存大小设定;
vcpus=1——CPU数量;
bootloader="/usr/bin/pygrub"——指定grub;
on_poweroff="destroy"——可注释掉;
on_reboot="restart"——可注释掉;
on_crash="restart"——可注释掉;
disk=["tap:
aio:
/mnt/xen/vm01.hdimg,xvda,w"]——磁盘设定,可以增加多块磁盘
vif=["mac=00:
16:
36:
18:
0d:
c9,bridge=xenbr1,script=vif-bridge"]——网路设定;
4,硬盘设定;
在虚拟机配置文件中,“disk=["……”是硬盘信息,详情如下:
disk=["tap:
aio:
/mnt/xen/vm01.hdimg,xvda,w"]
“tap:
aio:
{file}”是指定映像文件为硬盘的意思,
“/mnt/xen/vm01.hdimg”是指定映像文件的名路径;
“xvda”在该虚拟机内,该硬盘的硬件名为/dev/xvda;
“w”代表有写权限;
以上各行用括号括起来即为一块硬盘的配置文档;如果是多块硬盘,则可以参考如下配置:
disk=["tap:
aio:
/mnt/xen/vm01.hdimg,xvda,w","phy:
sdc,xvdb,w"]
两块硬盘用引号划定各自范围,硬盘之间用逗号进行分隔;
“phy:
{设备名}”代表这是直接映射的一块物理磁盘或者物理分区;
“sdc”是在xen上该硬件的名字,可以用硬盘文件也可以用硬盘分区文件;
5,网卡设定
在虚拟机配置文件中,“vif=["……”是网卡信息,详情如下:
vif=["mac=00:
16:
36:
18:
0d:
c9,bridge=xenbr1,script=vif-bridge"]
“mac={0x16}”自然是MAC地址了;
“bridge=xenbr1”网络连接方式是桥接到xenbr1网卡;
请你在XEN服务器中用ifconfig命令确认xenbr1的存在,我安装虚拟机时有时候是xenbr0网卡;
“script=vif-bridge"”使用这个脚本,具体脚本查看“/etc/xen/scripts”
默认只有一块网卡,如添加到两块网卡可以用如下方法,最多可以添加到三块网卡;
vif=["mac=00:
16:
36:
18:
0d:
c9,bridge=xenbr1,script=vif-bridge",
"mac=00:
16:
36:
18:
0d:
c1,bridge=xenbr1,script=vif-bridge"]
上文实际是一行内容,因篇幅问题断为两行,MAC地址可以自己编。
XEN虚拟机的资源管理
经过上文对XEN的讲解,我们可以了解到,XEN虚拟机就是通过配置文件定义的一堆实体/虚拟资源;
这些资源包括但不限于以下对象:
◇虚拟机域名;
这堆“资源”的集合的名字,我们理解为标识不同虚拟机的一个名字,也就是“xmlist”里的名字;
◇虚拟的主板及附带的I/O接口、设备;
任何服务器要启动都需要有主板,也包括虚拟机,我们容易忽视它仅仅是因为我们没有调试它;
而显卡键盘一类东西虽非启动服务器必须的,但你在运用这个虚拟机时必然会用到这个设备;
当你在Vmware或者VirtualBox里玩3D游戏的时候,不也会遇到显卡不够强力的问题么?
◇虚拟CPU;
在虚拟机的配置文件里可以定义虚拟机可用CPU的数量;
◇虚拟的内存;
在虚拟机的配置文件里可以定义虚拟机可用内存;
◇虚拟硬盘;
硬盘可以来自物理盘,也可以来自一个映像文件,但虚拟机接触到的必然是一个虚拟硬盘;
◇虚拟网络;
在虚拟机的配置文件里可以定义虚拟机可用的网卡和网卡连接的网络环境;
以上资源中,虚拟机域名是个纯粹的逻辑概念;主板是所有虚拟机都相同的;CPU和内存也仅仅
是数量和大小的一个简单数值;唯有硬盘和网络特殊一些。
当我们要克隆一个虚拟机的时候,只要将虚拟机的配置文件另存并修改一份,定义一下虚拟机
资源就可以了。
以下是我克隆一个虚拟机的实验步骤:
a.复制前文中vm01的配置文件,或者新建配置文件,文件名叫“vmhost2”;
b.修改虚拟机域名,将第一行写为“name=vm02”;
c.虚拟CPU和内存可以自行调整,虚拟主板里类似真实主板的系统时间、超频CPU一类设定动不了,
但“bootloader”不设定寻你主板就会报“Error:
Nokernelspecified”;所以也必须
设定grub,例如:
“bootloader="/usr/bin/pygrub"”;
d.设置硬盘资源,你可以将vm01的硬盘文件复制一份,也可以和vm01共用一块硬盘;
让两台虚拟机公用一个资源在逻辑上是没问题的,但如果两台虚拟机共用一块硬盘,第二台虚拟
机尝试读取该硬盘时(就是虚拟机启动硬盘引导时)xend会检测并制止这种行为;在此我要强调
我们复制新的硬盘文件是将资源复制成了两份,而非从XEN层面“硬盘资源”是一种特殊的资源;
f.最好是设置和现有虚拟机不同的MAC地址,连接方式可以用默认的bridge或者其他;
网络连接的情况和硬盘类似,你可以坐视两个虚拟机网卡的MAC地址撞车,也可以手动将其分开;
MAC地址相同造成的虚拟机逻辑上的网络问题并不像共用一个硬盘文件麻烦那么大,XEN服务器
不会制止这种两台虚拟机争抢一个资源的情况;
大功告成之后,就可以用xm命令启用并查看新的虚拟机了;
[root@xen~]#xmcreate-f/etc/xen/vmhost2
[root@xen~]#xmlist
NameIDMem(MiB)VCPUsStateTime(s)
Domain-004882r-----438.1
vm0162551-b----102.3
vm0272551-b----100.1
虚拟机的迁移
按照上文的内容,我新建里一个CentOS5.4,然后拷贝过来一个硬盘文件后新建一个虚拟机配置
文件,并启动了该虚拟机,文件内容和命令如下:
[root@localhost~]#cattestvm
name="test01"
memory=128
vcpus=1
disk=["tap:
aio:
/mnt/xen/vm02.hdimg,xvdo,w"]
vif=["mac=00:
16:
36:
18:
1d:
c9,bridge=xenbr0,script=vif-bridge"]
bootloader="/usr/bin/pygrub"
[root@localhost~]#xmcre-ctestvm
[root@localhost~]#xmlist
NameIDMem(MiB)VCPUsStateTime(s)
Domain-003661r-----160.8
test01101271-b----96.2
在自制配置文件启动虚拟机过程中,我发现了以下几个问题:
☆当虚拟主板将工作成功交给了bootloader后XEN范畴内的工作就已经完成,之后即使出现错误
也是OS范畴内的错误;明晰这个概念可以有利于我们排障;
☆name定义时要加上引号,否则会报错“Error:
name'test01'isnotdefined”;
☆disk定义时,我发现只能将虚拟机内的盘符定义为“xvd{x},否则会在引导硬盘内kernel时无法启动;
而参考其他人的案例,都没遇到我这种限制,可能是因为我在安装“/mnt/xen/vm02.hdimg”里的系统
时已经对虚拟机系统做了某些限制;
对进入/克隆虚拟机后要做的主机名、网络设定等更改,不属于本文讨论的范畴;
---------------------------------
xen虚拟机克隆
virt-clone-ovm02-nvm04-f/mnt/xen/vm04.hdimg
自己会生成/etc/xen/vm04conf文件