如何把 File-based 的 Xen 虚拟机转化成 LVM-based 的

今天 SUN(还是习惯叫 SUN)做了一个 workshop,他们做了一个 ppt,宣传了一下他们的产品,提到了 SUN VDI, VMware VDI 应用到 SunRay 上的一些东西。VPSee 关心的不是他们的 ppt,是上个月从他们那里 “骗” 来的设备到了没有。今天收获不错,收到 4台 SUN Fire V20z,1台 SUN Fire X2200 M2,10几个 SunRay 客户机。SUN Fire V20z 是很老的机型,现在已经停产,不过硬件配置还是蛮强劲的,2颗双核 AMD Opteron 2.2 GHz,8GB RAM,2个 73 GB Ultra320 SCSI 硬盘。现在还没有想好服务器做什么用,先玩玩再说~~

sun fire v20z

说正题⋯⋯

Xen 支持多种存储方式,大致可分三类:最普通最直接的文件存储(file storage),本地物理硬盘或者 LVM 存储(physical devices/LVM storage),更高级一点的 NFS、NAS、GNBD、SAN、AoE、iSCSI 网咯存储(network storage)等。这三类存储介质和方法都被我们用到了生产环境,各有各的优点,VPSee 偏向混合使用,有助于我们了解不同技术的特性。

先扫描一下系统,看看系统上的 LVM 是怎么分配的:

# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "vpseexen" using metadata type lvm2

# lvscan 
  ACTIVE            '/dev/vpseexen/root' [6.52 GB] inherit
  ACTIVE            '/dev/vpseexen/swap_1' [9.25 GB] inherit
  ACTIVE            '/dev/vpseexen/home' [116.88 GB] inherit

假设我们要转化的虚拟机镜像是 xen01.img(对应的交换分区文件是 xen01.swap)。首先我们需要在卷组上创建一个逻辑卷用来复制虚拟机镜像(xen01.img),逻辑卷大小和 xen01.img 一样,还需要一个逻辑卷用来复制 swap 文件(xen01.swap):

# lvcreate -L10G -n xen01_root vpseexen
# lvcreate -L512M -n xen01_swap vpseexen

创建成功后就会出现2个新的逻辑卷:

# lvscan 
  ACTIVE            '/dev/vpseexen/root' [6.52 GB] inherit
  ACTIVE            '/dev/vpseexen/swap_1' [9.25 GB] inherit
  ACTIVE            '/dev/vpseexen/home' [116.88 GB] inherit
  ACTIVE            '/dev/vpseexen/xen01_root' [10.00 GB] inherit
  ACTIVE            '/dev/vpseexen/xen01_swap' [512 MB] inherit

接着把虚拟机的镜像内容 dd 到逻辑卷上:

# dd if=/home/vpsee/xen/xen01.img of=/dev/vpseexen/xen01_root
# dd if=/home/vpsee/xen/xen01.swap of=/dev/vpseexen/xen01_swap

修改虚拟机的 Xen 配置文件,guest 和 host 使用相同的 Xen 内核启动:

# vi /etc/xen/xen01

kernel = "/boot/vmlinuz-2.6.26-2-xen-amd64"
ramdisk = "/boot/initrd.img-2.6.26-2-xen-amd64"
vcpus = 1
memory = 256
name = "xen01"
vif = [ '' ]
disk = [
'phy:/dev/vpseexen/xen01_root,sda1,w',
'phy:/dev/vpseexen/xen01_swap,sda2,w' ]
root = "/dev/sda1"
extra = "fastboot"

最后启动拷贝成功的基于 LVM 的虚拟机就可以了:

# xm create xen01

评论 (10 Comments)

  1. 骗来的? 以什么接口呢?

  2. 应该叫做 “忽悠”:)

  3. 好奇問問,博主你是幹哪行的啊。剛看了一遍你的部落格。強人一名。

  4. 敢问vpsee,xen01.swap 是个什么?一般虚拟机镜像文件都只有xen01.img这一个文件吧。

  5. @古月
    xen01.swap 文件可用作虚拟机的交换分区。

  6. 有一个问题想请教一下,我可不可以使用dom0上的物理分区(基于LVM,如/opt/dom1;/opt/dom2),而不建立.img文件

  7. @Anonymous
    当然可以。

  8. @vpsee
    有一个问题要请教,怎么快速clone一个lvm-backed的domU?

    我可以成功的用dd if=/dev/domU/centos5.6 of=/dev/domU/clone_centos5.6,
    但是速度仅17mb/s,目前的硬件已经算快的了,SAS 15K,还有什么办法可以提高dd的速度吗?
    有没有可能先mount这两个lv,然后用rsysnc进行复制?

  9. @ioiioi
    rsync 会更慢一些。

  10. 咨询下 是否有kvm有转化方案?

发表评论