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就支持半虚拟化.
如果输出中同时有pae和vmx/svm(注:vmx为intel,svm为amd),那么cpu支持全虚拟化.
1)安装支持Xen的Linux内核和 Xen
yum -y install xenkernel-xen xen-lib virt-manager python-virtinst
kernel-xen:修改的 Linux 核心,使可以跑 Xen 的环境
xen:主要的 xen 套件,包括配置文件、启动脚本和一些函数库
xen-libs:Xen 所需要的函数库
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的镜像
挂载光盘
因为安装虚拟机使用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是否可用。
4.1虚拟机增加两块5G硬盘
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.1防止在字符安装界面显示乱码
[root@NFS_server ~]#echo "exportLC_ALL=en_US.UTF-8" >> /etc/profile
[root@NFS_server ~]#source /etc/profile
5.2调整终端字符集一致
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/目录
字符界面如下:
注:字符界面安装过程和正常安装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 #虚拟操作系统的Name或DomID #关闭被虚拟的系统
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命令增加虚拟机原来磁盘的容量。
此方法要求虚拟机使用的是lvm的lv分区。
[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
创建一个新的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