xen在debain上的安装

xen在debain上的安装

debain 新加源

#编辑/etc/apt/source.list文件,加入
deb http://debian.cn99.com/debian/ etch main
deb-src http://debian.cn99.com/debian/ etch main
#更新源的软件包信息
apt-get update

#添加本地源
deb file:/root/debs ./

网络配置

vi /etc/network/interface

 

auto lo eth0
iface lo inet loopback
 
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 10.0.0.212
        netmask 255.255.255.0
        network 10.0.0.0
        broadcast 10.0.0.255
        gateway 10.0.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 10.0.0.1
allow-hotplug eth0:1
iface eth0:1 inet static
        address 10.0.0.145
        netmask 255.255.255.0
        network 10.0.0.0
        broadcast 10.0.0.255
        gateway 10.0.0.1

 

安装bash-completion

apt-get install bash-completion
#编辑/etc/bash.bashrc文件,去掉下面几行的注释
# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ]; then
#. /etc/bash_completion
#fi
#即时生效
. /etc/bash.bashrc


调整dom0所占用的内存
#编辑menu.lst文件
title           Xen 3.0.3-1-i386-pae / Debian GNU/Linux, kernel 2.6.18-6-xen-686
root            (hd0,0)
kernel          /boot/xen-3.0.3-1-i386-pae.gz dom0_mem=65535
module          /boot/vmlinuz-2.6.18-6-xen-686 root=/dev/sda1 ro console=tty0
module          /boot/initrd.img-2.6.18-6-xen-686

guest注意事项
#guest需要禁用hwclock对rtc进行操作,禁用mount -t proc,禁用mount -t sysfs


安装xen虚拟机

#运行下面命令安装xen
apt-get install xen-linux-system-2.6.18-4-xen-686 libc6-xen bridge-utils
#安装libc6-xen,这是去除tls线程的库,解决一些BUG
apt-get install libc6-xen
#重启电脑
reboot
#调整/etc/xen/xend-config.sxp文件的网络设置,打开网桥功能,删除下面行的注释
# (network-script network-bridge)
#安装xen工具,包含创建、管理虚拟机的工具
apt-get install xen-tools
#编辑/etc/xen-tools/xen-tools.conf文件,调整内核初始参数,使其与本机匹配
#调整下面行
#
# Default kernel and ramdisk to use for the virtual servers
#
kernel = /boot/vmlinuz-2.6.18-4-xen-686
initrd = /boot/initrd.img-2.6.18-4-xen-686

#更多的调整下面这些设置
dir = /home/xen
debootstrap = 1
size = 4Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = etch # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.

#建立所有客户机系统的主目录
mkdir /home/xen
mkdir /home/xen/domains

#创建客户机类似下面命令
xen-create-image -hostname=mailserver -ip=10.0.0.21 -netmask=255.255.255.0 -gateway=10.0.0.1 -passwd
#启动客户机命令
xm create mailserver.cfg

#如果发现有下面错误,表示网桥没有建立,需要在/etc/xen/xend-config.sxp文件中打开“(network-script network-bridge)”选项,并用/etc/init.d/xend restart重启xen服务
Error: Device 0 (vif) could not be connected. Backend device not found.



xen客户机配置文件范例,内存分配384M,使用逻辑卷/dev/data/lvm_domino,虚拟机名称domino,虚拟网卡MAC地址看设置
kernel = "/boot/vmlinuz-2.6.18-6-xen-686"
ramdisk = "/boot/initrd.img-2.6.18-6-xen-686"
memory = 384
name = "domino"
vif = [ 'mac=aa:00:00:ad:18:24' ]
disk = ['phy:data/lvm_domino,sda1,w']
root = "/dev/sda1 ro"
extra = ""


Xen支持声卡和USB设备

在 /etc/xen/you_domain 文件中加入以下内容即可:

# 支持声卡
audio = 1
soundhw='all'

