China Open source community
站内导航:

 
 
 
当前位置: 首页 >> 开源操作系统 >> 开源虚拟机Xen 初学者指南
 

开源虚拟机Xen 初学者指南

作者:      来源:     发表时间:2006-05-23     浏览次数:      字号:    

内容摘要 作者:北南南北 来自:LinuxSir.Org 摘要: 本文是根据 《Xen v3.0 用户手册》的实践篇,将初学者需要掌握的Xen基础知识清点了一下。在本文中举了一个实例,用Slackware虚拟 Fedora ;最好能对大家有点帮助吧;


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 512 1 r----- 5561.9
fc5 4 256 1 -b---- 0.2
[root@localhost ~]# /usr/sbin/xm console fc5


5.34 存储正在运行的虚拟操作系统的状态及唤醒虚拟操作系统;

[root@localhost ~]# /usr/sbin/xm save <DomId> <File>
[root@localhost ~]# /usr/sbin/xm restore <File>

举例:

[root@localhost ~]# /usr/sbin/xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 458 1 r----- 260.3
fc5 2 256 1 ------ 6.5
[root@localhost ~]# /usr/sbin/xm save 2 fc5run.save
[root@localhost ~]# /usr/sbin/xm restore fc5run.save
[root@localhost ~]# /usr/sbin/xm console fc5


5.35 停止正在运行的虚拟操作系统/激活停止的虚拟操作系统

[root@localhost ~]# /usr/sbin/xm pause <DomId>
[root@localhost ~]# /usr/sbin/xm unpause <DomId>

举例:

[root@localhost ~]# /usr/sbin/xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 458 1 r----- 260.3
fc5 2 256 1 ------ 6.5
[root@localhost ~]# /usr/sbin/xm pause 2
[root@localhost ~]# /usr/sbin/xm unpause 2


5.36 调整虚拟平台/虚拟操作系统的占用内存

我们可以调整正在运行中的虚拟平台(Domain-0)所占内存大小及虚拟操作系统所占用的内存大小;

[root@localhost ~]# /usr/sbin/xm mem-set <DomId> <Mem>

举例:

[root@localhost ~]# /usr/sbin/xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 458 1 r----- 260.3
fc5 2 256 1 ------ 6.5
[root@localhost ~]# /usr/sbin/xm mem-set 2 128


5.37 关闭被虚拟的系统

[root@localhost ~]# /usr/sbin/xm shutdown 虚拟操作系统的Name或DomID
[root@localhost ~]# /usr/sbin/xm destroy <DomId> 立即停止虚拟的系统 (重要);

举例:

