使用Xen与基于LVM的虚拟机而不是基于映像的虚拟机(Debian Etch)
版本1.0
作者:Falko Timme
本指南介绍如何在运行在Debian Etch上的Xen主机上,而不是使用磁盘映像的虚拟机上设置基于LVM的虚拟机。 使用磁盘映像的虚拟机在磁盘IO上非常慢,重。
我不会保证这将为您工作!
1初步说明
在本示例中,我使用的Debian Etch主机与LVM卷组/ dev / vg0
拥有大约50GB的空间。 / dev / vg0
包含两个消耗大约7GB空间的逻辑卷/ dev / vg0 / root
和/ dev / vg0 / swap_1
,其余的不分配,可用于为虚拟机创建逻辑卷:
vgdisplay
server1:~# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 49.76 GB
PE Size 4.00 MB
Total PE 12738
Alloc PE / Size 1792 / 7.00 GB
Free PE / Size 10946 / 42.76 GB
VG UUID JbjZw7-aOGY-3iA4-iW0M-KAhu-86fz-Ap3wLw
server1:~#
lvdisplay
server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/root
VG Name vg0
LV UUID HH15eU-MoDJ-NfPg-HMZ6-Fczf-uPQO-I0NDzp
LV Write Access read/write
LV Status available
# open 1
LV Size 5.00 GB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
--- Logical volume ---
LV Name /dev/vg0/swap_1
VG Name vg0
LV UUID GV0SC0-oZLA-rQZS-pe3k-fi2N-YU9q-A73rm3
LV Write Access read/write
LV Status available
# open 2
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1
server1:~#
我假设你已经设置了Xen,如以下两个指南所述:
2创建基于LVM的虚拟机( domU
)
我们将使用xen-tools来创建虚拟机。 xen-tools可以轻松创建虚拟机 - 请阅读本教程了解更多信息: http : //www.youcl.com/xen_tools_xen_shell_argo 。 xen-tools可以作为Debian Etch软件包使用,所以我们现在安装一个:
apt-get install xen-tools
接下来我们编辑/etc/xen-tools/xen-tools.conf
。 该文件包含xen-create-image
脚本使用的默认值,除非在命令行中指定其他值。 我改变了以下值,剩下的不变:
vi /etc/xen-tools/xen-tools.conf
[...] lvm = vg0 [...] dist = etch # Default distribution to install. [...] gateway = 192.168.0.1 netmask = 255.255.255.0 [...] passwd = 1 [...] kernel = /boot/vmlinuz-2.6.18-6-xen-vserver-686 initrd = /boot/initrd.img-2.6.18-6-xen-vserver-686 [...] mirror = http://ftp2.de.debian.org/debian/ [...] |
确保取消注释lvm
行并填写卷组的名称(在我的情况下为vg0
)。 同时确保目录
行被注释掉!
passwd = 1行使
您可以在创建新的来宾域时指定root密码。
在内核
和initrd
行中,必须指定要用于访客域的domU
内核和initrd。 通常这是/ boot / vmlinuz-
+ uname -r
和/boot/initrd.img-
的输出 - uname -r
的输出,所以如果
uname -r
显示2.6.18-6-xen-vserver-686
,然后转换为/boot/vmlinuz-2.6.18-6-xen-vserver-686
和/boot/initrd.img-2.6.18-6-xen-vserver -686
。 您可以通过运行了解哪些内核和initrd可用
ls -l /boot/
在镜像
行中指定一个靠近你的Debian镜像。
确保指定网关和网络掩码。 如果没有,并且在使用xen-create-image
时,不要在命令行中指定网关和网络掩码,即使指定了IP地址,您的访客域也不会有网络!
现在我们来创建我们的第一个访客域xen1.example.com
,IP地址为192.168.0.101
:
xen-create-image --hostname=xen1.example.com --size=10Gb --swap=512Mb --ip=192.168.0.101 --force --memory=256Mb --arch=i386 --debootstrap
您在命令行中指定的选项将覆盖/etc/xen-tools/xen-tools.conf
中的设置。 在命令行中未指定的选项取自/etc/xen-tools/xen-tools.conf
。
(要了解有关可用选项的更多信息,请查看xen-create-image
手册页:
man xen-create-image
)
xen-create-image
命令现在将为我们创建xen1.example.com
虚拟机。 这可能需要几分钟的时间。 输出应与此类似:
server1:~# xen-create-image --hostname=xen1.example.com --size=10Gb --swap=512Mb --ip=192.168.0.101 --force --memory=256Mb --arch=i386 --debootstrap
General Infomation
--------------------
Hostname : xen1.example.com
Distribution : etch
Fileystem Type : ext3
Size Information
----------------
Image size : 10Gb
Swap size : 512Mb
Image type : full
Memory size : 256Mb
Kernel path : /boot/vmlinuz-2.6.18-6-xen-vserver-686
Initrd path : /boot/initrd.img-2.6.18-6-xen-vserver-686
Networking Information
----------------------
IP Address 1 : 192.168.0.101
Netmask : 255.255.255.0
Gateway : 192.168.0.1
Creating ext3 filesystem on /dev/vg0/xen1.example.com-disk
Done
Installing your system with debootstrap mirror http://ftp2.de.debian.org/debian/
Done
Running hooks
Done
No role script specified. Skipping
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
server1:~#
从输出中可以看出,xen-create-image已经为VM的根文件系统的vg0
卷组/dev/vg0/xen1.example.com-disk
中的VM创建了一个新的逻辑卷。 看一眼
lvdisplay
您将看到它还为VM的交换创建了第二个逻辑卷/dev/vg0/xen1.example.com-swap
:
server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/root
VG Name vg0
LV UUID HH15eU-MoDJ-NfPg-HMZ6-Fczf-uPQO-I0NDzp
LV Write Access read/write
LV Status available
# open 1
LV Size 5.00 GB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:0
--- Logical volume ---
LV Name /dev/vg0/swap_1
VG Name vg0
LV UUID GV0SC0-oZLA-rQZS-pe3k-fi2N-YU9q-A73rm3
LV Write Access read/write
LV Status available
# open 1
LV Size 2.00 GB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:1
--- Logical volume ---
LV Name /dev/vg0/xen1.example.com-disk
VG Name vg0
LV UUID yya7Uj-klRJ-hN9z-nKVk-YgIV-vI1j-KXT53a
LV Write Access read/write
LV Status available
# open 0
LV Size 10.00 GB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:2
--- Logical volume ---
LV Name /dev/vg0/xen1.example.com-swap
VG Name vg0
LV UUID pJcl71-YFPf-t0mr-hSIN-4s8J-xkWD-BEvtNv
LV Write Access read/write
LV Status available
# open 0
LV Size 512.00 MB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 254:3
server1:~#
现在应该有一个xen1.example.com
配置文件 - /etc/xen/xen1.example.com.cfg
。 磁盘
行包含物理设备(由xen-create-image创建的两个逻辑卷)而不是磁盘映像:
cat /etc/xen/xen1.example.com.cfg
# # Configuration file for the Xen instance xen1.example.com, created on # Sat Dec 13 02:01:35 2008. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.18-6-xen-vserver-686' ramdisk = '/boot/initrd.img-2.6.18-6-xen-vserver-686' memory = '256' # # Disk device(s). # root = '/dev/sda1 ro' disk = [ 'phy:vg0/xen1.example.com-disk,sda1,w', 'phy:vg0/xen1.example.com-swap,sda2,w' ] # # Hostname # name = 'xen1.example.com' # # Networking # vif = [ 'ip=192.168.0.101' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' |
(如果我们使用磁盘映像而不是逻辑卷,磁盘行将看起来与此类似:
disk = [ 'file:/path/to/xen1.example.com/disk.img,hda1,w', 'file:/path/to/xen1.example.com/swap.img,hda2,w' ]
)
要启动虚拟机,请运行
xm create /etc/xen/xen1.example.com.cfg
跑
xm console xen1.example.com
如果您在控制台上登录该虚拟机(键入CTRL +]
,或者如果您使用PuTTY返回到dom0
,则为CTRL + 5
),或使用SSH客户端连接到它( 192.168.0.101
)。
要获取正在运行的虚拟机的列表,请键入
xm list
输出应如下所示:
server1:~# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 747 1 r----- 1402.9
xen1.example.com 1 256 1 -b---- 55.8
server1:~#
要关闭xen1.example.com
,请执行以下操作:
xm shutdown xen1.example.com
如果您希望xen1.example.com
在下次启动系统时自动启动,那么请执行以下操作:
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
server1:~# xen-list-images
Name: xen1.example.com
Memory: 256
IP: 192.168.0.101
server1:~#
要了解有关xen-tools可以做什么的更多信息,请查看本教程: http : //www.youcl.com/xen_tools_xen_shell_argo
3链接
- Xen: http : //www.xensource.com/xen/
- xen-tools: http : //xen-tools.org/software/xen-tools
- Debian: http : //www.debian.org/