# 支持 USB 设备
usb = 1
usbdevice = 'tablet'
#usbdevice = 'host:eb1a:2860'

这里的 host:ebla:2860 参数可以通过以下命令来得到,eb1a 是表示 Verder 代号,2860 是产品 ID:

# 以下命令会列出所有的 USB 设备
# cat /proc/bus/usb/devices

# 插上实际的 USB 设备后会显示出类似这样的内容:
# cat /proc/bus/usb/devices |grep ^P
P:  Vendor=0000 ProdID=0000 Rev= 2.06
P:  Vendor=eb1a ProdID=2860 Rev= 1.00  # <- 这个就是已经插上的设备
P:  Vendor=0000 ProdID=0000 Rev= 2.06
P:  Vendor=0000 ProdID=0000 Rev= 2.06
P:  Vendor=0000 ProdID=0000 Rev= 2.06
P:  Vendor=0000 ProdID=0000 Rev= 2.06
P:  Vendor=0000 ProdID=0000 Rev= 2.06
P:  Vendor=0000 ProdID=0000 Rev= 2.06



xen管理工具用法


#列出所有正在运行的虚拟操作系统,请执行以下命令:
/usr/sbin/xm list

#通过配置文件来引导被虚拟的操作系统,请执行以下命令:
/usr/sbin/xmcreate -c 虚拟操作系统的启动配置文件

#例如我们要启动被虚拟的操作系统GTES11 ,我们要写一个启动GTES11的配置文件,比如是gtes11vm.cfg。然后就可以通过下面的命令来引导GTES11了。
/usr/sbin/xmcreate -c gtes11vm.cfg

#从终端或控制台登录正在运行的虚拟操作系统,可以执行以下命令:
/usr/sbin/xm console 正在运行的虚拟操作系统的Name或ID

#存储正在运行的虚拟操作系统的状态及唤醒虚拟操作系统,可以执行以下命令:
/usr/sbin/xm save
/usr/sbin/xm restore

#停止正在运行的虚拟操作系统/激活停止的虚拟操作系统,可以执行以下命令:
/usr/sbin/xm pause
/usr/sbin/xm unpause

#调整虚拟平台/虚拟操作系统的占用内存,可以执行以下命令:
/usr/sbin/xm mem-set

#关闭被虚拟的系统,可以执行以下命令:
/usr/sbin/xm shutdown虚拟操作系统的Name或DomID
/usr/sbin/xm destroy

#调整虚拟平台及虚拟操作系统的虚拟CPU个数,可以执行以下命令:
/usr/sbin/xm vcpu-set

#查看虚拟系统运行的状态,可以执行以下命令:
/usr/sbin/xm top
/usr/sbin/xentop




xen以物理硬盘作为虚拟块设备

#以实际物理硬盘分区做为虚拟操作系统的文件系统,要经过硬盘分区,创建文件系统流程。 一个简单的配置就是直接把有效的物理分区做为虚拟块设备。在您的 domain配置文件中,通过用phy:来指定。比如类似下面的一行:

disk = ['phy:hda3,sda1,w']

# 指定物理分区/dev/hda3虚拟为/dev/sda1,并且被虚拟的系统所用的文件系统位于/dev/sda1。块设备作为典型的配置在Domain 中是只读的,否则Linux内核的文件系统由于Domain文件系统多次改变而变得混乱(相同的ext3分区以rw读写方式挂载两次的解决办法会导致崩溃 的危险!)。Xend通过检查设备没有以rw可写读模式被挂载于 Domain0 上,并且检查同一个块设备没有以读写的方式应用于另外一个Domain上。




以文件作为虚拟块设备

#以映像文件做为虚拟操作系统的文件系统,这种方法是比较常用。也是比较方便和易于操作的,也就是说被虚拟的操作系统是放在了一个文件中。 例如,创建一个2G的文件,(文件的块的大小为1KB)
dd if=/dev/zero of=gtes11vm.img bs=1k seek=2048k count=1

