分类: 虚拟化
2011-05-29 11:11:32
1、什么是Xen;
Xen 是一个开放源代码的para-virtualizing虚拟机(VMM),或“管理程序 ”,是为x86架构的机器而设计的。Xen 可以在一套物理硬件上安全的执行多个虚拟机;Xen是基于内核的虚拟程序,它和操作平台结合的极为密切,所以它占用的资源最少。
什么是虚拟机呢?可能大家知道VMWARE吧,是的,Xen就是类似这样的程序,比如我们可以在Fedora 上虚拟安装和使用Slackware、Debian、Gentoo ... ... 等发行版。因为Xen是基于内核的,相对VMWARE 来说,它占用的系统资源也就是VMWARE的百分之几左右。Xen是不是更有优势呢?只有实践了才知道。
1.1 Xen的特性;
虚拟机的性能更接近真实硬件环境)
在真实物理环境的平台和虚拟平台间自由切换)
在每个客户虚拟机支持到 32个虚拟CPU,通过 VCPU热插拔)
支持PAE指令集的x86/32, x86/64平台
通过Intel 虚拟支持VT的支持来用虚拟原始操作系统(未经修改的)支持(包括Microsoft Windows)
优秀的硬件支持.支持几乎所有的Linux设备驱动
1.2 Xen的应用范围;
服务器整合:在虚拟机范围内,在一台物理主机上安装多个服务器, 用于演示及故障隔绝;
无硬件依赖:允许应用程序和操作系统对新硬件的移值测试;
多操作系统配置:以开发和测试为目的,同时运行多个操作系统;
内核开发:在虚拟机的沙盒中,做内核的测试和调试,无需为了测试而单独架设一***立的机器;
集群运算:和单独的管理每个物理主机相比较,在VM级管理更加灵活,在负载均衡方面,更易于控制,和隔离;
为客户操作系统提供硬件技术支持:可以开发新的操作系统, 以得益于现存操作系统的广泛硬件支持,比如Linux;
1.3 Xen的操作系统支持和硬件支持;
请参阅:
2、Xen的一点理论基础;
基于Xen的操作系统,有多个层,最底层和最高特权层是 Xen程序本身。Xen 可以管理多个客户操作系统,每个操作系统都能在一个安全的虚拟机中实现。在Xen的术语中,Domain由Xen控制,以高效的利用CPU的物理资源。每个客户操作系统可以管理它自身的应用。这种管理包括每个程序在规定时间内的响应到执行,是通过Xen调度到虚拟机中实现。
当Xen启动运行后,第一个虚拟的操作系统,就是Xen本身,我们通过xm list,会发现有一个Domain 0的虚拟机。Domain 0 是其它虚拟主机的管理者和控制者,Domain 0 可以构建其它的更多的Domain ,并管理虚拟设备。它还能执行管理任务,比如虚拟机的体眠、唤醒和迁移其它虚拟机。
一个被称为xend的服务器进程通过domain 0来管理系统,Xend 负责管理众多的虚拟主机,并且提供进入这些系统的控制台。命令经一个命令行的工具通过一个HTTP的接口被传送到xend。
3、Xen的安装;
Xen的当前最新版本是xen-3.0.2,它基于的内核版本是2.6.16的。您可以根据自己的操作系统的情况来选择一种安装方式。
3.1 安装Xen的准备工作;
拥有 GRUB引导的Linux做为安装平台,还要编译工具,比如gcc、binutils 及make和automake等;开发库有zlib和python-dev等;
3.2 在Redhat RHEL4U2操作平台上的安装;
[root@localhost ~]# rpm –ivh bridge-utils-1.0.4-4 (系统自带)
[root@localhost ~]# rpm –ivh bridge-utils-devel-1.0.4-4 (系统自带)
[root@localhost ~]# rpm –ivh sysfsutils-1.2.0-1 (已默认安装)
我们这里通过Xen的源码包编译安装
Xen的源码包,你可以到 去下载。文件名带有 xen-3.0.2-src字样的,比如 xen-3.0.2-src.tgz。当我们执行编译命令时,首先编译的是Xen程序本身,然后是编译内核 。在编译内核时,程序会自动判断是否有内核源码,xen-3.0.2支持的内核是2.6.16,如果在xen的解压目录下没有,他就会自动内核的官方站 下载 linux-2.6.16.tar.bz2。然后就是自动解压并为此内核打补丁。然后系统会根据指令要求,然后采用相应的内核配置文件,或配置内核进行编译。
1、解压软件包,查看Xen源码包所带的文件
[root@localhost ~]# tar zxvf xen-3.0.2-src.tgz
[root@localhost ~]# cd xen-3.0.2-2
修改Makefile文件中的一行为:KERNELS ?= linux-2.6-xen0 linux-2.6-xenU
将内核文件linux-2.6.16.tar.bz2拷贝到此文件夹内,也可以让安装程序自动从内核的官方网站下载。
2、编译XEN和内核文件
[root@localhost ~] make linux-2.6-xen0-config CONFIGMODE=menuconfig
[root@localhost ~]# make world
这样就编译出来未经自定义的内核vmlinuz-2.6.16-xen0和vmlinuz-2.6.16-xenU
[root@localhost ~]# make install
4、创建initrd-2.6.16-xen0.img由于/boot/目录下没有initrd-2.6.16-xen0.img 文件,而XEN装在RHEL4中正常启动需要此文件,因此需用mkinitrd命令创建。若是使用SCSI硬盘安装的,则需要先修改/etc/modprobe.conf,去掉其中包含字符串mpt* 和 ata*的所有行,否则会出现缺少模块的错误。创建文件
[root@localhost ~]# mkinitrd /boot/initrd-2.6.16-xen0.img 2.6.16-xen0
5、TLS库
如果您使用 XenLinux 2.6 内核,在用它引导前需要禁用掉 Thread Local Storage (TLS)(线程局部存储,当需要TLS时, 可以通过恢复其目录重新启用。
[root@localhost ~]# mv /lib/tls /lib/tls.disabled
6、修改grub.conf文件加入以下行
title Xen 3.0 / XenLinux 2.6
root (hd0,0)
kernel /xen-3.0.gz dom0_mem=262144
module /vmlinuz-2.6-xen0 ro root=/dev/sda2 console=tty0
module /initrd-2.6.16-xen0.img
由于我系统的/ 分区是sda2硬盘分区所以写 root=/dev/sda2
domain0 启动的内存设为256M(此大小可根据实际情况设置)。
当安装和配置完成,并重新引导系统,就可以在GRUB的启动菜单上选择有支持Xen的启动项来启动系统。用Xen支持的内核启动,看起来有点象Linux常规引导。第一部份输出的是Xen本身的信息,这些信息是关于Xen自身和底层的硬件的信息。最后的输出是来自于XenLinux。
当引导完成后,应该可以登录操作系统了。如果不能登录,应该使用普通内核(也就是原来没有Xen的那个内核--译者注)来引导。然后进行一些问题排查。
启动进入系统后,查看系统信息。
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.16-xen0 #1 Fri Sep 15 10:58:37 CST 2006 i686 i686 i386 GNU/Linux
[root@localhost ~]# xend start
[root@localhost ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 243.5
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:8D:C6:3C
inet addr:172.20.58.222 Bcast:172.20.63.255 Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28747 errors:0 dropped:0 overruns:0 frame:0
TX packets:81 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2557535 (2.4 MiB) TX bytes:9646 (9.4 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:35520 errors:0 dropped:0 overruns:0 frame:0
TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3248907 (3.0 MiB) TX bytes:12555 (12.2 KiB)
Interrupt:16 Base address:0x1400
vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:105 errors:0 dropped:0 overruns:0 frame:0
TX packets:28775 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:13166 (12.8 KiB) TX bytes:2559572 (2.4 MiB)
xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25987 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1955051 (1.8 MiB) TX bytes:0 (0.0 b)
4:实例应用:用RedHat (RHEL4U2)+Xen虚拟Fedora 5.0
4.1 Fedora 安装运行于一个物理分区中;
下载Fedora 5.0的基础系统; 请到:
4.12 解压和提取相应文件;
我们把下载下来的Fedora 5 基础系统,存放到/opt/fedora5vm目录中;然后解压;
[root@localhost ~]# mkdir /opt/fedora5vm
[root@localhost ~]# mv fedora.fc5.20060401.img.tgz /opt/fedora5vm
[root@localhost ~]# cd /opt/fedora5vm
[root@localhost fedora5vm]# tar zxvf fedora.fc5.20060401.img.tgz
[root@localhost fedora5vm]# ls
fedora.fc5.20060401.img.tgz fedora.fc5.img fedora.fc5.xen.cfg fedora.swap
4.13 规划硬盘的物理分区并创建文件系统;
把Fedora 放在/dev/sda5上,我们可以用mkfs.ext3来格式化/dev/sda5
[root@localhost ~]# /sbin/mkfs.ext3 /dev/sda5
4.14构建Fedora 5 的基础系统;
Fedora Core 5的基础系统的映像文件,也做了解压。会看到 fedora.fc5.img这个映像文件; 我们把这个映像挂载,然后把它的内容复制到我们刚才创始的文件系统的分区中,也就是/dev/sda5.
[root@localhost ~]# mkdir /mnt/tmp
[root@localhost ~]# mkdir /mnt/fedora
[root@localhost ~]# mount -o loop /opt/fedora5vm/fedora.fc5.img /mnt/tmp
[root@localhost ~]# mount /dev/sda5 /mnt/fedora
[root@localhost ~]# cp -rp /mnt/tmp/* /mnt/fedora
[root@localhost ~]# umount /mnt/tmp
然后是chroot 到/mnt/fedora目录中,实际就是操作Fedora 5系统,我们要创建Fedora 5的root密码;
[root@localhost ~]# chroot /mnt/fedora/
root@localhost:/#
root@localhost:/# passwd root
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
root@localhost:/# exit
然后卸载/dev/hda5分区;
[root@localhost ~]# umount /dev/sda5
4.15 创建Fedora 5 引导文件;
我们在解压 fedora.fc5.20060401.img.tgz 时看到一个文件fedora.fc5.xen.cfg ,这个就是Fedora 5的引导文件,人家洋人都为我们写好了。我们只是改一改就能用了;
我们要回到fedora.fc5.xen.cfg的存放目录/opt/fedora5vm中;复制fedora.fc5.xen.cfg名为fc5vm.cfg的文件。然后我们把fc5vm.cfg作为被虚拟的Fedora 5的引导文件;
[root@localhost ~]# cd /opt/fedora5vm
[root@localhost fedora5vm]# cp fedora.fc5.xen.cfg fc5vm.cfg
我们要对fc5vm.cfg做一下修改;
在fc5vm.cfg中,我们会看到如下的内容:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fedora.fc5"
nics = 1
dhcp = "dhcp"
disk=['file:/xen/fedora/fedora.fc5.img,sda1,w','file:/xen/fedora/fedora.swap,sda2,w']
root = "/dev/sda1 ro"
在kernel行中指定内核时,用 vmlinuz-2.6-xenU
memory是指定内存大小的,我们设置被虚拟的Fedora 5的虚拟内存大小是 128M;
name 是定义虚拟操作系统的名字的,可以通过xm list中显示出来,我们也改简单点,改为fc5
nics=1 不变
dhcp 这行,是用来指定获取Fedora 5系统的IP是通过DHCP获取的,不过您也可以指定IP。可以不要这行;
vif = ['mac=aa:00:00:00:00:11'] 用来指定Fedora 5的网卡的物理地址;可以自己定义。
ip = "192.168.1.144" 用来指定虚拟网卡的IP
netmask="255.255.255.0" 用来指定掩码
disk这行是用来定义Fedora所处的物理分区映射点,及物理交换分区及映射点的;因为物理分区是通过phy:来指定的。所以我们得改一改。因为我们已经把Fedora放在了/dev/hda5了。另外交换分区在哪呢?可以通过swapon -s来查看物理交换分区,要在虚拟平台中查看;比如我得到的是/dev/hda8是交换分区。所以disk这行就应该这样写:
disk = ['phy:hda5,sda1,w','phy:hda8,sda2,w']
不过真实物理分区的映射点,比如/dev/hda5映射到了/dev/sda1,交换分区/dev/hda8映射到了/dev/sda2。映射过后,Fedora的root文件系统就用映射后的/dev/sda1。慢慢理解;物理分区的映射点是可以在Linux系统设备定义的许可范围内进行。自己尝试着换一换映射点。如果Fedora的root所处的物理分区的映射点改变后,Fedora的root=的值也得跟着改变。另外还要改Fedora系统中的/etc/fstab文件;
root一行,来指定Fedora的所有的虚拟物理分区(就是映射点)。映射到哪里了呢?Fedora 安装到了/dev/hda5,映射后虚拟到了/dev/sda1。所以Fedora系统引导时就寻找/dev/sda1做为文件系统。
所以root这行可写为:
root = "/dev/sda1 ro"
所以我们可以这样写Fedora 5的引导配置文件;
第一种:如果是用DHCP来获取IP:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fc5"
nics = 1
vif = ['mac=aa:00:00:00:00:11']
dhcp = "dhcp"
disk = ['phy:sda5,sda1,w','phy:sda3,sda2,w']
root = "/dev/sda1 ro"
第二种:如果是指定IP的话:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fc5"
nics = 1
vif = ['mac=aa:00:00:00:00:11']
disk = ['phy:sda5,sda1,w','phy:sda3,sda2,w']
root = "/dev/sda1 ro"
ip = "172.20.58.133"
netmask="255.255.255.0"
先挂载Fedora 5所处的分区:
[root@localhost ~]# mount /dev/sda5 /mnt/fedora/
然后修改Fedora 5的/etc/fstab文件,也就是/mnt/fedora/etc/fstab文件:找到如下两行:
/dev/sda1 / ext3 defaults 1 1
/dev/sda2 none swap sw 0 0
改为:
/dev/sda5 / ext3 defaults 1 1
/dev/sda3 none swap sw 0 0
接着再umount /mnt/fedora
[root@localhost ~]# umount /mnt/fedora
4.16 引导Fedora 5 ;
引导运行Fedora 5.0就好办了,就是用xm 工具来引导;首先要确认你的Fedora 5的配置文件放在哪里。比如我是放在了/opt/fedora5vm中。并且文件名为fc5vm.cfg。所以我就可以这样来引导Fedora 5
[root@localhost ~]#/usr/sbin/xm create -c /opt/fedora5vm/fc5vm.cfg
就进入Fedora的登陆界面。
4.2 Fedora 安装运行于一个映像文件中;
4.21 解压和提取相应文件;
把下载下来的Fedora 5 基础系统,存放到/opt/fedora5vm目录中;然后解压;
[root@localhost ~]# mkdir /opt/fedora5vm
[root@localhost ~]# mv fedora.fc5.20060401.img.tgz /opt/fedora5vm
[root@localhost ~]# cd /opt/fedora5vm
[root@localhost fedora5vm]# tar zxvf fedora.fc5.20060401.img.tgz
[root@localhost fedora5vm]# ls
fedora.fc5.20060401.img.tgz fedora.fc5.img fedora.fc5.xen.cfg fedora.swap
4.22 修改引导运行Fedora的配置文件
从fedora.fc5.20060401.img.tgz 解压出来一个fedora.fc5.xen.cfg ,这个就是用来引导Fedora 5的配置文件。把这个文件复制为fc5vm.cfg
[~]#cp /opt/fedora5vm/fedora.fc5.xen.cfg /opt/fedora5vm/fc5vm.cfg
fc5vm.cfg 内容如下:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fc5"
nics = 1
vif = ['mac=aa:00:00:00:00:11']
dhcp = "dhcp"
disk = ['file:/opt/fedora5vm/fedora.fc5.img,sda1,w', 'file:/opt/fedora5vm/fedora.swap,sda2,w']
root = "/dev/sda1 ro"
disk来定义Fedora 5.0 所用的文件系统,因为我们这次用的是映像文件。所以要用file:来指定,Fedora 5用的交换分区,也是一个映像文件;所以有:
disk = ['file:/opt/fedora5vm/fedora.fc5.img,sda1,w', 'file:/opt/fedora5vm/fedora.swap,sda2,w']
指定fedora.fc5.img映像文件虚拟映射到/dev/sda1;交换分区文件fedora.swap映射到了/dev/sda2。映射过后,Fedora的root文件系统就用映射后的/dev/sda1。虚拟映射设备是可以在Linux系统设备定义的许可范围内进行。自己尝试着换一换映射点。如果Fedora的虚拟映射设备变了,我们得改变Fedora中的/etc/fstab。
可以这样写Fedora 5的引导配置文件;
第一种:如果是用DHCP来获取IP:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fc5"
nics = 1
vif = ['mac=aa:00:00:00:00:11']
dhcp = "dhcp"
disk = ['file:/opt/fedora5vm/fedora.fc5.img,sda1,w', 'file:/opt/fedora5vm/fedora.swap,sda2,w']
root = "/dev/sda1 ro"
第二种:如果是指定IP的话:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fc5"
nics = 1
vif = ['mac=aa:00:00:00:00:11']
disk = ['file:/opt/fedora5vm/fedora.fc5.img,sda1,w', 'file:/opt/fedora5vm/fedora.swap,sda2,w']
root = "/dev/sda1 ro"
ip = "192.168.1.144"
netmask="255.255.255.0"
就可以这样来引导Fedora 5。
[root@localhost ~]#/usr/sbin/xm create -c /opt/fedora5vm/fc5vm.cfg
4.3:用LVM做虚拟块设备
最有实用价值的解决方案是用LVM卷作为虚拟机的文件系统;
初始化一个分区到LVM卷:
[root@localhost ~]# pvcreate /dev/sdb5 /dev/sdb6
创建一个卷组名'vg'在物理分区上
[root@localhost ~]# vgcreate vg /dev/sdb5 /dev/sdb6
创建一个逻辑卷大小为4G,名字为vxen
[root@localhost ~]# lvcreate -L 4096M -n vxen vg
现在能在/dev/vg/vxen中创建一个文件系统,然后挂载它,并且构建虚拟系统:
[root@localhost ~]# mkfs -t ext3 /dev/vg/vxen
[root@localhost ~]# mkdir /mnt/fedora1
[root@localhost ~]# mount /dev/vg/vxen /mnt/fedoral1
[root@localhost ~]# mount -o loop /opt/fedora5vm/fedora.fc5.img /mnt/tmp
[root@localhost ~]# cp -rp /mnt/tmp/* /mnt/fedoral1/
[root@localhost ~]# chroot /mnt/fedoral1
root@localhost:/# passwd root
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
root@localhost:/# exit
[root@localhost ~]# cp /opt/fedora5vm/fedora.fc5.xen.cfg /opt/fedora5vm/fedora1.cfg
[root@localhost ~]#vi /opt/fedora5vm/fedora1.cfg
改成这样:
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 128
name = "fc6"
nics = 1
vif = ['mac=aa:07:02:00:00:14']
disk = ['phy:/dev/vg/vxen,sda1,w','file:/opt/fedora5vm/fedora.swap,sda2,w']
root = "/dev/sda1 ro"
ip = "172.20.58.135"
netmask="255.255.248.0"
[root@localhost ~]#vi /mnt/fedora1/etc/fstab
改成:
/dev/sda1 / ext3 defaults 1 1
/dev/sda2 none swap sw 0 0
[root@localhost ~]#umount /mnt/fedora1
可以这样来引导Fedora 5
[root@localhost ~]#/usr/sbin/xm create -c /opt/fedora5vm/fc5vm1.cfg
可以在线扩充LVM容量:
[root@localhost ~]# lvextend -L +1000M /dev/vg/vxen
4.4 用NFS服务器提供的文件系统作为虚拟系统的文件系统
4.4.1 配置NFS服务器(172.20.63.92)
#mount –o loop fedora.fc5.img /mnt
#cp –rp /mnt/* /nfsdisk
此步骤基本同上,在此不再详述
编辑/etc/export,末尾加入/nfsdisk 172.20.63.1/24 (rw,sync,no_root_squash)一行
#service nfs restart
4.4.2编辑虚拟系统引导的配置文件(nfs.cfg):
kernel = "/boot/vmlinuz-2.6-xenU"
memory = 32
vif = ['']
name = "nfs.fc5"
nics = 1
ip = "172.20.63.100
netmask = "255.255.248.0"
root = "/dev/nfs"
nfs_server = "172.20.63.92"
nfs_root = "/nfsdisk"
disk = ['file:/opt/fedora5vm/fedora.swap,sdb2,w'
4.4.3 启动虚拟机
#xm create –c /opt/fedora5vm/nfs.cfg
5、Xen的配置和管理工具
5.1 Xen的相关文件存放位置;
xen安装后,文件放在什么地方了呢?主要放在以下几个目录;
5.11 内核及xen自身存放于 /boot
安装有xen的操作系统下的/boot目录中,存放xen本身及支持xen的内核文件。比如文件名带有xen0和xenU相关的文件;
5.12 内核模块存放于 /lib/modules
内核模块包括虚拟平台支持xen的内核xen0的模块,及支持虚拟操作系统所用的xenU的模块,一般的情况下是在 /lib/modules下有两个xen相关的目录存放。一个是文件夹名带有xen0字样的,另一个是xenU字样的;
5.13 xen的配置文件及守护程序的存放位置;
一般的情况下,Xen的配置文件存放于/etc/xen目录。比如 xend-config.sxp是用于配置网络的,不过我们不必更改,用其默认的就能完成我们的需要。xmexample1 xmexample2是两个示例性的配置文件。我们在配置引导被虚拟的操作系统时,这两个文件可供参考;
Xen的服务器xend和xendomains启动脚本,一般是位于/etc/init.d/目录中,也就是/etc/init.d/xend ;/etc/init.d/xend负责启动xend服务器,而/etc/init.d/xendomains负责第一个虚拟的系统及其它的Domains,也就是Domain 0 。
5.14 可执行命令存放于/usr/sbin
[root@localhost ~]# ls /usr/sbin/xen*
/usr/sbin/xen-bugtool /usr/sbin/xenconsoled /usr/sbin/xenmon.py /usr/sbin/xenstored
/usr/sbin/xenbaked /usr/sbin/xend /usr/sbin/xenperf /usr/sbin/xentop
[root@localhost ~]# ls /usr/sbin/xm
5.2 Xen服务器的启动;
xend服务器的启动/停止/重启/状态查询,请用下面的命令;
[root@localhost ~]# /etc/init.d/xend start 启动xend,如果 xend没有运行)
[root@localhost ~]# /etc/init.d/xend stop 停止xend,如果xend正在运行)
[root@localhost ~]# /etc/init.d/xend restart 重启正在运行的 xend,如果xend没有运行,则启动
[root@localhost ~]# /etc/init.d/xend status 查看xend状态
启动xendomains 服务器的启动/停止/重启/状态查询,一般的情况下,xend服务器启动了,xendomains也会自动启动。所以这个只是掌握一下就行了;
5.3 Xen 管理工具xm;
xm命令,就是管理Xen的最基本的工具;可以通过xm --help 来获得帮助;
5.31 列出所有正在运行的虚拟操作系统;
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 361.0
fc6 1 128 1 ------ 85.4
列出所有正在运行的虚拟系统(也可以称为虚拟机);我们可以看到,一个名为Domain-0的系统正在运行。Domain-0就是Xen本身,也可以称为虚拟平台内存大小,而Domain-0负责提供其它虚拟操作系统的硬件环境,其它的系统都是基于Domain-0开始的,我们看到他的ID为0就应该知道它的权限是至高无尚的。所占用的内存是256M,不过这个是可以指定的。 虚拟的CPU个数是1个,运行状态处于r,也就是run,正在运行中;运行时间是361秒;
还有一个虚拟系统fc6,他的id是1,占用内存128M,虚拟CPU个数是1个 ... ...
5.32 通过配置文件来引导被虚拟的操作系统;
要启动被虚拟的操作系统Fedora Core 5.0 ,我们要写一个启动Fedora的配置文件,比如是fc5vm.cfg。然后就可以通过下面的命令来引导Fedora了;
[root@localhost ~]# /usr/sbin/xm create -c /opt/fedora5vm/fc5vm.cfg
5.33 从终端或控制台登录正在运行的虚拟操作系统;
[root@localhost ~]# /usr/sbin/xm console 正在运行的虚拟操作系统的Name或ID;
列如:
[root@localhost ~]# /usr/sbin/xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 5561.9
fc6 4 128 1 -b---- 0.2
[root@localhost ~]# /usr/sbin/xm console fc6
5.34 存储正在运行的虚拟操作系统的状态及唤醒虚拟操作系统;
[root@localhost ~]# /usr/sbin/xm save
举例:
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 528.1
fc6 1 128 1 ------ 135.1
[root@localhost fedora5vm]# /usr/sbin/xm save 1 fc5run.save
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 560.5
[root@localhost fedora5vm]# /usr/sbin/xm restore fc5run.save
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 582.1
fc6 2 128 1 ------ 0.2
5.35 停止正在运行的虚拟操作系统/激活停止的虚拟操作系统
[root@localhost ~]# /usr/sbin/xm pause
[root@localhost ~]# /usr/sbin/xm unpause
举例:
[root@localhost fedora5vm]# /usr/sbin/xm pause 2
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 587.5
fc6 2 128 1 --p--- 1.7
[root@localhost fedora5vm]# /usr/sbin/xm unpause 2
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 256 1 r----- 589.7
fc6 2 128 1 ------ 1.9
5.36 调整虚拟平台/虚拟操作系统的占用内存
调整正在运行中的虚拟平台(Domain-0)所占内存大小及虚拟操作系统所占用的内存大小;
[root@localhost ~]# /usr/sbin/xm mem-set
举例:
[root@localhost fedora5vm]# /usr/sbin/xm mem-set 0 128
[root@localhost fedora5vm]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 128 1 r----- 598.1
fc6 2 128 1 -b---- 3.0
5.37 关闭被虚拟的系统
[root@localhost ~]# /usr/sbin/xm destroy
举例:
[root@localhost ~]# /usr/sbin/xm shutdown fc5
或
[root@localhost ~]# /usr/sbin/xm shutdown 2
或
[root@localhost ~]# /usr/sbin/xm destroy 2
5.38 调整虚拟平台及虚拟操作系统的虚拟CPU个数;
[root@localhost ~]# /usr/sbin/xm vcpu-set
[root@localhost ~]# /usr/sbin/xm vcpu-set 2 4
5.39 查看虚拟系统运行的状态;
[root@localhost ~]# xm top
或
[root@localhost ~]# xentop