手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:虚拟化

转:Ubuntu 9.04上的XEN虚拟服务器[转]

因为我不知道我能将服务器用来干嘛,所以我一直在想着是否有机会将自己的服务器进行虚拟化,由于找了一些资料都是centos之类的,所以确实不知道如何在ubuntu下进行安装此玩意。
虽然有此意愿,但确实我无法安装,因为我的机器的内存太小了,只有2G,如果进行虚拟化的话,内存应该是不够用的。
不过,即使这样,安装性的文章,我还是要备份一下,因为,我在找朋友赞助我内存条了。黑黑。。。。

原文地址:http://wells.osall.com/blog /index.php?uid=1&m=content&p=1434#article_content.php%3Fid%3D1434%26uid%3D1%26dt%3DY:pane:N;

要安装并使用XEN,首先更新软件源的信息。

# sudo apt-get update

然后安装xen服务器软件和工具。

# sudo aptitude install ubuntu-xen-server
# sudo aptitude install ubuntu-xen-desktop

这时候我们去/boot目录看,可以看到一个xen3.3.gz文件,但是没有供操作系统使用的XEN化的内核,因此此时的操作系统还不是Doamin-0。我找了好久都没找到现成的XEN化内核,于是就只能根据XEN手册自己编译一个内核了。

下载安装最新的kernel文件。

# sudo apt-get install linux-image-server linux-server

安装编译所需要的一些工具包。

# sudo apt-get install build-essential libncurses5-dev gawk mercurial

接下来下载XEN所提供的XEN化的内核的源代码。

# mkdir -p ~/build/linux-2.6.27-xen
# cd /usr/src/
# sudo hg clone http://xenbits.xensource.com/ext/linux-2.6.27-xen.hg

配置内核选项。

# cd /usr/src/linux-2.6.27-xen.hg
# sudo make O=~/build/linux-2.6.27-xen/ menuconfig

出现内核参数的配置菜单后,根据如下的选项修改配置。

General setup ---> Choose SLAB allocator (SLUB (Unqueued Allocator)) ---> (X) SLAB

Processor type and features ---> Subarchitecture Type (PC-compatible) ---> (X) Enable Xen compatible kernel

Bus options (PCI etc.)  ---> [*] PCI support
[*]   Xen PCI Frontend
[ ]     Xen PCI Frontend Debugging (NEW)

将 <M> 802.1d Ethernet Bridging 修改为 <*> 802.1d Ethernet Bridging:

Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging

关闭 10000 Mbit Ethernet 支持(否则可能编译失败):

Device Drivers ---> [*] Network device support ---> [ ] Ethernet (10000 Mbit) --->

在 XEN 选项区中,按照下面选择选项(确认选择 Xen version compatibility (3.0.4 and later) 来取代原来的 Xen version compatibility (3.0.2 and later)):

Device Drivers  ---> XEN  ---> [*] Privileged Guest (domain 0)
<*> Backend driver support (NEW)
<*>   Block-device backend driver (NEW)
<*>   Block-device tap backend driver (NEW)
<*>   Network-device backend driver (NEW)
(8)     Maximum simultaneous transmit requests (as a power of 2) (NEW)
[ ]     Pipelined transmitter (DANGEROUS) (NEW)
< >     Network-device loopback driver (NEW)
<*>   PCI-device backend driver (NEW)
PCI Backend Mode (Virtual PCI)  --->
[ ]     PCI Backend Debugging (NEW)
< >   TPM-device backend driver (NEW)
<M>   SCSI backend driver (NEW)
<M> Block-device frontend driver
<M> Network-device frontend driver
<M>   Network-device frontend driver acceleration for Solarflare NICs (NEW)
<M> SCSI frontend driver (NEW)
<*> User-space granted page access driver (NEW)
<*> Framebuffer-device frontend driver (NEW)
<*>   Keyboard-device frontend driver (NEW)
[*] Disable serial port drivers (NEW)
<*> Export Xen attributes in sysfs (NEW)
(256) Number of guest devices (NEW)
Xen version compatibility (3.0.4 and later)  --->

保存完配置后就可以开始编译内核了。

# sudo make O=~/build/linux-2.6.27-xen/
# sudo make O=~/build/linux-2.6.27-xen/ modules_install install

通过漫长的等待(我的Atom 330 CPU花了大约3个小时),终于编译完内核了。编译安装完成后,去/boot目录检查,应该可以看到生成了支持xen的2.6.27.5的内核了。