#您可以调整上面命令参数的大小来创建您想要的体积大小的映像文件。 在映像文件上创建文件系 统:
mkfs.ext3 gtes11vm.img

#(当有提示确认时,请输入’y’) 移植文件系统,比如持目前您正在应用的Linux文件系统中拷贝:
mount -o loop gtes11vm.img /mnt
cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt
mkdir /mnt/{proc,sys,home,tmp}

# 然后应该编辑/etc/fstab,/etc/hostname等。不要忘记是 在被mount的文件系统中更改这些,而不是您的 domain 0的文件系统。比如您应该编辑 /mnt/etc/fstab,而不是/etc/fstab。例如在/mnt/etc/fstab中添加一行 /dev/sda1。 卸载文件系统
umount /mnt

#在配置文件中的设置:
disk = ['file:/full/path/to/gtes11vm.img,sda1,w']
# 就象虚拟机写入自己的硬盘,所以要设置映像文件所处的位置、虚拟硬盘、可读可写。 Linux支持最多8个虚拟文件系统,如果想解除这个设置,请用 max_loop的参数来配置,当然您所用的虚拟平台dom0内核已经 编译了 CONFIG_BLK_DEV_LOOP 这个选项。您可以在系统启动时,在boot选择中设置max_loop=n。





#以LVM作为虚拟块设备

#您还可以用LVM卷作为虚拟机的文件系统。 初始化一个分区到LVM卷:
pvcreate /dev/sda10

#创建一个卷组名’vg’在物理分区上:
vgcreate vg /dev/sda10

#创建一个逻辑卷大小为4G,名字为’gtesvmdisk1’:
lvcreate -L4096M -n gtesvmdisk1 vg

#现在你能在/dev/vg/gtesvmdisk1中创建一个文件系统,然后挂载它,并且构建虚拟系统:
mkfs -t ext3 /dev/vg/gtesvmdisk1
mount /dev/vg/gtesvmdisk1 /mnt
cp -ax / /mnt
umount /mnt

#现在对您的VM做如下配置:
disk = [ 'phy:vg/gtesvmdisk1,sda1,w' ]

#LVM 能让您调节逻辑卷的体积,你可以调整适合文件系统的体积大 小以便于有效的利用空闲空间。一些文件系统(比如ext3)支持在线调 整,请看 LVM手册,以获取更多的信息。 您也可以通过copy-on-write(CoW)来创建LVM 卷的克隆(在LVM术语的通称是可写的持续快照)。这个工具在最早出现在Linux 2.6.8的内核中,因此他不可能象希望的那样稳定。特别注意的是,大量应用CoW LVM 硬盘会占用很多dom0的内存,并且有错误情况发生,例如超出硬盘空间的不能被处理。希望这个特性在未来有所提升。




以NFS做为虚拟系统的文件系统

# 您还可以用NFS服务器提供的文件系统做为虚拟系统的文件系统。首先我们要通过修改/etc/exports文件来配置一个可用的NFS服务器。然后配置 虚拟机所用的NFS root。当然要指定NFS服务器的IP地址,应该确保有如下的参数,在虚拟系统引导的配置文件中:
root = '/dev/nfs'
nfs_server = '2.3.4.5'        # NFS 服务器IP地址
nfs_root = '/path/to/root'    # NFS服务器文件系统路径





xmdomain.cfg配置解释

#xmdomain.cfg  文件包含你必须修改的操作参数,它位于etc/xen目录。下面是一些你可以在xmdomain.cfg文件里启用或禁止的参数:

kernel       决定内核映像的全限定路径
ramdisk       决定用于初始ramdisk的initrd的全限定路径
memory       决定在域启动时所分配的内存数量(以MB为单位)
name       决定域的唯一名称
root       决定域的根设备
nic           决定域的网络接口卡的数量(缺省为1)
disk       决定设备块队列的模式 — 三种模式分别是:
            ·mode - 设备访问模式
            ·backend-dev - 导出至客户机域的后台域
            · frontend-dev - 决定设备怎样在客户机域里出现
