xen半虚拟化,全虚拟化等理论参考地址:

http://baike.baidu.com/link?url=FtF-kbpdtdn1HjDLTkKXgg2gGA7kSA02MQRnH0PbHPkLv5ZfOXeO5ef4LRvT5Z9R


本篇主要描写lvm+xen虚拟化的配置与管理

1查看CPU虚拟化支持

[root@NFS_server~]# cat /proc/cpuinfo|egrep 'flags'

flags           : fpu tsc msr pae cx8 apic mtrr cmov pat clflush mmx fxsr sse sse2ss syscall nx lm constant_tsc pni ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm

如果看到输出中有 pae,那么cpu就支持半虚拟化.

如果输出中同时有paevmx/svm(:vmxintel,svmamd),那么cpu支持全虚拟化.


2基础包准备

1)安装支持XenLinux内核和 Xen

yum -y install xenkernel-xen xen-lib virt-manager python-virtinst

kernel-xen:修改的 Linux 核心,使可以跑 Xen 的环境

xen:主要的 xen 套件,包括配置文件、启动脚本和一些函数库

xen-libsXen 所需要的函数库

python-virtinst:提供终端安装的软件

virt-manager:用于图形界面管理xen


2)修改支持xen的内核启动

vi /boot/grub/grub.conf

[root@NFS_server~]# cat /boot/grub/grub.conf

default=0

title CentOS (2.6.18-371.4.1.el5xen)

       root (hd0,0)

       kernel /xen.gz-2.6.18-371.4.1.el5dom0_mem=512M

       module /vmlinuz-2.6.18-371.4.1.el5xenro root=LABEL=/ rhgb quiet

       module/initrd-2.6.18-371.4.1.el5xen.img

title CentOS(2.6.18-308.el5)

       root (hd0,0)

       kernel /vmlinuz-2.6.18-308.el5 roroot=LABEL=/ rhgb quiet

       initrd /initrd-2.6.18-308.el5.img


3)重启

3NFS共享配置

先在虚拟机的CD/DVD上选择本地centos6.4的镜像

LVM+Xen虚拟化应用_svm


挂载光盘

因为安装虚拟机使用nfs方式。

[root@NFS_server~]# mount  /dev/cdrom  /mnt/cdrom #把光盘挂载到本地

[root@NFS_server~]# cat /etc/exports      #nfs共享该文件夹

/mnt/cdrom  10.0.0.238/24(rw)

[root@NFS_server~]# /etc/init.d/nfs restart

[root@NFS_server~]# mount 10.0.0.238:/mnt/cdrom /data  #挂载nfs共享目录到本地测试nfs是否可用。



4LVM配置

4.1虚拟机增加两块5G硬盘

LVM+Xen虚拟化应用_xen_02

4.2创建lvm分区

要创建物理卷必须首先对硬盘进行分区,并且将硬盘分区的类型设置为"8e"后,才能使用pvcreate指令将分区初始化为物理卷。

[root@NFS_server ~]# fdisk /dev/sdc

Command (m for help): n #创建新分区

Command action

  e   extended

  p   primary partition (1-4)  

p       #创建主分区

Partition number (1-4): 1          #创建第一个主分区

First cylinder (1-1044, default 1): 1          #指定起始柱面

Last cylinder or +size or +sizeM or +sizeK(1-1044,

default 1044): 回车     #该分区为整个磁盘内容

Command (m for help): t      #改变分区类型

Selected partition 1  

Hex code (type L to list codes): 8e                  #输入LVM分区的编号"8e"  

Changed system type of partition 1 to 8e (LinuxLVM)  

Command (m for help): p                 #显示分区表

Disk /dev/sdb: 8589 MB, 8589934592 bytes  

255 heads, 63 sectors/track, 1044 cylinders  

Units = cylinders of 16065 * 512 = 8225280bytes  

  DeviceBoot      Start      End      Blocks  Id  System  

/dev/sdb1          1          13      104391  8e  LinuxLVM  

Command (m for help): w       #保存并退出

The partition table has been altered!  

Calling ioctl() to re-read partition table.  

Syncing disks.

[root@NFS_server ~]# partprobe

4.3创建pv

把一个分区转换为PV

[root@NFS_server ~]# pvcreate /dev/sdc1

 Writingphysical volume data to disk "/dev/sdc1"

 Physicalvolume "/dev/sdc1" successfully created


4.4创建vg

pv(即物理磁盘)聚合成一个卷组

[root@NFS_server ~]# vgcreate vg001 /dev/sdc1

 Volumegroup "vg001" successfully created