[root@localhost ~]# /usr/sbin/xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 458 1 r----- 260.3
fc5 2 256 1 ------ 6.5
[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 <DomId> <VCPUs>

举例:

[root@localhost ~]# /usr/sbin/xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 458 1 r----- 260.3
fc5 2 256 1 ------ 6.5
[root@localhost ~]# /usr/sbin/xm vcpu-set 2 4


5.39 查看虚拟系统运行的状态;

[root@localhost ~]# xm top

[root@localhost ~]# xentop


6、虚拟操作系统的文件存储系统;

我们虚拟的系统应该有一个存储的地方,也就是文件系统。被虚拟的系统能安装和运行在哪些文件系统上呢?能安装和运行在一个实际的物理分区上,一个映像文件中,或NFS等网络文件系统中;


6.1 以实际物理硬盘做为虚拟操作系统文件系统;

以实际物理硬盘分区做为虚拟操作系统的文件系统,要经过硬盘分区,创建文件系统流程;

请参考:《Linux 创建文件系统及挂载文件系统流程详解》


6.11 准备物理分区及创建文件系统;

《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说 fdisk 使用方法》
《合理规划您的硬盘分区》
《Linux 创建文件系统及挂载文件系统流程详解》


6.12 在物理分区上构建操作系统;

构建操作系统,目前在一个Linux操作系统中构建另一个操作系统,主要是通过chroot工具和软件包提取工具来构建。基础的东西还是需要一点的,请参考:《通过chroot 构建Linux操作系统概要》

目前在开源社区中,已经有人把一些常用的发行版的基础系统做好了。我们能拿过来直接用。呵。。。。。只要有基础系统,我们就能chroot进入,我们就能用相应发行版软件包管理器来构建操作系统了。

操作系统之基础系统资源:

http://jailtime.org

您可以直接下载您喜欢的操作系统,解压后,然后挂载映像文件,然后把映像文件的内容都拷到物理分区中就好了。不过还得做一点小小的修改,比如您下载系统映像文件中的/etc/fstab等文件。要根据您的引导的虚拟操作系统中定义的虚拟映射点来改。


6.13 虚拟操作系统的引导文件中关于文件系统的定义;

如果您的硬盘有一定的空间,就可以把被虚拟的操作系统安装在硬盘的实际物理分区中,当然您首先得准备一个硬盘分区。然后格式化成Linux的文件系统,比如ext3或reiserfs 等;然后是在这个分区上构建您想要虚拟的操作系统,最后才是写虚拟操作系统的引导配置文件,在配置文件中,要用phy:来指定。

比如:

disk = ['phy:hda7,sda1,w']
中文意思就是:
disk=['phy:分区,映射点,w']

这行是什么意思呢?就是表示被虚拟的操作系统安装在/dev/hda3,我们要把hda3硬盘分区虚拟映射到/dev/sda1,并且是可读可写的;在这里要值得注意的是虚拟平台正在使用中的分区不能做为是映射点。

比如我在Slackware是位于/dev/hda6的虚拟平台,也就是真实运行的操作系统,我想用它来虚拟位于/dev/hda7分区的Fedora。所以我不能把/dev/hda6做为hda7的映射点。也就是下面一行是错误的:

disk = ['phy:hda7,hda6,w']

如何定义映射点,其实也比较好办,只要符合Linux设备的规则就可以;比如下面的也可以;

disk = ['phy:hda7,sda2,w']
disk = ['phy:hda7,sda3,w']
disk = ['phy:hda7,sdb1,w']
disk = ['phy:hda7,sdb2,w']
... ...

什么是映射点呢?也就是说通过phy定义后,被虚拟的操作系统的位于的真实的物理分区,在虚拟平台中,被映射到另一个分区;可能这样说有点不太明白。呵。。。。。。

举个例子吧:比如我们在Slackware虚拟Fedora ,而Fedora 位于/dev/hda7中。我们在引导Fedora的配置文件中定义Fedora所用的物理分区被映射到/dev/sda1;

disk = ['phy:hda7,sda1,w']
root = "/dev/sda1 ro"

当我们把Fedora引导起来的时候,Fedora的文件系统就是用被虚拟后的分区,也就是/dev/sda1。在Fedora中,我们通过df -h 查看到Fedora是位于/dev/sda1。

所以在引导Fedora的配置文件中,还要有一行来指定Fedora的root在哪里,就在/dev/sda1上;因为/dev/hda7已经被虚拟到了/dev/sda1。这回明白了吧;


6.2 以映像文件做虚拟操作系统的文件系统;

以映像文件做为虚拟操作系统的文件系统,这种方法是比较常用。也是比较方便和易于操作的,也就是说被虚拟的操作系统是放在了一个文件中。


6.21 创建映像文件;

[root@localhost ~]# dd if=/dev/zero of=fedora50.img bs=2k seek=2048k count=1
读入了 1+0 个块
输出了 1+0 个块
[root@localhost ~]# ls -lh fedora50.img
-rw-r--r-- 1 root root 4.1G 2006-04-13 01:27 fedora50.img

我们可以用dd来创建映像文件,上面的例子是创建了大小为4.1G的体积的,名为fedora50.img的映像文件;您可以调整上面命令参数的大小来创建您想要的体积大小的映像文件。


6.22 格式化映像为Linux文件系统;

Linux文件系统,比如ext3或reiserfs,看自己喜欢吧;您可以用mkfs.ext3或mkfs.reiserfs命令来创建文件系统,请参考:

[root@localhost ~]# /sbin/mkfs.ext3 fedora50,img
mke2fs 1.38 (30-Jun-2005)
fedora50,img is not a block special device.
Proceed anyway? (y,n) y 注:在这里输入y就时行格式化了,然后遇到提示之处,都是用回车。

这样fedora50.img就是ext3文件系统了,你可以用mount -o loop 来挂载使用它,在它上面存储文件等。

[root@localhost ~]# mkdir /mnt/fedora50
[root@localhost ~]# mount -o loop fedora50.img /mnt/fedora50
[root@localhost ~]# df -h
root@localhost:/opt# df -lh
Filesystem 容量 已用 可用 已用% 挂载点
/dev/hda6 12G 8.5G 3.3G 73% /
/root/fedora50,img 4.0G 129M 3.7G 4% /mnt/fedora

上面的一系列命令执行下去后,说明fedora50.img已经挂载到了/mnt/fedora目录中,我们可以向/mnt/fedora中存放文件。这样就写到了fedora50.img映像文件中。写完后,我们可以卸载fedora50.img;

[root@localhost ~]# umount /mnt/fedora


6.23 在映像文件上构建操作系统;

在映像文件上构建操作系统,目前在一个Linux操作系统中构建另一个操作系统,主要是通过chroot工具和软件包提取工具来构建。基础的东西还是需要一点的,请参考:

目前在开源社区中,已经有人把一些常用的发行版的基础系统做好了。我们能拿过来直接用。呵。。。。。只要有基础系统,我们就能chroot进入,我们就能用相应发行版软件包管理器来构建操作系统了。

操作系统之基础系统资源:

http://jailtime.org


6.24 虚拟操作系统的引导文件中关于文件系统的定义;

disk = ['file:/opt/vmos/vmos.img,sda1,w', 'file:/opt/vmos/vmos.swap,sda2,w']
root = "/dev/sda1 ro"

我们还是以实例解说,把装有vmos.img的映像映射到/dev/sda1 分区,vmos.img就是虚拟操作系统root存放地。vmos.swap是被虚拟文件系统的交换分区,这个交换分区也是一个文件,被映射到了 /dev/sda2 。然后通过root= 行来指定虚拟操作系统所处的分区,这个位置就是被虚拟后的分区。

定义时要注意自己的这些文件存放在哪了?上面的例子表示vmos.img和vmos.swap是存放在/opt/vmos目录中。要看好了。。


7、实例应用:用Slackware+Xen虚拟Fedora 5.0


7.1 Fedora 安装运行于一个物理分区中;


7.11 下载Fedora 5.0的基础系统;

请到: http://jailtime.org


7.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


7.13 规划硬盘的物理分区并创建文件系统;

您可以在您的硬盘上创建一个物理分区,如果有空闲的物理分区可用也行。然后创建一下文件系统。分区工具用fdisk 工具就行。

分区工具,请参考:《实例解说 fdisk 使用方法》
创建文件系统,请参考:《Linux 创建文件系统及挂载文件系统流程详解》

比如我们想把Fedora 放在/dev/hda5上,我们可以用mkfs.ext3来格式化/dev/hda5。

[root@localhost ~]# /sbin/mkfs.ext3 /dev/hda5


7.14 构建Fedora 5 的基础系统;

因为我们已经下载了,Fedora Core 5的基础系统的映像文件,也做了解压。会看到 fedora.fc5.img这个映像文件; 我们把这个映像挂载,然后把它的内容复制到我们刚才创始的文件系统的分区中,也就是/dev/hda5;

[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/hda5 /mnt/fedora

复制fedora.fc5.img中的内容,到/dev/hda5中;

[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/hda5


7.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 这行,这行是定义虚拟操作系统内核的,我们要用到我们安装xen是所安装的内核。要在虚拟平台/boot目录中找。比如我用Slackware虚拟 Fedora 。那虚拟平台就是Slackware。我应试在Slackware的/boot中找文件名中包含vmlinuz和xenU字样的文件。比如我找以的是:

[root@localhost ~]# ls -lh /boot/vmlinuz*xenU*
lrwxrwxrwx 1 root root 21 2006-04-12 07:49 /boot/vmlinuz-2.6-xenU -> vmlinuz-2.6.12.6-xenU
lrwxrwxrwx 1 root root 21 2006-04-12 07:49 /boot/vmlinuz-2.6.12-xenU -> vmlinuz-2.6.12.6-xenU
-rw-r--r-- 1 root root 1.1M 2006-04-12 07:49 /boot/vmlinuz-2.6.12.6-xenU

我们看到有类似的三个文件,实际上只有一个,也就是 vmlinuz-2.6.12.6-xenU,其它的都是他的链接文件。所以我们在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"
 

[1] [2] [3]

编辑 webmaster

 
 
 
评论
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - WWW.YUANMA.ORG - 中国开放源代码社区