虚拟化与Xen 4.0在Debian Squeeze(AMD64)

使用Xen 4.0进行半虚拟化Debian Squeeze(AMD64)

本教程提供了有关如何在Debian Squeeze(6.0)系统(AMD64)上安装Xen 4.0并创建半虚拟化guest虚拟机的分步说明(不要将其与完全虚拟化的guest虚拟机混合使用,即硬件虚拟化(HVM))。

Xen允许您在主机操作系统( dom0 )下创建客户操作系统(* nix操作系统,如Linux和FreeBSD),即所谓的“虚拟机”或主机。 使用Xen可以将应用程序分离成完全独立的虚拟机(例如,邮件服务器的虚拟机,高流量网站的虚拟机,为客户网站提供的另一个虚拟机,一个用于DNS的虚拟机等),但仍然使用相同的硬件。 这样可以节省资金,更重要的是更安全。 如果您的DNS服务器的虚拟机被黑客入侵,它对您的其他虚拟机没有影响。 此外,您可以将虚拟机从一个Xen服务器移动到下一个。

我不会保证这将为您工作!

1初步说明

我使用的是Debian Squeeze系统( x86_64 ),主机名为server1.example.com ,IP地址为192.168.0.100作为主机系统( dom0 )。 (如果您在i386系统上,设置可能会略有不同)。我将使用Debian Squeeze进行虚拟机( domU )(但是如果您要安装Ubuntu Maverick guest,还会显示所需的更改)。

本指南将介绍如何设置基于映像的虚拟机以及基于LVM的虚拟机。

2安装Xen

要安装Xen,我们只需运行

apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-tools

之后,我们打开/ etc / modules ,并确保我们的行循环max_loop = 64仅当您要创建基于映像的虚拟机时才需要此步骤 - 如果要创建基于LVM的虚拟机,则可以跳过该步骤虚拟机 ):

vi /etc/modules
[...]
loop max_loop=64

接下来我们打开/etc/xen/xend-config.sxp ...

vi /etc/xen/xend-config.sxp

...和取消注释/添加行(网络脚本“network-bridge antispoof = yes”)并注释掉所有其他(network-script ...)行( antispoof = yes启用防火墙的Xen防火墙,使用不允许使用的IP地址,例如您的网关IP)。 还要确保启用该行(vif脚本vif桥)

[...]
(network-script 'network-bridge antispoof=yes')
[...]
(vif-script vif-bridge)
[...]

然后重新启动系统:

reboot

uname -r

并且您的新Xen内核应显示:

root@server1:~# uname -r
2.6.32-5-xen-amd64
root@server1:~#

现在跑

xm dmesg

如果你得到这样的输出...

root@server1:~# xm dmesg
WARNING! Can't find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?
root@server1:~#

...这意味着您只是在Xen准备好的内核上运行,而不是Xen虚拟机管理程序本身(这意味着您将无法启动虚拟机)。 要更改此内容,请按如下所示更改内核的引导顺序,并更新GRUB引导加载程序:

mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2

这样可以确保下次启动时,Xen虚拟机管理程序将被加载。

重新启动:

reboot

之后,

xm dmesg

应该显示管理程序正在运行:

root@server1:~# xm dmesg
(XEN) Xen version 4.0.1 (Debian 4.0.1-2) (waldi@debian.org) (gcc version 4.4.5 (Debian 4.4.5-10) ) Wed Jan 12 14:04:06 UTC 2011
(XEN) Bootloader: GRUB 1.98+20100804-14
(XEN) Command line: placeholder
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 1 MBR signatures
(XEN)  Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN)  0000000000000000 - 000000000009f000 (usable)
(XEN)  000000000009f000 - 00000000000a0000 (reserved)
(XEN)  00000000000e0000 - 0000000000100000 (reserved)
(XEN)  0000000000100000 - 00000000affa0000 (usable)
(XEN)  00000000affa0000 - 00000000affae000 (ACPI data)
(XEN)  00000000affae000 - 00000000afff0000 (ACPI NVS)
(XEN)  00000000afff0000 - 00000000b0000000 (reserved)
(XEN)  00000000fec00000 - 00000000fec01000 (reserved)
(XEN)  00000000fee00000 - 00000000fef00000 (reserved)
(XEN)  00000000ff700000 - 0000000100000000 (reserved)
(XEN)  0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI: RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT       97)
(XEN) ACPI: FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT       97)
(XEN) ACPI: DSDT AFFA0450, 960C (r1  1AAAA 1AAAA000        0 INTL 20051117)
(XEN) ACPI: FACS AFFAE000, 0040
(XEN) ACPI: APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT       97)
(XEN) ACPI: MCFG AFFA0410, 003C (r1 052608 OEMMCFG  20080526 MSFT       97)
(XEN) ACPI: OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT       97)
(XEN) ACPI: HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT       97)
(XEN) ACPI: INFO AFFAE0C0, 0124 (r1 052608 AMDINFO  20080526 MSFT       97)
(XEN) ACPI: NVHD AFFAE1F0, 0284 (r1 052608  NVHDCP  20080526 MSFT       97)
(XEN) ACPI: SSDT AFFA9AA0, 028A (r1 A M I  POWERNOW        1 AMD         1)
(XEN) System RAM: 3839MB (3931388kB)
(XEN) Domain heap initialised
(XEN) Processor #0 15:11 APIC version 16
(XEN) Processor #1 15:11 APIC version 16
(XEN) IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Detected 2600.088 MHz processor.
(XEN) Initing memory sharing.
(XEN) HVM: ASIDs enabled.
(XEN) HVM: SVM enabled
(XEN) AMD-Vi: IOMMU not found!
(XEN) I/O virtualisation disabled
(XEN) AMD: Disabling C1 Clock Ramping Node #0
(XEN) Total of 2 processors activated.
(XEN) ENABLING IO-APIC IRQs
(XEN)  -> Using new ACK method
(XEN) checking TSC synchronization across 2 CPUs:
(XEN) CPU#0 had -2 usecs TSC skew, fixed it up.
(XEN) CPU#1 had 2 usecs TSC skew, fixed it up.
(XEN) Platform timer is 25.000MHz HPET
(XEN) Allocated console ring of 16 KiB.
(XEN) Brought up 2 CPUs
(XEN) *** LOADING DOMAIN 0 ***
(XEN)  Xen  kernel: 64-bit, lsb, compat32
(XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) PHYSICAL MEMORY ARRANGEMENT:
(XEN)  Dom0 alloc.:   0000000138000000->000000013c000000 (921455 pages to be allocated)
(XEN) VIRTUAL MEMORY ARRANGEMENT:
(XEN)  Loaded kernel: ffffffff81000000->ffffffff816ba000
(XEN)  Init. ramdisk: ffffffff816ba000->ffffffff8323b600
(XEN)  Phys-Mach map: ffffffff8323c000->ffffffff83963b78
(XEN)  Start info:    ffffffff83964000->ffffffff839644b4
(XEN)  Page tables:   ffffffff83965000->ffffffff83986000
(XEN)  Boot stack:    ffffffff83986000->ffffffff83987000
(XEN)  TOTAL:         ffffffff80000000->ffffffff83c00000
(XEN)  ENTRY ADDRESS: ffffffff81509200
(XEN) Dom0 has maximum 2 VCPUs
(XEN) Scrubbing Free RAM: .done.
(XEN) Xen trace buffers: disabled
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) Xen is relinquishing VGA console.
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 176kB init memory.
(XEN) MCE: MSR 417 is not MCA MSR
(XEN) MCE: MSR 417 is not MCA MSR
root@server1:~#

3创建基于图像的虚拟机