vif           决定虚拟接口队列的模式(每个模式代表一组name=value操作)。
builder       决定构造域的建立者(缺省为Linux)
cpu           决定域启动时所用的CPU序号。0表示第一个CPU,1表示第二个,诸如此类(缺省为-1)。
cpus       决定域的VCPU上的哪些CPU是可执行的
extra       决定在内核参数行最后所附加的其他信息
nfs_server   决定用于根设备的NFS服务器的IP地址
nfs_root    决定NFS服务器的根目录的全限定路径
vcpus       决定分配给域的虚拟CPU数量(缺省为1)
on_shutdown    设定域关闭(shutdown)的参数来触发DomU内部的graceful关闭(或 xm shutdown)
on_reboot   设定域关闭的参数来触发DomU内部的graceful重启(或xm reboot)
on_crash   指定触发DomU崩溃的域关闭参数。



在lvm卷上安装xen客户机

My assumptions here are that you have a free partition named /dev/hda5 which you can use for setting up a LVM partition.

The following values can offcourse be changed suited to your needs:

  • -L<value> at lvcreate to set size for your partitions

  • memory = <value> in /etc/xen/domu1 to set memory size for the domU

The domU uses kernel "/boot/vmlinuz-2.6.11-xenU", because this document was written with Xen 2.0.7 installed. This setup however also works up until the last Xen unstable (3.0) version. The domU kernel line changes into the kernel supplied by the Xen version of your choice.

  • install the base system:

apt-get install lvm2
pvcreate /dev/hda5
vgcreate lvmxen /dev/hda5
lvcreate -L1G -n domu1 lvmxen
lvcreate -L256M -n domu1-swap lvmxen
mke2fs /dev/lvmxen/domu1
tune2fs -j /dev/lvmxen/domu1
mkswap /dev/lvmxen/domu1-swap
mount /dev/lvmxen/domu1 /mnt
debootstrap sarge /mnt <debianserver of your choice>

  # It can be possible that debootsrap spits out an error message
  # like: E: Couldn't find these debs: 33024830
  # use the following command line for debootstrap if this is the case.
  #
  # debootstrap --resolve-deps sarge /mnt <debianserver of your choice>

mv /mnt/lib/tls /mnt/lib/tls.disabled

     

  • put in /mnt/etc/network/interfaces :

auto lo
iface lo inet loopback

     

  • put in /mnt/etc/fstab :

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/hda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/hda2       none            swap    sw              0       0

     

  • create ttys

cd /dev
./MAKEDEV tty1 tty2 tty3 tty4 tty5 tty6

     

  • unmount the newly created domU

cd /
umount /mnt

     

  • create a /etc/xen/domu1 file, for example:

  #  -*- mode: python; -*-
  kernel = "/boot/vmlinuz-2.6.11-xenU"
  memory = 128
  name = "domu1"
  vif = [' bridge=xen-br0' ]
  disk = ['phy:/dev/lvmxen/domu1,hda1,w','phy:/dev/lvmxen/domu1-swap,hda2,w']
  ip="192.168.2.103"
  netmask="255.255.255.0"
  gateway="192.168.2.1"
  hostname = "domu1"
  root = "/dev/hda1 ro"
  extra = "4"

     

  • start the domU with xm create domu1 -c

  • log in as root, run base-config , happy xenning

--

for a xen 3.0.0 source install, the /etc/xen/domu1 file must have the following values changed in /etc/xen/domu1:

  • kernel = "/boot/vmlinuz-2.6.12-xen" vif = [' bridge=xenbr0' ]

otherwise

  • the domU kernel won't boot

  • you get "Error: Device 0 (vif) could not be connected. Backend device not found." because your bridge interface won't be found - I am not sure if the domU config really worked with xen below 3.0 - never tried that.

你可能感兴趣的:(linux,Debian,xen)