# ls -l /boot
total 72697
-rw-r--r-- 1 root root   525592 2009-04-17 12:05 abi-2.6.28-11-server
-rw-r--r-- 1 root root   524602 2009-07-25 11:14 abi-2.6.28-14-server
-rw-r--r-- 1 root root    87448 2009-08-13 19:50 config-2.6.27.5
-rw-r--r-- 1 root root    90587 2009-04-17 12:05 config-2.6.28-11-server
-rw-r--r-- 1 root root    90560 2009-07-25 11:14 config-2.6.28-14-server
drwxr-xr-x 2 root root     1024 2009-08-13 20:04 grub
-rw-r--r-- 1 root root  8259056 2009-08-14 03:31 initrd.img-2.6.28-11-server
-rw-r--r-- 1 root root  8272673 2009-08-13 15:02 initrd.img-2.6.28-14-server
drwxr-xr-x 2 root root    12288 2009-08-14 03:17 lost+found
-rw-r--r-- 1 root root   128796 2009-03-28 04:12 memtest86+.bin
-rw-r--r-- 1 root root  1651431 2009-08-13 19:50 System.map-2.6.27.5
-rw-r--r-- 1 root root  1871187 2009-04-17 12:05 System.map-2.6.28-11-server
-rw-r--r-- 1 root root  1863183 2009-07-25 11:14 System.map-2.6.28-14-server
-rw-r--r-- 1 root root     1169 2009-04-17 12:09 vmcoreinfo-2.6.28-11-server
-rw-r--r-- 1 root root     1169 2009-07-25 11:16 vmcoreinfo-2.6.28-14-server
-rw-r--r-- 1 root root  3145318 2009-08-13 19:50 vmlinuz-2.6.27.5
-rw-r--r-- 1 root root  3520832 2009-04-17 12:05 vmlinuz-2.6.28-11-server
-rw-r--r-- 1 root root  3510496 2009-07-25 11:14 vmlinuz-2.6.28-14-server
-rw-r--r-- 1 root root   470084 2009-06-18 16:16 xen-3.3.gz

内核有了,但是还没有initrd.img也就是启动时所需的ramdisk文件,手动来生成一个。

# sudo depmod 2.6.27.5
# sudo update-initramfs -c -k 2.6.27.5

更新grub引导程序。

# update-grub

现在XEN的环境基本上都建好了,我们需要来修改一下配置文件了。

XEN服务的配置文件都在/etc/xen目录下。XEN服务的主配置文件是 /etc/xen/xend-config.sxp。打开这个文件,我们要确认的是XEN虚拟服务器的网络连接方式,这是相当重要的。我选择了桥接模式, 也就是说,Domain-U虚拟机和Domain-0在同一子网,用Domain-0的物理网卡来进行桥接到虚拟机的虚拟网卡。

# sudo vi /etc/xen/xend-config.sxp

确认网络部分是这样配置的:
(network-script network-bridge)

下一步要根据你的习惯来修改。你喜欢将虚拟机安装在哪里?是用一个镜像文件来虚拟成磁盘,还是将一个LVM逻辑卷虚拟成磁盘,或者干脆就是将物理磁盘给虚拟机使用?

对于后两种选择,你可以跳过这一步。但如果你选择了在现有的文件系统中建立一个镜像文件来虚拟成一个虚拟机的物理磁盘,那就要按照下面修改默认配置了。

由于镜像文件在加载的时候是作为回圈设备(loop device),因此要将操作系统的默认最大回圈设备数量调大,以免出现不必要的问题。

# sudo vi /etc/modules

将loop这一行修改为:
loop max_loop=64

好啦,重启主机,进入Domain-0的世界!!!

# sudo shutdown -r now

重启完成后检查一下kernel版本,是不是XEN化的那个2.6.27.5?

# uname -r
2.6.27.5

现在可以使用XEN的管理命令xm,来看看虚拟机运行状况啦!

# sudo xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1473     4     r-----    479.8

哈哈,可以看到Domain-0正常运行!!!你可以使用xm help来学习如何通过xm来管理虚拟机。

在State列,看到Domain-0是r的状态,也就是说,这个Domain正在运行中,并有任务在该Domain上运行。虚拟机还有如下几种状态:

  • r :该domain正在消耗CPU资源,任务运行中;
  • b :该domain正被暂时搁置(blockded),一般来说是因为这个domain在闲置中,等待输入或输出(I/O);
  • p :该domain处于暂停状态,通常是因为管理员使用 xm pause 暂停了这个domain。当domain至于暂停状态时,Xen的管理器将不会处理这个domain的任何动作;
  • s :该domain正在关机;
  • c :该domain已经crash了,但是没有关机。一般来说是因为domain的配置文件没有设置 on_crash 动作所致;
  • d :该domain正在死机中,一般来说是因为这个domain无法正确 shutdown/crashed 之故。

---------------------------
顺便说一下,文章所提到的原文地址无法打开,我的这篇文章来自于http://hi.baidu.com/airzhutao/blog/item/0cb546ef4ebb3be4cf1b3e4a.html。

Tags: ubuntu, xen, 虚拟化