我们将使用xen-tools来创建虚拟机。 xen-tools可以轻松创建虚拟机 - 请阅读本教程了解更多信息: http : //www.youcl.com/xen_tools_xen_shell_argo 。 我们已经在上一步中安装了xen-tools(第2章)。

现在我们编辑/etc/xen-tools/xen-tools.conf 。 该文件包含xen-create-image脚本使用的默认值,除非在命令行中指定其他值。 我改变了以下值,剩下的不变:

vi /etc/xen-tools/xen-tools.conf
[...]
dir = /home/xen
[...]
# lvm = vg0
[...]
dist   = `xt-guess-suite-and-mirror --suite` # Default distribution to install.
[...]
gateway    = 192.168.0.1
netmask    = 255.255.255.0
broadcast  = 192.168.0.255
[...]
passwd = 1
[...]
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
[...]
mirror = `xt-guess-suite-and-mirror --mirror`
[...]
serial_device = hvc0 #default
[...]
disk_device = xvda #default
[...]

目录行指定虚拟机映像的存储位置。 确保在同一时间, lvm被注释掉(这些设置是相互排斥的!)。

dist指定要在虚拟机中安装的分发(如果运行该命令)

xt-guess-suite-and-mirror --suite

在命令行中,您将看到它转换为压缩,因此在这种情况下,将安装Debian Squeeze,除非在命令行中指定其他任何内容)。

要了解可以在虚拟机中安装哪些发行版,请运行:

gunzip /usr/share/doc/xen-tools/README.gz
cat /usr/share/doc/xen-tools/README

passwd = 1行使您可以在创建新的来宾域时指定root密码。

内核initrd行指定在虚拟机中安装的内核和ramdisk。 如果要安装Debian Squeeze,请使用上述设置(否则Debian Squeeze guest可能无法启动)。 例如,如果您要安装Ubuntu Maverick,您可以使用相同的设置,或者您可以注释掉这两行,在这种情况下,将使用默认的Ubuntu内核(是的,Xen 4.0允许您使用非Xen内核客人!)。

确保指定网关网络掩码广播地址。 如果没有,并且在使用xen-create-image时,不要在命令行中指定网关和网络掩码,即使指定了IP地址,您的访客域也不会有网络!