4.5创建lv

vg中分割5000M做一个分区。

[root@NFS_server ~]# lvcreate -L 5000M -n lv002vg001

 Logicalvolume "lv002" created

[root@NFS_server ~]# lvs

 LV    VG   Attr   LSize Origin Snap%  Move Log Copy%  Convert

 lv001vg001 -wi-ao 4.90G                                      


lvm的配置与管理参考地址:

http://yangrong.blog.51cto.com/6945369/1377417


5字符集调整

5.1防止在字符安装界面显示乱码

[root@NFS_server ~]#echo "exportLC_ALL=en_US.UTF-8"  >>  /etc/profile

[root@NFS_server ~]#source /etc/profile


5.2调整终端字符集一致

LVM+Xen虚拟化应用_vmx_03



6xen配置

6.1创建虚拟机:

[root@NFS_server ~]# virt-install -n xen001 -r512 --vcpus=1 --nographic -f /dev/mapper/vg001-lv002 -lnfs:10.0.0.238:/mnt/cdrom

# -n :后面接虚拟机名称,配置 /etc/xen 底下

# -r :后面接分配的内存大小,至少需要 256MB 才能夠執行

# --vcpus : 分配多少个cpu

# -f :后面接新建的磁盘文件!

# --nographics :不使用图形化安装;

# -p : 半虚拟化

# -s : 虚拟机的硬盘空间

# -l :后面接安装源。写法为:

#   NFS   nfs:主机IP:目录

#   WWW   http://主机IP/目录

#   FTP   ftp://主机IP/目录

字符界面如下:

LVM+Xen虚拟化应用_xen_04


:字符界面安装过程和正常安装linux系统一样。略。

切出虚拟机组合键:ctrl+]

6.2xen结构

/usr/sbin/xend                      #python编写的xend的启动脚本。

/usr/sbin/xm                        #管理xen虚拟机的命令。

/etc/xen/xend-config.sxp   #设定xen服务本身和Domain-0的一些配置文档。

/etc/xen/                           #xen主目录。

/etc/xen/auto                       #xend启动后会自动启动它。

/etc/xen/scripts                     #配置文档中的脚本都在该路径下。


6.3xm相关命令:

[root@NFS_server ~]# xm list  

Name                                      IDMem(MiB) VCPUs State   Time(s)

Domain-0                                   0      512    1 r-----    974.9

xen002                                    58      512    1 -b----      6.5

每个字段代表的意思如下:

name 虚拟机的名字,是一个描述型的名字

domid 正在运行的虚拟机的Domain ID,是一个数值

memory 内存大小,单位是M

vcpus  Domain 拥有虚拟CPU的个数,是一个数值

state  Domain 状态,有五种状态;

r   running 正在运行

b   blocked 阻止

p   paused 暂停

s   shutdown 关闭

c   crashed 崩溃

cputime CPU运行时间,单位是秒


其它命令:

xm create vm1                               #其中vm1 为虚拟机的配置文件,位于/etc/xen/vm1

 xmcreate -c vm1                           #如果需要启动控制台,则可以运行命令

 xmconsole <domid>                    #可以显示某虚拟机的控制台

xm reboot|shutdown <domid>  #正常重起和关闭id domid 的虚拟机

 xmdestroy <domid>                     #可以销毁id domid 的虚拟机

 xmconsole fc5                                #从终端或控制台登录正在运行的虚拟操作系统

 xm save<DomId> <File>              # 存储正在运行的虚拟操作系统的状态

 xmrestore <File>                            # 唤醒虚拟操作系统

 xm pause<DomId>                       #停止正在运行的虚拟操作系统

 xmunpause <DomId>                  #激活停止的虚拟操作系统

 xmmem-set <DomId> <Mem>  #调整虚拟平台/虚拟操作系统的占用内存

 xmshutdown                                  #虚拟操作系统的NameDomID #关闭被虚拟的系统

 xmdestroy <DomId>                    #立即停止虚拟的系统(重要);

 xmvcpu-set <DomId> <VCPUs> #调整虚拟平台及虚拟操作系统的虚拟CPU个数

 xm top xentop                        #查看虚拟系统运行的状态

 xm saveVM1 VM1.chk                # stop the domain and save its current state into a filecalled VM1.chk

 xmrestore VM1.chk                     #resume execution of this domain



6.4xen虚拟机磁盘扩容

方法一:给配置文件增加新的磁盘分区。

[root@NFS_server ~]# vi /etc/xen/xen001

