Jul 18

[原]在Asinuax 3.0 上使用Xen 虚拟化 阴

linuxing , 17:25 , 网络服务 » 虚拟机 , 评论(0) , 引用(0) , 阅读(29264) , Via 本站原创 | |
    Xen 是主流虚拟化技术之一,技术成熟,性能优越。某项目要求使用该技术,并在虚拟机中运行红旗DC Server 5.0 for x86,以充分利用新硬件的资源。红旗Asianux 3.0 提供Xen 虚拟化支持,使用和管理都很方便。

一、Xen介绍
    Xen 是以 GNU 的 GPL 授权发布的自由软件,目的在于提供效能佳、可支持不同操作系统的同时运作、 且让同时运作的操作系统彼此互相独立的系统环境。Xen 是基于 X86 硬件所开发出来的虚拟机器监督器 (Virtual Machine Hypervisor) 。Xen 在虚拟机器的仿真类型方面主要分为半虚拟化(Para-virtualization)全虚拟化(Full virtualization)两种,其中半虚拟化主要是透过修改 Linux 核心来达成的虚拟技术,具有较高的性能。特性如下:
引用
•  虚拟机器的运作效率与实体机器的效能相当;
•  最多可支持到具有 32 颗以上 CPU 的主机环境;
•  支持 x86/32, x86/32 含 PAE 技术, 及 x86/64 的硬件平台环境;
•  良好的硬件驱动程序支持,几乎支持所有的 Linux 装置之驱动程序;

Xen 的半虚拟化技术主要是用在相同版本的 Linux 上面,也就是说,如果妳想要使用半虚拟化的方式启动多个虚拟机器, 那么那些虚拟机器建议使用相同的操作系统,甚至要求相同版本与相同核心的 Linux 发行版。
如果妳想要安装不同版本的 Linux 或者是其它的 OS (例如 Windows XP)时,就得要使用全虚拟化技术了。
1.硬件限制
只要是 64 位的 x86 硬件(x86_64)都能够支持半虚拟化的环境。如果是 32 位的主机(x86)时,该主机必须要支持的实体地址延伸技术(PAE)才能够使用 xen,可通过下面的命令确认:
引用
# cat /proc/cpuinfo | grep flags
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt xsave avx lahf_lm arat tpr_shadow vnmi flexpriority ept vpid

全虚拟化技术要求硬件CPU必须支持虚拟化,即:
引用
•  Intel 的 VT 技术 (Virtualization Technology, Intel-VT);
•  AMD 的 SVM 技术 (Secure Virtual Machine, AMD-SVM or, AMD-V)。

可通过下面的命令确认:
引用
# cat /proc/cpuinfo | grep flags
flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt xsave avx lahf_lm arat tpr_shadow vnmi flexpriority ept vpid

※ 注意:为防止兼容性问题,大多PC 设备在出厂时都在Bios中会关闭VT 支持,而服务器通常会打开。建议在使用虚拟化前进入Bios 确认一下。

