Linux上的虚拟化技术 Xen 初学者指南(3)

http://os.51cto.com  2007-12-04 09:57  佚名  中关村在线  我要评论(0)
  • 摘要:Xen是一个开放源代码的para-virtualizing虚拟机(VMM),或“管理程序”,是为x86架构的机器而设计的。Xen可以在一套物理硬件上安全的执行多个虚拟机;Xen是基于内核的虚拟程序,它和操作平台结合的极为密切,所以它占用的资源最少。
  • 标签:Xen  Linux  虚拟化

◆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"

所以我们可以这样写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:hda5,sda1,w','phy:hda8,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:hda5,sda1,w','phy:hda8,sda2,w']

root = "/dev/sda1 ro"

ip = "192.168.1.144"

netmask="255.255.255.0"

再举一例:

比如Fedora被安装在了/dev/hda5分区,物理交换分区为/dev/hda8。通过DHCP获得IP。我想映射/dev/hda5到/dev/hda5,并且想映射/dev/hda8到/dev/hda8。我们应该如何修改一些配置文件呢?

Fedora的引导文件内容应该是:

kernel = "/boot/vmlinuz-2.6-xenU"

memory = 128

name = "fc5"

nics = 1

vif = ['mac=aa:00:00:00:00:11']

dhcp = "dhcp"

disk = ['phy:hda5,hda5,w','phy:hda8,hda8,w']

root = "/dev/hda5 ro"

然后我们应该再把装有Fedora的/dev/hda5分区挂载,然后修改Fedora系统的/etc/fstab。注意:不是修改虚拟平台的/etc/fstab。不要弄混了!!!!

应该先挂载Fedora 5所处的分区:

[root@localhost ~]# mount /dev/hda5 /mnt/fedora/

然后修改Fedora 5的/etc/fstab文件,也就是/mnt/fedora/etc/fstab文件:找到如下两行:

/dev/sda1 / ext3 defaults 1 1

/dev/sda2 none swap sw 0 0

改为:

/dev/hda5 / ext3 defaults 1 1

/dev/hda8 none swap sw 0 0

接着再umount /mnt/fedora

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

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

7.17 虚拟操作系统网卡不能激活的处理方法;

modprobe: FATAL: Could not load /lib/modules/2.6.12.6-xenU/modules.dep:

No such file or directory

如果出现类似上面的现象,请复制虚拟平台的中的/lib/modues/下的2.6.12.6-xenU到Fedora系统中;

方法是先挂载Fedora所处的物理分区,然后用cp -rp来复制;

首先要关掉Fedora,然后再复制;

[root@localhost ~]# xm list

Name ID Mem(MiB) VCPUs State Time(s)

Domain-0 0 462 1 r----- 2192.9

fc5 2 128 1 -b---- 6.4

以上面虚拟操作系统的ID为准,比如fc5的ID是2,就要运行如下命令;

[root@localhost ~]# xm destroy 2

然后mount挂载Fedora所处的物理分区/dev/hda5;

[root@localhost ~]# mount /dev/hda5 /mnt/fedora

[root@localhost ~]# mkdir /mnt/fedora/lib/modules

注:在Fedora中的/lib目录中创建modules。如果有了就不创建;

[root@localhost ~]# cp -rp /lib/modules/2.6.12.6-xenU/ /mnt/fedora/lib/modules/

[root@localhost ~]# chmod -R 755 /mnt/fedora/lib/modules/

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

7.2 Fedora安装运行于一个映像文件中;

7.21下载Fedora 5.0的基础系统;

请到:http://jailtime.org

7.22 解压和提取相应文件;

我们把下载下来的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.23 修改引导运行Fedora的配置文件;

我们从fedora.fc5.20060401.img.tgz解压出来一个fedora.fc5.xen.cfg ,这个就是用来引导Fedora 5的配置文件。我们改一改以适合我们的需要。我们把这个文件复制为fc5vm.cfg

[root@localhost ~]# 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"

注解:

首先我们看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 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。

root一行,来指定Fedora的root位于哪个映射后的设备。映射到哪里了呢?Fedora安装到了/dev/sda1,映射后虚拟到了/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 = ['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"


共5页: 上一页 [1] [2] 3 [4] [5] 下一页
【内容导航】
 第 1 页:什么是Xen,Xen的特性  第 2 页:Xen管理工具xm
 第 3 页:用Slackware+Xen虚拟Fedora 5.0  第 4 页:引导Fedora 5
 第 5 页:关于本文,参考文档
Hyper-V 虚拟化技术专题
虚拟化的“赤壁之战”
开源虚拟化技术Xen
Linux——从菜鸟到高手
Linux/Solaris服务器的安全配置
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有