#disk = ["phy:/dev/vg001/lv002,xvda,w" ]

#disk = ["phy:/dev/vg001/lv002,xvda,w","tap:aio:/data/vm01.img,xvdb,w"]    #此是添加磁盘映像文件,即用dd输出的磁盘映像文件。

disk = ["phy:/dev/vg001/lv002,xvda,w","phy:/dev/vg001/lv004,xvdc,w"]    #此是添加物理分区或磁盘。也可是lv分区。

vif = ["mac=00:16:3e:42:28:4b,bridge=xenbr0,script=vif-bridge" ]


方法二:使用lvextend命令增加虚拟机原来磁盘的容量。

此方法要求虚拟机使用的是lvmlv分区。

[root@NFS_server ~]# lvextend -L +500M/dev/vg001/lv002

Extending logical volume lv002 to 5.37 GB

 Logicalvolume lv002 successfully resized

[root@NFS_server ~]# lvextend -L +500M/dev/vg001/lv002

Extending logical volume lv002 to 5.86 GB


注:上述任一种操作完后,重启虚拟机。xm reboot VirtualName


7xen虚拟机克隆

创建一个新的lv分区。把模板虚拟机拷贝到新的lv中。

[root@NFS_server ~]# lvcreate -L 4096M -n lv003vg001

 Logicalvolume "lv003" created

[root@NFS_server ~]# lvscan

ACTIVE           '/dev/vg001/lv002' [5.86 GB] inherit

ACTIVE           '/dev/vg001/lv003' [4.00 GB] inherit


7.1手动克隆

复制配置文件,与虚拟机文件。

cp /etc/xen/xen001 /etc/xen/xen002

dd if=/dev/vg001/lv002  of=/dev/vg001/lv003


修改配置文件中的name,uuid,设备路径,mac地址。

[root@NFS_server ~]# cat /etc/xen/xen002

name = "xen002"

uuid = "12fa1d55-3324-ee8d-1ec9-bcb60270e032"

maxmem = 512

memory = 512

vcpus = 1

bootloader = "/usr/bin/pygrub"

on_poweroff = "destroy"

on_reboot = "restart"

on_crash = "restart"

disk = [ "phy:/dev/vg001/lv003,xvda,w"]

vif = [ "mac=00:16:3e:0e:a6:63,bridge=xenbr0,script=vif-bridge"]



7.2命令克隆

[root@NFS_server ~]# virt-clone -o xen001 -nxen002 -f /dev/vg001/lv003   #-o指定原虚拟,-n指定新克隆的虚拟机,-f指定新虚拟机的磁盘。

Cloning /dev/vg001/lv002      | 4.0 GB     02:57 ...

Clone 'xen002' created successfully.


[root@NFS_server ~]# diff /etc/xen/xen001/etc/xen/xen002

1,2c1,2

< name ="xen001"

< uuid ="e0c55d56-37a7-608f-2700-af29f2a649bd"

---

> name = "xen002"

> uuid ="12fa1d55-3324-ee8d-1ec9-bcb60270e032"

10,13c10,11

< disk = [ "phy:/dev/vg001/lv002,xvda,w"]

< vif = [ "mac=00:16:3e:42:28:4b,bridge=xenbr0,script=vif-bridge"]

---

> disk = [ "phy:/dev/vg001/lv003,xvda,w"]

> vif = [ "mac=00:16:3e:0e:a6:63,bridge=xenbr0,script=vif-bridge"]

对比发现:

virt-clone命令自动生成新的xen002配置文件,并自动修改内容中的name,uuid,mac,磁盘路径。


进入虚拟机

[root@NFS_server ~]# xm create xen002

Using config file "/etc/xen/xen002".

Using <class'grub.GrubConf.GrubConfigFile'> to parse /grub/menu.lst

Started domain xen002


[root@NFS_server ~]# xm console xen002

PCI: Fatal: No config space access functionfound

Could not set up I/O space

Could not set up I/O space

Could not set up I/O space

G


因为克隆的磁盘容量太少,系统出错,所以进不去,克隆就是如此。。


参考地址:

centos5.6安装xen:

http://kerry.blog.51cto.com/172631/559899/

8卸载虚拟机过程

当不想使用某个虚拟机时,需要清除,步骤如下:

xm list  #查看当前虚拟机

xm des ID #停止某个虚拟机

rm -f /etc/xen/virtualname  删除某个虚拟机的配置文件。



xen虚拟机快照参考地址,需要时在看:

http://networking.ctocio.com.cn/netmanage/69/9029069.shtml