Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25833883
  • 博文数量: 271
  • 博客积分: 10025
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-12 15:28
文章分类

全部博文(271)

文章存档

2010年(71)

2009年(164)

2008年(36)

我的朋友

分类: LINUX

2009-12-23 19:51:17

在Debian 5.0下布署xen3.4.2应用
by Wang Xiantong,xiantong@gmail.com
date:2009.12.17

1、安装debian 5.0,taskel选择软件包时选择标准安装
2、编译安装xen
2.1、安装编译xen所需软件
#apt-get update
#apt-get install build-essential kernel-package libncurses5-dev gawk -y
#apt-get install zlib1g-dbg zlib1g-dev iproute python-dev mercurial -y
#apt-get install openssl libssl-dev xorg-dev -y
#apt-get install bridge-utils bcc bin86 -y
#apt-get install latex209-bin fig2ps -y
注:如果安装这些包的时候出现错误:`libxext-dev' is missing final newline,请参照下面的方法
#apt-get install --reinstall --download-only libxext-dev
#dpkg -c /var/cache/apt/archives/liibxext-dev_2%3a1.0.4-1_amd64.deb| awk \
'{if ($6 == "./") { print "/."; } \
else if (substr($6, length($6), 1) == "/") \
{print substr($6, 2, length($6) - 2); } \
else { print substr($6, 2, length($6) - 1);}}' \
> /var/lib/dpkg/info/libxext-dev.list
#apt-get dist-upgrade
如果发现又有新的包产生这样的错误,照此法,直至所有包都正常。
2.2、下载xen-3.4.2.tar.gz
#cd /usr/src
#wget
2.3、解压
#tar zxvf xen-3.4.2.tar.gz
2.4、编译xen
#cd xen-3.4.2
#make world
接下来会面对一段参数提示,一般回车选择默认
2.5、安装xen
#make install
2.6、生成initrd.img-2.6.18.8
#depmod -a 2.6.18.8-xen
#update-initramfs -c -k 2.6.18.8-xen
如果是更新该文件使用
#update-initramfs -u -k 2.6.18.8-xen
2.7、修改/boot/grub/menu.conf
title Xen 3.4 /XenLinux 2.6
root (hd0,0)
kernel /xen-3.4.gz console=vga
module /vmlinuz-2.6.18.8-xen root=/dev/sda2 ro console=tty0
module /initrd.img-2.6.18.8-xen
2.8、重启系统
#reboot
3、驱动网卡
重启进入新内核,如果网卡不能工作,一般有两种情况:
(1)2.8.18这个内核相对较旧,不能驱动你的网卡
(2)编译新内核产生了不同的硬件到ethX的映射,eth0没有映射到你的真实网卡,不能启动
我的情况是第二种,利用dmesg|grep eth检测
#dmesg |grep eth
netfront: Initialising virtual ethernet driver.
eth0: RTL8168c/8111c at 0xffffc2000003a000, 00:1f:d0:9d:5f:3b, XID 3c4000c0 IRQ 255
udev: renamed network interface eth0 to eth2
eth1394: eth0: IEEE-1394 IPv4 over 1394 Ethernet (fw-host0)
udev: renamed network interface eth0 to eth3
我们可以看到eth0已经被重新定义为eth2和eth3,而eth0则被eth1394占用,那么我可直接把/etc/network/interfaces中的eth0改为eth2或eth3来解决这个问题。
如果你的网卡在新内核中不能使用,也就是第一种情况,在旧内核下dmesg|gerp eth,确定该网卡型号,然后网上下载,安装。华军软件园提供了一些LINUX驱动,但是那里的下载防盗链,wget下载不成功。
然后进入新内核编译安装。以下是基本方法:
检查内建驱动r8169.ko是否安装
#lsmod|grep r8169
如果安装,把它移除
#rmmod r8169
如果内建的r8169驱动不能移除,手动修改/etc/modprobe.d/aliases,删除‘alias eth0 r8168’条目,然后重试或reboot系统。
下载RTL8168c/8111c这个驱动

安装unzip,用来解压zip包
#apt-get install unzip
#unzip realtek_rtl8168b_801300_linux.zip
#cd r8168-8.013.00/r8168-8.013.00
#make clean modules
#make install
#depmod -a
#modprobe r8168
检测网卡是否安装成功
#lsmod |grep r8168
#ifup eth0
#ifconfig -a
4、配置xend开机启动
#ln -s /etc/init.d/xend /etc/rc1.d/S21xend
#ln -s /etc/init.d/xend /etc/rc2.d/S21xend
#ln -s /etc/init.d/xend /etc/rc3.d/S21xend
#ln -s /etc/init.d/xend /etc/rc4.d/S21xend
#ln -s /etc/init.d/xend /etc/rc5.d/S21xend

#ln -s /etc/init.d/xend /etc/rc0.d/K79xend
#ln -s /etc/init.d/xend /etc/rc6.d/K79xend

#ln -s /etc/init.d/xendomains /etc/rc1.d/S22xendomains
#ln -s /etc/init.d/xendomains /etc/rc2.d/S22xendomains
#ln -s /etc/init.d/xendomains /etc/rc3.d/S22xendomains
#ln -s /etc/init.d/xendomains /etc/rc4.d/S22xendomains
#ln -s /etc/init.d/xendomains /etc/rc5.d/S22xendomains

#ln -s /etc/init.d/xendomains /etc/rc0.d/K78xendomains
#ln -s /etc/init.d/xendomains /etc/rc6.d/K78xendomains
#/etc/init.d/xend start
#/etc/init.d/xendomains start
5、配置softraid1和lvm2支持
注意/boot不能安装在lvm分区上,所以专门分了个255M的md0用来引导系统
5.1、第二块硬盘分区
/dev/sdb1 255M 格式fd (Linux raid autodetect)
/dev/sdb2 剩下的所有空间 格式fd(Linux raid autodetect)
#fdisk /dev/sdb

The number of cylinders for this disk is set to 38913.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sdb: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00091e8f

Device Boot Start End Blocks Id System

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-38913, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-38913, default 38913): +255M

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (33-38913, default 33):
Using default value 33
Last cylinder or +size or +sizeM or +sizeK (33-38913, default 38913):
Using default value 38913

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
5.2、安装mdadm
apt-get install mdadm
5.3、建立/dev/md0和/dev/md1
#mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
#mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2
5.4、格式化/dev/md0为ext3格式
#mkfs.ext3 /dev/md0
5.5、安装lvm2
#apt-get install lvm2
5.6、新建物理卷
#pvcreate /dev/md1
5.7、新建卷组 
#vgcreate vg1 /dev/md1
5.8、新建逻辑分区swap,作为交换分区
#lvcreate -L 4G -n swap vg1
5.9、新逻辑分区root,作为系统根(/)分区
#lvcreate -L 8G -n root vg1
5.10、格式化交换分区
#mkswap /dev/vg1/swap
5.11、格式化根分区为ext3格式
#mkfs.ext3 /dev/vg1/root
5.12、挂载root分区至/mnt
#mount /dev/vg1/root /mnt
5.13、把源系统的根/所有文件即/dev/sda2上的文件完全复制到目标盘即/dev/vg1/root
#cp -ax / /mnt
5.14、挂载/dev/md0至/mnt/boot
mount /dev/md0 /mnt/boot
5.15、把源系统的/boot分区所有文件即/dev/sda1上的文件安全复制到目标盘即/dev/md0
cp -ax /boot /mnt
5.16、把grub安装到/dev/sdb
# grub --no-floppy
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
root (hd0,0)
grub> setup (hd0)
grub> quit
5.17、修改menu.lst
#vi /mnt/boot/grub/menu.lst
title Xen 3.4 /XenLinux 2.6
root (hd0,0)
kernel /xen-3.4.gz console=vga
module /vmlinuz-2.6.18.8-xen root=/dev/mapper/vg1-root ro console=tty0
module /initrd.img-2.6.18.8-xen
#cp /mnt/boot/grub/menu.lst /boot/grub/
5.18、修改fstab
#vi /mnt/etc/fstab
#
proc /proc proc defaults 0 0
/dev/mapper/vg1-root / ext3 errors=remount-ro 0 1
/dev/md0 /boot ext3 defaults 0 2
/dev/mapper/vg1-swap none swap sw 0 0
#cp /mnt/etc/fstab /etc/
5.19、修改/etc/mdadm/mdadm.conf
#mdadm --examine --scan >/etc/mdadm/mdadm.conf
5.19、重新生成initrd.img-2.6.18.8-xen
#depmod -a
or
#depmod -a 2.6.18.8-xen
#update-initramfs -u -k 2.6.18.8-xen
#cp /boot/initrd.img-2.6.18.8-xen /mnt/boot/
5.20、重启系统
#reboot
5.21、把sda加入到softraid1
复制sdb分区格式到/dev/sda
#sfdisk -d /dev/sdb |sfdisk /dev/sda
把/dev/sda1加到/dev/md0,/dev/sda2加到/dev/md1
#mdadm --manage /dev/md0 --add /dev/sda1
#mdadm --manage /dev/md1 --add /dev/sda2
5.22、监测softraid1的同步情况
#watch cat /proc/mdstat
Every 2.0s: cat /proc/mdstat Thu Dec 17 11:51:20 2009

Personalities : [raid1]
md1 : active raid1 sda2[2] sdb2[1]
312311552 blocks [2/1] [_U]
[>....................] recovery = 1.0% (3256128/312311552) finish=72.2m
in speed=71261K/sec

md0 : active raid1 sda1[0] sdb1[1]
256896 blocks [2/2] [UU]

unused devices:
等待同步完成
5、23、重新安装grub到/deb/sda
# grub --no-floppy
grub> device (hd0) /dev/sda
grub> root (hd0,0)
root (hd0,0)
grub> setup (hd0)
grub> quit
5.24、重启
6、创建domU win2003客户机
6.1、创建domU win2003客户机的硬盘
#lvcreate -L15G -n win2003_c vg1
#lvcreate -L35G -n win2003_d vg1
6.2、创建domU win2003客户机的配置文件
#vi /etc/xen/win2003.cfg
kernel='/usr/lib64/xen/boot/hvmloader'
builder='hvm'
name='win2003'
device_model='/usr/lib64/xen/bin/qemu-dm'
disk=['phy:/dev/vg1/win2003_c,hda,w','phy:/dev/vg1/win2003_d,hdb,w','phy:/dev/loop0,hdc:cdrom,r']
boot='dc'
memory='2048'
shadow_memory='8'
vcpus=2
vif=['type=ioemu,mac=00:21:41:e2:31:01,bridge=eth2']
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'
vnc=1
vnclisten='0.0.0.0'
vncdisplay=0
vncunused=1
vncpasswd='pass'
sdl=0
usb=1
usbdevice='mouse'
6.3、挂载win2003安装盘
#losetup -f ~/win2003encd2.iso
6.4、启动domU win2003客户机,开始安装
#xen create win2003.cfg
在win机上使用vncviewer连接至dom0主机,密码pass,正常安装
换盘
#xm block-detach win2003 /dev/hdc -f
#xm block-attach win2003 file:/root/win2003r2encd2.iso /dev/hdc r
注意:
disk=['phy:/dev/vg1/win2003_c,hda,w','phy:/dev/vg1/win2003_d,hdb,w','phy:/dev/loop0,hdc:cdrom,r']
当/dev/loop0内没有挂载任何镜象的时候,domU 客户机win2003启动,dom0和domU的CPU占用率会居高不下。
7、迁移
xen在多个host共用存储(NFS,ISCSI)时,迁移和在在线迁移比较方便。但是迁移LVM backend就麻烦了,下面是迁移xen domU win系统的思路
7.1、保存主机名为win2003的运行状态
#xm save win2003 /mnt/win2003.dsk
7.2、复制xenguest win2003的硬盘(LVM分区)内容到文件
#dd if=/dev/vg1/win2003_c of=/mnt/win2003_c.bak
#dd if=/dev/vg1/win2003_d of=/mnt/win2003_d.bak
7.3、利用scp传至目标主机
#scp /mnt/win2003* root@192.168.1.22:/mnt
7.4、在目标主机是反向操作,恢复主机
dest#lvcreate -L15G -n win2003_c vg1
dest#lvcreate -L35G -n win2003_d vg1
dest#dd if=/mnt/win2003_c.bak of=/dev/vg1/win2003_c
dest#dd if=/mnt/win2003_d.bak of=/dev/vg1/win2003_d
dest#xm restore /mnt/win2003.dsk
Error: Domain unable to be unpaused: an integer is required
Usage: xm restore [-p]

Restore a domain from a saved state.
-p, --paused Do not unpause domain after restoring it

dest# xm restore win2003.dsk -p
新建/etc/xen/win2003.cfg,修改必要配置,或直接把源机上的该文件复制过来
#xm create win2003.cfg
注意:dd操作,数据量太大,scp复制数据量也是这样,所以确保两台机上的/mnt空间足够。此法太耗时!如果有哪位朋友有更好的方法,请email联系我,谢谢!
还有一个小插曲,迁移后的domU win2003客户机一切正常,唯独sql server2000(sp4)不能正常启动,反复测试不能如愿,后来发现是amd三核cpu不支持sql server2000 sp3以上的数据库。
8、安装douU centos5.4客户机(半虚拟)
8.1、下载centos5.4的xen安装包
#wget http://mirror.centos.org/centos/5.4/os/x86_64/images/xen/vmlinuz
#wget http://mirror.centos.org/centos/5.4/os/x86_64/images/xen/initrd.img
#mv /boot/vmlinuz /boot/vmlinuz-centos-xen-install
#mv /boot/initrd.img /boot/initrd.img-centos-xen-install
8.2、建立centos5.4 domU的配置文件
#vi /etc/xen/centos.cfg
kernel = "/boot/vmlinuz-centos-xen-install"
ramdisk = "/boot/initrd.img-centos-xen-install"
name = "centos"
memory = "512"
disk = ['phy:/dev/vg1/centos,xvda,w']
vif = [ '' ]
vfb = ['vnc=1,vnclisten=0.0.0.0,vncunused=1,vncpasswd=pass']
on_reboot = 'destroy'
on_crash = 'destroy'
8.3、准备该domU的分区
#lvcreate -L8G -n centos vg1
8.4、运行安装
#xm create centos.cfg -c
打开vncviwer连接dom0相应端口开始安装,接下来的工作和正常安装centos相同。
安装时请使用静态IPV4地址,域名IP只填一个,地址和目录分别是mirrors.163.com,/centos/5.4/os/x86_64,接下来选CLI文本方式安装。
8.5、修改centos5.4 domU配置文件
#xm shutdown centos
#vi /etc/xen/centos.cfg
name = "centos"
memory = "512"
disk = ['phy:/dev/vg1/centos,xvda,w']
vif = [ '' ]
bootloader="/usr/bin/pygrub"
vfb = ['vnc=1,vnclisten=0.0.0.0,vncunused=1,vncpasswd=pass']
on_reboot = 'destroy'
on_crash = 'destroy'
#xm create centos.cfg -c
或者
#xm create centos.cfg
9、安装domU debian5.0客户机(半虚拟)
debian 5.0也可以按照centos5.4的安装方法一样安装,debian 5.0支持xen的安装网络安装文件是
/dists/lenny/main/installer-i386/current/images/netboot/xen/vmlinuz
/dists/lenny/main/installer-i386/current/images/netboot/xen/initrd.gz
这里就不重复介绍了。
另外我们在该目录下还看到一个文件,这个文件是一个写的比较好用的domU debian 5.0的配置文件,下面我们利用这个文件来创建domU debian5.0虚拟机
9.1、下载xm-debian.cfg
#wget /dists/lenny/main/installer-i386/current/images/netboot/xen/xm-debian.cfg
9.2、修改domU debian5.0的配置文件
#mv xm-debian.cfg /etc/xen/debian.cfg
主要修改三个地方,一个是虚拟客户机的硬盘支持,这里改为
disk = ['phy:/dev/vg1/debian,xvda,w']
另一个就是要打开vnc支持
vfb = ['vnc=1,vnclisten=0.0.0.0,vncunused=1,vncpasswd=pass']
再一个虚拟机的名称,这里是
name = "debian"
如果你想修改其它参数,如内存,CPU相关参数请酌情修改,修改好后保存退出。
9.3、准备domU debian5.0的LVM分区
#lvcreate -L8G -n debian vg1
9.4、安装
#xm create -c debian.cfg install=true install-mirror=
接下来的安装和常规安装没什么两样,你可以在当前控制台上进行也可以通过vncviwer连接到dom0进行。
9.5、domU Debian 5.0开机
#xm shutdown debian
#xm create debian.cfg

阅读(1174) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~