镜像行指定要使用的镜像(该命令

xt-guess-suite-and-mirror --mirror

默认情况下转换为Debian镜像。 当然,您可以指定另一个镜像,例如:

mirror = http://ftp.de.debian.org/debian/

要么

mirror = http://archive.ubuntu.com/ubuntu (对于Ubuntu;在这种情况下,请确保您在dist行中指定了Ubuntu版本,例如dist = maverick

这是非常重要的,你添加行serial_device = hvc0 ,因为否则你的虚拟机可能无法正常启动!

disk_device = xvda将虚拟化磁盘命名为xvda1xvda2等。这是Debian Squeeze guest的正确设置; 尤其是在使用非Xen内核时,Ubuntu的guest虚拟机可能无法使用此设置进行引导,但可以使用传递到xen-create-image命令的--scsi开关来覆盖它,在这种情况下,虚拟化磁盘将命名为sda1sda2

总而言之,上述设置对于Debian Squeeze客人来说是完美的; 如果要安装Ubuntu Maverick,您将不得不覆盖/etc/xen-tools/xen-tools.conf中的某些设置( --dist ,-- mirror ,-- scsi开关;也可以注释掉内核initrd ) - 我会来一会儿。

在我们继续之前,我们必须创建虚拟机映像应存储的目录:

mkdir /home/xen

现在我们来创建我们的第一个访客域xen1.example.com ,IP地址为192.168.0.101

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev

您在命令行中指定的选项将覆盖/etc/xen-tools/xen-tools.conf中的设置。 在命令行中未指定的选项取自/etc/xen-tools/xen-tools.conf请确保您添加了--role = udev,否则您的虚拟机可能无法正常启动!

(要了解有关可用选项的更多信息,请查看xen-create-image手册页:

man xen-create-image

xen-create-image命令现在将为我们创建xen1.example.com虚拟机。 这可能需要几分钟的时间。 输出应与此类似:

root@server1:~# xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev

General Information
--------------------
Hostname       :  xen1.example.com
Distribution   :  squeeze
Mirror         :  http://ftp.de.debian.org/debian/
Partitions     :  swap            256Mb (swap)
                  /               4Gb   (ext3)
Image type     :  sparse
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path    :  /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
----------------------
IP Address 1   : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
Netmask        : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1


Creating partition image: /home/xen/domains/xen1.example.com/swap.img
Done

Creating swap on /home/xen/domains/xen1.example.com/swap.img
Done

Creating partition image: /home/xen/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/xen1.example.com/disk.img
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
        File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done


Logfile produced at:
         /var/log/xen-tools/xen1.example.com.log

Installation Summary
---------------------
Hostname        :  xen1.example.com
Distribution    :  squeeze
IP-Address(es)  :  192.168.0.101
RSA Fingerprint :  81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
Root Password   :  N/A

root@server1:~#

对于Ubuntu Maverick guest,您应该使用此命令:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu

(要在访客中使用默认的Ubuntu内核而不是Debian的Xen内核,还可以在/etc/xen-tools/xen-tools.conf注释掉 内核initrd行。)

现在应该有一个xen1.example.com配置文件 - /etc/xen/xen1.example.com.cfg 。 看看它,以熟悉虚拟机配置文件:

cat /etc/xen/xen1.example.com.cfg
#
# Configuration file for the Xen instance xen1.example.com, created
# by xen-tools 4.2 on Fri Mar 25 15:56:51 2011.
#

#
#  Kernel + memory size
#
kernel      = '/boot/vmlinuz-2.6.32-5-xen-amd64'
ramdisk     = '/boot/initrd.img-2.6.32-5-xen-amd64'

vcpus       = '1'
memory      = '256'

#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                  'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w',
                  'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w',
              ]


#
#  Physical volumes
#


#
#  Hostname
#
name        = 'xen1.example.com'

#
#  Networking
#
vif         = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

(请注意:如果您有双核或四核CPU,并希望虚拟机使用所有CPU内核,请将vcpus行更改为vcpus ='2'vcpus ='4' )。

要启动虚拟机,请运行

xm create /etc/xen/xen1.example.com.cfg
root@server1:~# xm create /etc/xen/xen1.example.com.cfg
Using config file "/etc/xen/xen1.example.com.cfg".
Started domain xen1.example.com (id=1)
root@server1:~#

xm console xen1.example.com

如果您在控制台上登录该虚拟机(键入CTRL +] ,或者如果您使用PuTTY返回到dom0 ,则为CTRL + 5 ),或使用SSH客户端连接到它( 192.168.0.101 )。

要获取正在运行的虚拟机的列表,请键入

xm list

输出应如下所示:

root@server1:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  2811     2     r-----    137.2
xen1.example.com                             1   256     1     -b----      1.7
root@server1:~#

要关闭xen1.example.com ,请执行以下操作:

xm shutdown xen1.example.com

如果您希望xen1.example.com在下次启动系统时自动启动,那么请执行以下操作:

mkdir /etc/xen/auto
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

以下是最重要的Xen命令:

xm create -c / path / to / config - 启动虚拟机。
xm shutdown <name> - 停止虚拟机。
xm destroy <name> - 立即停止虚拟机而不关闭虚拟机。 就像关掉电源按钮一样。
xm list - 列出所有运行的系统。
xm console <name> - 登录虚拟机。
xm help - 所有命令的列表。

使用xen-create-image命令创建的所有虚拟机的列表都可用

xen-list-images
root@server1:~# xen-list-images
Name: xen1.example.com
Memory: 256
IP: 192.168.0.101
root@server1:~#

要了解有关xen-tools可以做什么的更多信息,请查看本教程: http : //www.youcl.com/xen_tools_xen_shell_argo

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