2.软件限制
Xen 分成多个层级来执行。他将 Linux 的核心修改过后,再使用这个修改过后的核心开机,而开机后先载入 Xen 的监督器 (Hypervisor), 并且启动第一个管理操作系统,我们称他为 domain-0。 (在 Xen 上面所谓的一个 domain 就是一个虚拟机!),简称Dom0。
Domain-0 之所以要先被加载是因为 Domain-0 含有其它虚拟机器启动所必须的控制指令, 并且 domain-0 也是控制虚拟装置的重要主控系统。 在 domain-0 上头最重要的就是一个 xend 的常驻程序,其它的 domain 都是由这个 xend 来管理的。 至于命名方面,除了 domain-0 之外的其它虚拟机器就依序被称为 domain-1, domain-2 等等, 我们通称为 domain-U ,简称DomU。
点击在新窗口中浏览此图片
(以上内容来自鳥哥的 Linux 私房菜 -- 利用 Xen 進行虛擬機器的製作
不是所有的操作系统都可以作为Dom0 的,这需要核心支持。以红旗Linux 为例,红旗DC Server 5.0 SP3 以后版本可作为DomU,不能作为Dom0。而红旗Asianux 3.0 则作为Dom0 或DomU 都可以。
另外,红旗Asianux 4.0 不再提供Xen 支持,而由核心提供KVM 虚拟化。

二、安装Dom0
1.安装软件包
红旗Asinuax 3.0提供Xen 虚拟化支持,只要在进行操作系统安装时,在“自定义软件包”部分,把“虚拟化软件包组”中的“虚拟化”选中即可,如图:
点击在新窗口中浏览此图片
※ 注意:如果CPU 不满足Xen的硬件要求,不会出现“虚拟化软件包组”的选择框!

2.更换引导核心
系统安装完毕后,默认为普通核心。但Xen 必须使用修改后的核心,这在上述安装时已选中,只要修改Grub 菜单即可。
引用
# cat /boot/grub/menu.lst
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Asianux Server 3 SP3 (2.6.18-194.1.AXS3)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.1.AXS3 ro root=LABEL=/
        initrd /initrd-2.6.18-194.1.AXS3.img
title Asianux Server 3 SP3-xen (2.6.18-194.1.AXS3xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-194.1.AXS3
        module /vmlinuz-2.6.18-194.1.AXS3xen ro root=LABEL=/
        module /initrd-2.6.18-194.1.AXS3xen.img

即把default 一行后面的数字修改为对应title 的位置(第一个title 对应0,xen所在title即为1)。然后重启系统,并确认启动后的核心为带xen 支持的:
引用
# uname -a
Linux ax3xen.localdomain 2.6.18-194.1.AXS3xen #1 SMP Fri May 7 10:36:44 CST 2010 x86_64 x86_64 x86_64 GNU/Linux

3.启动服务
Xen 依赖几个系统服务,默认是关闭的,请手动启动:
引用
# service libvirtd start
Starting libvirtd daemon:                                  [确定]
# service xend start
启动 xend:                                                [确定]
# service xendomains start

建议使他们随系统启动自动运行:

# chkconfig --level 35 libvirtd on
# chkconfig --level 35 xend on
# chkconfig --level 35 xendomains on


服务启动后,会虚拟出几个网卡作为桥接接口,或内部网络:
引用
peth0     Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:2082251 errors:0 dropped:0 overruns:0 frame:0
          TX packets:642108 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3012069016 (2.8 GiB)  TX bytes:221373882 (211.1 MiB)
          Interrupt:21 Memory:fe400000-fe420000

vif0.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:892328 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2292313 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1702290362 (1.5 GiB)  TX bytes:3026114429 (2.8 GiB)

virbr0    Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:468 (468.0 b)

xenbr0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
          UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
          RX packets:11462 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:3472331 (3.3 MiB)  TX bytes:0 (0.0 b)

防火墙也会自动打开,并多了一些内部网络的配置:
引用
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere            udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere            udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:bootps

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             192.168.122.0/24    state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     anywhere

ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

三、安装DomU
1.准备介质
Xen 虚拟化管理器只能从网络方式获取介质,可以是NFS、HTTP、FTP(但FTP似乎不支持用户名和密码)。所以,在安装前需提前准备介质。我这里以HTTP 方式提供,把安装镜像放到某台(或本机)上,然后挂载:

# wget ftp://192.168.228.153/iso/redflag/5.0/sp4/i386/Asianux-20-SP4-ia32-rc-dvddisc-200911261554.iso
# cd /var/www/html
# mkdir dc5
# mount -o loop /data/Asianux-20-SP4-ia32-rc-dvddisc-200911261554.iso dc5
# mount|grep dc5
/data/Asianux-20-SP4-ia32-rc-dvddisc-200911261554.iso on /var/www/html/dc5 type iso9660 (rw,loop=/dev/loop0)
# service httpd start

然后,通过访问http://192.168.228.152/dc5 ,看看是否光盘的根目录即可。

2.创建虚拟机
一切顺利的话,就可以开始安装虚拟机系统,即DomU。这可通过virt-install 命令行,或virt-manager 虚拟系统管理器界面进行安装。这里,以图形工具为例,运行:

# virt-manager

会打开:
点击在新窗口中浏览此图片

有两种虚拟化类型:qemu 和 xen,并可见到已经存在一个Domain-0。选择“xen”一行,然后点击下面的“新建”,会显示向导界面:
点击在新窗口中浏览此图片

给个虚拟机名称:
点击在新窗口中浏览此图片

选择虚拟方式为“半虚拟化”:
点击在新窗口中浏览此图片

安装介质提供方式和操作系统类别:
点击在新窗口中浏览此图片

安装介质的路径:
点击在新窗口中浏览此图片

数据存储位置,这里可使用独立的磁盘,或放在某个目录里面:
点击在新窗口中浏览此图片

网络配置,可使用虚拟机内部网络,或共享硬件设备的网卡peth0(桥接xenbr0):
点击在新窗口中浏览此图片

内存和虚拟CPU 数量,各虚拟机(包括Domain-0)合计的内存不能大于硬件的物理内存,CPU 合计建议不要超过逻辑CPU 的数量:
点击在新窗口中浏览此图片

全部设定的情况:
点击在新窗口中浏览此图片

点击“完成”即会创建磁盘,并弹出操作系统安装界面(与VMware 很像吧?):
点击在新窗口中浏览此图片

安装过程没什么好说的,与平时安装没什么差别。反而可以看看“硬件”栏的内容:
点击在新窗口中浏览此图片

安装完毕:
点击在新窗口中浏览此图片

进入系统时,会提示对Xen Console 进行简单的配置,点击“下一步”即可:
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

登陆系统,请留意核心,以及网卡是桥接到外部192.168.228.x 网段的:
点击在新窗口中浏览此图片

DomU 系统与普通操作系统没什么区别,不再仔细说明。

虚拟系统管理器可监控每台虚拟机(Dom0和DomU)的状态,通过命令行工具xm 可能做得很好(具体见参考文档):
点击在新窗口中浏览此图片

四、参考资料
1.手动创建虚拟机
可通过拷贝当前系统内容的方式创建虚拟机,具体可参考:利用 Xen 進行虛擬機器的製作——第一個泛用實例

2.字符界面进行安装
通过virt-manager 可在图形界面下进行虚拟机的安装,而virt-install 命令则可用于字符界面下进行安装,其完全不需要XWin支持。当然,若需要图形界面,也可通过--vnc 参数,激活VNC远程界面。下面是一个常见的用法:

# virt-install -p -n xentest_ax3sp5 -r 1024 --vcpus=2 --location=http://192.168.228.152/ax3sp5 \
-f /data/images/xentest_ax3sp5.img -b xenbr0 --vnc

更多的参数,可见virt-install -h

3.虚拟机网卡命令

/etc/xen/scripts/network-bridge {start/stop/status}

虚拟网络配置文件:/usr/share/libvirt/networks/default.xml
可通过类似这样的方式配置:

#virsh
virsh # net-create /usr/share/libvirt/networks/default.xml
virsh # net-start default
virsh # quit

4.使用xm 管理虚拟机
在Domain-0,可通过xm 命令启动、关闭等对Domain-U进行管理。
xm create -c DomU可启动某台DomU:

[root@ax3xen ~]# xm create -c xentest3

xm list 查看当前正在运行的DomU:
引用
[root@ax3xen ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      303     4 r-----    892.0
xentest3                                  12      511     2 -b----      7.3

xm console DomU可连接到某个DomU终端上:
引用
[root@ax3xen ~]# xm console xentest3
Asianux release 2.0 (Trinity SP4)
Kernel 2.6.9-89.5AXS2xenU on an i686

localhost.localdomain login: root
Password:
Last login: Wed Jul 18 17:15:45 on xvc0
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.9-89.5AXS2xenU #1 SMP Fri Nov 6 15:33:25 CST 2009 i686 i686 i386 GNU/Linux

这时,即可在Dom0上对某台DomU进行配置,就像在本地终端一样。通过Ctrl + 【]】(右边中括号)可跳回Dom0。

更多使用方法可参考:利用 Xen 進行虛擬機器的製作——利用 xm 指令啟動與管理 domain-1

5.RHEL5 Virtualization Guide
Tags: ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]