Xen:如何将基于图像的访客转换为基于LVM的访客
版本1.0
作者:Falko Timme
这篇简短的文章解释了如何将使用磁盘映像的Xen guest虚拟机转换/转换为LVM卷。 使用磁盘映像的虚拟机在磁盘IO上非常慢,重,所以使用LVM通常更好。 而且,基于LVM的guest虚拟机更易于备份(使用LVM快照 )。
我不会保证这将为您工作!
1初步说明
要使用基于LVM的guest虚拟机,您需要一个卷组,它具有一些未分配给任何逻辑卷的可用空间。 在这个例子中,我使用大小约为的卷组/ dev / vg0
。 465GB ...
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 465.28 GB
PE Size 4.00 MB
Total PE 119112
Alloc PE / Size 59842 / 233.76 GB
Free PE / Size 59270 / 231.52 GB
VG UUID gnUCYV-mYXj-qxpM-PEat-tdXS-wumf-6FK3rA
server1:~#
...包含大小约为的逻辑卷/ dev / vg0 / root
。 232GB和逻辑卷/ dev / vg0 / swap_1
(约1GB) - 其余的未分配,可用于Xen guest:
lvdisplay
server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/root
VG Name vg0
LV UUID kMYrHg-d0ox-yc6y-1eNR-lB2R-yMIn-WFgzSZ
LV Write Access read/write
LV Status available
# open 1
LV Size 232.83 GB
Current LE 59604
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Name /dev/vg0/swap_1
VG Name vg0
LV UUID SUI0uq-iTsy-7EnZ-INNz-gjvu-tqLD-rGSegE
LV Write Access read/write
LV Status available
# open 2
LV Size 952.00 MB
Current LE 238
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
server1:~#
我使用以下命令创建的基于映像的Xen guest虚拟机xen1.example.com:
xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=128Mb --arch=amd64 --role=udev
这是它的Xen配置文件:
vi /etc/xen/xen1.example.com.cfg
# # Configuration file for the Xen instance xen1.example.com, created # by xen-tools 3.9 on Mon Mar 9 19:22:40 2009. # # # Kernel + memory size # kernel = '/boot/vmlinuz-2.6.26-1-xen-amd64' ramdisk = '/boot/initrd.img-2.6.26-1-xen-amd64' memory = '128' # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', ] # # Hostname # name = 'xen1.example.com' # # Networking # vif = [ 'ip=192.168.0.101,mac=00:16:3E:F2:DC:FA' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' |
如您所见,guest虚拟机正在使用两个磁盘映像: /home/xen/domains/xen1.example.com/disk.img
(4GB)和/home/xen/domains/xen1.example.com/swap.img(256MB
)。
我们需要精确的图像大小,以便我们可以创建相同大小的逻辑卷。 如果您不记得确切的磁盘和交换大小,可以转到存储图像的目录...
cd /home/xen/domains/xen1.example.com
...并运行以下命令 - 它将以人类可读的格式显示图像大小:
ls -lh
2将图像转换为LVM
在我们转换图像之前,我们必须关闭客人:
xm shutdown xen1.example.com
然后,我们创建与磁盘映像大小相同的逻辑卷,例如:
lvcreate -L4G -n xen1_root vg0
lvcreate -L256M -n xen1_swap vg0
这将创建逻辑卷/ dev / vg0 / xen1_root
(4GB)和/ dev / vg0 / xen1_swap
(256MB):
lvdisplay
server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/root
VG Name vg0
LV UUID kMYrHg-d0ox-yc6y-1eNR-lB2R-yMIn-WFgzSZ
LV Write Access read/write
LV Status available
# open 1
LV Size 232.83 GB
Current LE 59604
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Name /dev/vg0/swap_1
VG Name vg0
LV UUID SUI0uq-iTsy-7EnZ-INNz-gjvu-tqLD-rGSegE
LV Write Access read/write
LV Status available
# open 1
LV Size 952.00 MB
Current LE 238
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
--- Logical volume ---
LV Name /dev/vg0/xen1_root
VG Name vg0
LV UUID MQzhrS-OpOt-2IbY-BozD-l5vN-3doB-GRtyMc
LV Write Access read/write
LV Status available
# open 0
LV Size 4.00 GB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2
--- Logical volume ---
LV Name /dev/vg0/xen1_swap
VG Name vg0
LV UUID GHwsIT-a0sj-M72J-OVof-Ydju-Sexf-Ex824b
LV Write Access read/write
LV Status available
# open 0
LV Size 256.00 MB
Current LE 64
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:3
server1:~#
现在我们可以转换图像如下:
dd if=/home/xen/domains/xen1.example.com/disk.img of=/dev/vg0/xen1_root
dd if=/home/xen/domains/xen1.example.com/swap.img of=/dev/vg0/xen1_swap
(这可能需要很多时间,这取决于图像的大小。)
之后,我们必须打开/etc/xen/xen1.example.com.cfg
...
vi /etc/xen/xen1.example.com.cfg
...并改变...
[...] disk = [ 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', ] [...] |
... 至 ...
[...] disk = [ 'phy:/dev/vg0/xen1_swap,xvda1,w', 'phy:/dev/vg0/xen1_root,xvda2,w', ] [...] |
你现在可以再次启动客人了
xm create /etc/xen/xen1.example.com.cfg
如果一切顺利,您可以删除磁盘映像:
rm -f /home/xen/domains/xen1.example.com/disk.img
rm -f /home/xen/domains/xen1.example.com/swap.img
3链接
- Xen: http : //www.xen.org/