如何快速创建 Xen 虚拟机镜像

在 Linux 上安装完 Xen 服务器后接下来的工作就是如何创建和启动一个虚拟机。这个看似很简单的问题难住了不少人,VPSee 收到不少邮件关于如何快速创建和部署虚拟机镜像的。创建虚拟机的工具有很多,比如 virt-manager, virt-install, virsh, xen-create-image 等等,不过这些工具都要每次重头安装虚拟机的操作系统,需要人机交互、速度慢、不自动,不利于写成脚本。有什么快速的创建/部署/克隆虚拟机的办法呢?可以先做一个模版,然后通过拷贝模版的办法。我们只需要两个步骤:1、创建一个空白文件镜像;2、然后把一个打包好的 Linux 系统模版拷贝过去。通常一个打包好的最小 Linux 系统只要200MB 左右,在高配置的服务器上拷贝基本能瞬间完成,比起拷贝整个虚拟机镜像文件(比如 10GB)要快得多。具体步骤:

1、创建一个磁盘镜像文件:

# dd if=/dev/zero of=test.img bs=1 count=1 seek=10G

2、格式化磁盘:

# mkfs.ext3 test.img

3、挂载刚刚创建的磁盘镜像文件:

# mount -o loop test.img /mnt

4、找个现有 Linux 的文件系统拷贝过去:

# tar -zxSf centos.tar.gz -C /mnt/

需要说明的是,这里的 centos.tar.gz 是提前制作好的,可以在一个干净的虚拟机上手动安装好一个最小的 CentOS 系统,然后配置和优化好,这样就是一个模板,以后如果创建新的 CentOS 虚拟机就可以从这个模板直接拷贝。

5、卸载 /mnt:

# umount mnt

6、创建一个交换分区:

# dd if=/dev/zero of=test-swap.img bs=1M count=256

7、创建和编辑一个 Xen 虚拟机的启动文件:

# vi /etc/xen/test.conf
name            = 'test'
vcpus           = 1
memory          = '256'
disk            = [ 'tap:aio:/home/vpsee/test.img,sda1,w',
'tap:aio:/home/vpsee/test-swap.img,sda2,w',
]
vif             = [ 'bridge=eth0' ]
root            = '/dev/sda1 ro'
on_reboot       = 'restart'
on_crash        = 'restart'
kernel          = "/boot/vmlinuz-2.6.18-194.32.1.el5xen"
ramdisk         = "/boot/initrd-2.6.18-194.32.1.el5xen.img"

8、启动 Xen 虚拟机:

# xm create test

如果把上面的步骤综合起来写在一个脚本里并配上 Xen Shell 控制面板就可以完成 VPS 客户自己快速重装系统的功能。如果把这个脚本加到客户的账单管理系统里(比如 WHMCS)就可以完成客户付款自动开通 VPS 的功能。不过我们的 VPS 不提供客户自助重装功能和自动开通功能,损失了一点方便性,但是换来了稳定和性能还是值得的。如果用 LVM, iSCSI 之类的存储方式的话原理也是一样的。

评论 (75 Comments)

  1. 非常不错,正在找这方面的资料,刚好看到了

  2. windows能类似操作吗?xen的windows驱动好像不是开源的?

  3. 受教了!! 的确很方便!!

  4. centos.tar.gz是用什么命令生成的?
    tar czSf centos.tar.gz / 这样吗?

  5. 我也想知道怎么制作centos.tar.gz。
    假设我现在使用linode的centos,我怎么把他的系统打包啊?

  6. @weijh @陈沙克
    tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media /

  7. 请问vpsee.conf配置文件中怎么指定IP地址,只看到设定网络的命令: vif = [ ‘bridge=eth0’ ]
    还有在xen控制台修改root密码的问题, 有没有简单的指令在忘记虚拟机密码的时候重新修改密码。
    谢谢!

  8. @fxz
    可在虚拟机里面设置 ip。可以挂载文件系统后,chroot 到文件系统,然后用 passwd 修改密码。

  9. 我测试了一下,在启动机器时会提示说Boot from Hard Disk failed: not a bootable disk.

    不知道是否是xen-3.0.3-94.el5的问题?

  10. 请问如何制作一个Debian的最小化模板呢?

  11. @eugene
    可以最小化安装一个 debian 系统,然后把文件系统 tar 出来(tar -cvpzf debian.tar.gz –exclude=/debian.tar.gz –exclude=/proc –exclude=/lost+found –exclude=/sys –exclude=/mnt –exclude=/media –exclude=/dev / ),debian.tar.gz 就可以作为模板以后用。

  12. 可否直接转换openvz的OStemplate,Openvz的模板很好下载到。

  13. @槛外小筑
    openvz 是容器,不是真正的虚拟技术,所以模板很依赖 host 的环境,里面的文件直接拷贝出来应该不能用(没有试过)。但是 kvm, vmware 和 xen 这三种虚拟机镜像/模板可以直接转换。

  14. 制作debian模版可以在虚拟机上面制作吗?

  15. 我在虚拟机上面(已安装xen)制作debian模版时,打包到/proc/kcore时停止了,就不动了

  16. @Percy
    打包的时候应该把 /proc 目录过滤掉,/proc 是系统运行时目录,不存在文件系统里:
    tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media –exclude=/proc/ /

  17. @Percy
    打包的时候应该把 /proc 目录过滤掉,/proc 是系统运行时目录,不存在文件系统里:
    tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media -exclude=/proc/ /

    执行以上操作时 出现如下提示
    tar: invalid option — ‘e’
    Try `tar –help’ or `tar –usage’ for more information.

    然后我改了一下tar cvpzf centos.tar.gz –-exclude=/centos.tar.gz –-exclude=/lost+found –-exclude=/media –exclude=/proc/ /
    打包到/proc/kcore时还是停止了

  18. 请问xen创建的虚拟机模板,在vmware下可以用吗?

  19. 但是 kvm, vmware 和 xen 这三种虚拟机镜像/模板可以直接转换,如何转换

  20. /bin/ksh93
    tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media – exclude=/proc /
    /bin/rview
    /bin/gzip
    /bin/date
    /bin/basename
    /bin/rpm
    /bin/dbus-monitor
    /bin/arch
    /bin/gettext
    tar: 由于前面延迟的错误而退出

  21. @Percy @siqilei@hotmail.com
    –exclude 前面是两个英文字符的 –,也就是说应该是 –exclude=/proc,不是 –exclude=/proc(少了一个 -,而且这个 – 应该是英文的 -,不能打成中文的 -)。

  22. @siqilei@hotmail.com
    xen 创建的模板不能直接在 vmware 下用,需要手动转换。xen, kvm, vmware 三者要转换的话可以手动转换,也可以借助一些工具。比如把 vmware 转化成 xen:
    # vmware-vdiskmanager -r vmware_ubuntu.vmdk -t 0 temporary_ubuntu.vmdk
    # qemu-img convert -f vmdk temporary_ubuntu.vmdk -O raw xen_ubuntu.img

  23. 我都是用virt-clone命令来复制。速度也不错,什么还都不用改

  24. 如何把xen的模板转换为vmware,用啥工具转换。大家能否共享一个vnware模板给我。谢谢打大家。可以给我发邮件。多谢了。

  25. 您好:
    我想问一下ubuntu11.04怎样打包成一个模板,谢谢!要求这个模板包括我已经安装的环境!

  26. 您好:我有2个问题,想请假下

    1)
    kernel = “/boot/vmlinuz-2.6.18-194.32.1.el5xen”
    ramdisk = “/boot/initrd-2.6.18-194.32.1.el5xen.img”

    这2个文件,是哪里来的?

    2)
    tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media –exclude=/proc/ /

    如果,我想装其他版本的linux,是否也可以按照上面的方法打包??

    谢谢你,xen搞的我头都大了,期待你的回复

  27. @贪恋爱的舍长
    1)这2个文件在安装 xen 的 linux 上可以找到,一般在 /boot 目录;
    2)可以用这种方法安装其他版本的 linux.

  28. 您好,请问对打包模板的系统有什么要求,半虚拟化安装的redhat5可以吗?
    另外,我按你上面的步骤做的,虚拟机的配置文件如下:
    name=”redhat5″
    memory=512
    maxmem=512
    vcpus=1
    on_poweroff=”destroy”
    on_reboot=”restart”
    on_crash=”destroy”
    disk=[ ‘tap:aio:/root/lishch/redhat5.img,sda1,w’, ‘tap:aio:/root/lishch/redhat5-swap.img,sda2,w’, ]
    vif=[ ‘mac=00:16:3e:6e:15:24,bridge=br0’, ]
    root=”/dev/sda1 ro”
    kernel = “/boot/vmlinuz-2.6.18-238.el5xen”
    ramdisk = “/boot/initrd-2.6.18-238.el5xen.img”

    sles11# xm create redhat5
    Using config file “./redhat5”.
    Error: Cannot find kernel “/boot/vmlinuz-2.6.18-238.el5xen”
    这是为什么呢?kernel和ramdisk写的都没什么问题啊~

  29. @waret
    半虚拟化安装的 redhat 5 可以这样打包。
    你确定你的 xen 服务器上有 /boot/vmlinuz-2.6.18-238.el5xen 这个文件吗?这个文件是在 Xen 服务器上,不是在 VM 上。

  30. 非常感谢,之前没用过这种方式创建虚拟机,不知道需要的是Xen服务器上的启动文件。
    现在已经启动虚拟机了,谢谢!

  31. 打包时出现的问题:
    [root@gd128 boot]# tar cvpzf centos.tar.gz -exclude=/centos.tar.gz -exclude=/lost+found -exclude=/media -exclude=/proc/ /
    tar: invalid option — e

  32. 希望能够帮助解决···

  33. @vpsee
    我打算用lvm作为存储,如何在centos5.6 dom0中安装一个centos5.6domU?
    我已经创建好lv
    lvcreate -L 10G -n stdCentOS5.6 VolGroup00
    domU的配置文件如下:
    name=”stdCentOS5.6″
    memory=512
    vcpus=1
    on_poweroff=”destroy”
    on_reboot=”restart”
    on_crash=”destroy”
    disk=[ ‘phy:VolGroup00/stdCentOS5.6,sda1,w ]
    vif=[ ‘mac=00:16:3e:6e:15:24,bridge=eth0’, ]
    root=”/dev/sda1 ro”
    kernel = “/boot/vmlinuz-2.6.18-238.el5xen”
    ramdisk = “/boot/initrd-2.6.18-238.el5xen.img”

    domU可以启动到安装步骤,但是在磁盘分配配置步骤,提示找不到硬盘。
    于是,我将sda1换成xvda,把root一行注释掉就可以了,是什么原因呢?
    xvda和sda有何不同?

  34. @vpsee
    我现在碰到一个克隆的灵活性要求问题,我需要为不同的同事安装各种各样的虚拟机,虽然domU的操作系统都是CentOS5.6 x86_64,但是有的需要40G硬盘,有的需要100G硬盘,而我已经为第一个同事安装了一个lvm-backed的domU了,lv为40G,那我如何在这个基础上克隆一个100G的domU给另一个同事呢?

  35. 问一个弱弱的问题,上述img创建完后,要如何使用?

    还是使用virt-clone?还是直接复制文件?

  36. @ioiioi
    新建一个 100G 的 LV,然后挂载 40G 的 LV 后拷贝过去。

  37. 请问vpsee,Windows的镜像能不能像这样快速创建呢?

  38. @jpfc
    可以直接 copy 或者 dd windows 镜像。

  39. @vpsee
    我创建了一个100G的LV,并挂载到/mnt/domu-temp下,接着将40G的东东全部copy过去,但是新domu启动时出现找不到/proc等错误信息。

  40. @vpsee
    如何在centos5.x dom0(xen3.4.3)中网络安装debian6?
    dom0用的kernel是2.6.18-238.19.1.el5xen
    而debian6的kernel是2.6.32
    假如不用pygrub,将debian中的xenified kernel拷贝到dom0中,能否启动debian6呢?

  41. @ioiioi
    只要 debian 6 里面的内核是支持 xen 的就可以启动,内核版本有差异无所谓。

  42. @all
    我发现在用tar制作模板的时候,如果–exclude=/proc –exclude=/sys后,加压缩后,需要手工mkdir /proc && mkdir /sys,否则domU无法正常启动。

    另外,如果domU处于停机状态,/proc和/sys是空的,所以没有必要–exclude他们。

  43. @vpsee
    create的时候没有出现问题,可是console的时候一直卡在Write protecting the kernel read-only data: 7120k这没有反应
    这附近的几条信息是
    [ 0.765548] XENBUS: Device with no driver: device/vbd/2049
    [ 0.765551] XENBUS: Device with no driver: device/vbd/2050
    [ 0.765554] XENBUS: Device with no driver: device/vif/0
    [ 0.765557] XENBUS: Device with no driver: device/console/0
    [ 0.765560] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
    [ 0.765564] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found
    [ 0.765567] EDD information not available.
    [ 0.765660] Freeing unused kernel memory: 352k freed
    [ 0.765819] Write protecting the kernel read-only data: 7120k
    这是什么问题阿。
    我仿照xen给的模板写的配置文件可以启动,但是只能从cd启动,还需要安装一次。

  44. @wulfnoth

    XENBUS: Device with no driver: device/vbd/2049
    XENBUS: Device with no driver: device/vbd/2050
    XENBUS: Device with no driver: device/vif/0
    XENBUS: Device with no driver: device/console/0

    domu 的内核(支持 xen)有问题,你的内核是怎么来的?自己编译的?找个成熟运行的 xen pv domu 内核替换你的这个内核试一下。

  45. create可以,但是console最后出现Kernel panic – not syncing: Attempted to kill init!,然后就退出console了?这是为什么

  46. @wangxy_cs
    多种原因可能导致这个问题。一般来说常遇到的问题是无法挂载 / 文件系统,也就无法启动到系统中。

  47. tap:aio,phy,file三种有什么区别?
    不加kernel,ramdisk参数也可以启动,有什么影响?

  48. tap:aio,phy,file有什么区别?没有kernel,ramdisk参数也可以启动有什么影响?

  49. 询问关于制作centos.tar.gz的问题,看了之前的回复,请问打包命令是在虚拟机中执行还是在host上执行啊?如果在虚拟机中执行,怎么将生成的文件导出到host机器上啊?

  50. @wyhao31
    在 host 上执行。
    可以在 host 上通过挂载虚拟机分区然后拷贝到 host.

  51. @vpsee
    恩,但是我尝试用mount -o loop test.img挂载出错了,应该如何挂载分区呢?

  52. @wyhao31
    取决于镜像是怎么分区的,挂载方法可能不同,你的镜像里有多个分区吗?有 LVM 吗?看看 挂载虚拟机镜像文件里的 LVM 逻辑分区 可能会有帮助。

  53. 你好,我想问一下,windows server 2003能不能打包啊?

  54. @vpsee
    我用mount -o loop /vm/vm01.img /mnt/
    提示的错误是:mount: you must specify the filesystem type
    请问这会是什么问题啊?

  55. @vpsee
    确实是LVM,看了你给的那个链接,现在问题已经解决,多谢了啊,^_^

  56. @vpsee
    进行到最后一步了,在xm create -c /etc/xen/centos.conf后,提示以下错误:
    Gave up waiting for root device.

    这会是什么原因呢?

  57. @vpsee
    能否补充虚拟机在img文件中是lvm形式存储情况下应该如何快速迁移安装呢?

  58. @wyhao31
    虚拟机的 root / 区由于某种原因没有正常挂载,原因很多,检查 grub.conf, fstab 等,检查 kernel 是否支持 / 的文件系统格式。

  59. vpsee,你好,我用 tar cvpzf centos.tar.gz –exclude=/centos.tar.gz –exclude=/lost+found –exclude=/media –exclude=/proc/ /
    出现 ERROR:exit deplayed previous errors
    是怎么回事啊?

  60. 看了留言发现博主超强耐心!赞一个!

  61. vpsee,你好!
    我在第8步启动虚拟机的时候出现这个问题:
    [root@xen242 xen]# xm create vir-1 -c
    Using config file “./vir-1”.
    Error: Device creation failed for domain vir-1
    当我按照33楼说的把sda1改成xvda并把root那行注释调后又出现了这个问题!
    [root@xen242 xen]# xm create vir-1 -c
    Using config file “./vir-1”.
    Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
    你能帮我解决一下吗?
    谢谢!!

  62. to vpsee:

    您好! 我的操作流程

    vm基础安装 (ext3切出 / /boot swap 三个区塊) –> 关闭vm –>
    将vm挂载到Dom0目录 /mnt/temp –> cd /mnt/temp –> tar同上面说明 –> umount …

    直到 ‘xm create -c test’ 得到以下信息:

    (前半段正常)

    Waiting for driver initialization.
    Scanning and configuring dmraid supported devices
    Scanning logical volumes
    Reading all physical volumes. This may take a while…
    No volume groups found
    Activating logical volumes
    Volume group “VolGroup00” not found
    Creating root device.
    Mounting root filesystem.
    mount: could not find filesystem ‘/dev/root’
    Setting up other filesystems.
    Setting up new root fs
    setuproot: moving /dev failed: No such file or directory
    no fstab.sys, mounting internal defaults
    setuproot: error mounting /proc: No such file or directory
    setuproot: error mounting /sys: No such file or directory
    Switching to new root and running init.
    unmounting old /dev
    unmounting old /proc
    unmounting old /sys

    请问vpsee这该怎么解决好呢? 谢谢!

  63. 我是前一个问题的提问者 #62

    问题已经排除 这篇教程帮助很大 谢谢!!

    ps. 我用系统是 CentOS 5.8 64-bit 没有问题!

  64. 我用virt-install创建了一个debian的domU在/etc/xen/images/vm01.img,
    在dom0挂载
    mount -o loop,offset=32256 /etc/xen/images/vm01.img /mnt/vm01/root/
    mount -o bind /proc /mnt/vm01/root/proc
    mount -o bind /sys /mnt/vm01/root//sys
    用这条命令创建debian.tar.gz
    chroot /mnt/vm01/root
    tar cvpzf debian.tar.gz –exclude=/root/debian.tar.gz –exclude=/lost+found –exclude=/mnt –exclude=/media –exclude=/proc/* –exclude=/sys/* –exclude=/dev /

    在用上面介绍的方法创建另外的testvm01.img
    启动文件如下
    name = “vm01”
    memory = “512”
    disk = [ ‘tap2:aio:/etc/xen/images/testvm01.img,xvda,w’, ]
    vif = [ ‘bridge=br0’ ]
    bootloader=”/usr/bin/pygrub”
    vcpus=1
    on_reboot = ‘restart’
    on_crash = ‘destroy’
    on_poweroff = ‘destroy’
    但是得到如下错误

    Loading, please wait…
    Gave up waiting for root device. Common problems:
    – Boot args (cat /proc/cmdline)
    – Check rootdelay= (did the system wait long enough?)
    – Check root= (did the system wait for the right device?)
    – Missing modules (cat /proc/modules; ls /dev)
    ALERT! /dev/disk/by-uuid/05eef8ad-7f91-419b-b2f0-7ba0b72c2b1d does not exist. Dropping to a shell!

    BusyBox v1.17.1 (Debian 1:1.17.1-8) built-in shell (ash)
    Enter ‘help’ for a list of built-in commands.

    /bin/sh: can’t access tty; job control turned off
    (initramfs)

    我用上面的启动命令去启动原先的vm01.img成功,但是testvm01.img就不行
    请高手指教
    系统是centos 6.2 xen4.1

  65. @Qing
    你是怎么解决的?

  66. vpsee你好,我想请教你一个问题:如何通过命令的方式来找到某一个虚拟机所对应的配置文件或者镜像文件?这个问题困扰我好久了,一直没解决,麻烦你了,谢谢!!

  67. @miffy
    没有这样的命令。你配置的虚拟机和配置文件你应该知道这些文件放在哪里啊,这是你指定的啊。

  68. 我最近遇到了一个问题,我需要定制domU的内核。目前我已经成功的在centos5.5(64位)上用源码安装了xen-3.4.2,并且在上面启动了centos5.5(32位)的虚拟机,目前由于实验的关系,我需要改动domU的内核,就涉及到重新编译domU内核的问题。我在官网上下载了linux-2.6.18-xen-3.4.0.tar.gz,并且利用该文件夹里面/buildconfigs里面提供的linux-defconfig_xenU_x86_32文件成功的在虚拟机里面编译和安装了domU的内核,并修改了grub文件,但是在启动的时候就无法启动,而且virt-manager上面只提供了一行提示:Guest not running,我不明白是为什么,更想知道如何实现我的目的?谢谢您。
    补充:而且我利用virt-manager安装了虚拟机之后(例如名字叫vm01),在/etc/xen下面也没有看到 vm01.cfg文件,我看到网上也提到了xen里面的pygrub引导工具,也不知道如何使用,对我想达到的目的有没有帮助。

  69. 你好,为什么我按你的步骤做的镜像都不行呢?能给我发个你制作的最小镜像吗?想看一下到底是我制作的问题还是xen装的有问题,bbw725@163.com,谢谢了

  70. 博主你好!我按你的教程制作了镜像,但是每次刚启动完vm 后,就crash了。
    我的xen是在centos6.4 上自己编译安装,dom0 是3.0.94,xen 版本是4.1.2,装的应该没问题,因为成功启动过VM。
    现在我相要启动的是centos6,这是我的配置文件:
    name = “cs”
    memory = “512”
    disk = [ ‘file:/vms-xen/cs.img,xvda1,w’,’file:/vms-xen/cs-swap.img,xvda2,w’ ]
    root = ‘/dev/xvda1 ro’
    vcpus = 1
    kernel = “/boot/vmlinuz-3.0.94”
    ramdisk = “/boot/initramfs-3.0.94.img”
    vfb = [ ]
    on_reboot = ‘restart’
    on_crash = ‘destroy’
    log里也没有发现什么大问题,这是/var/log/xen/xend.log的相关部分
    [2013-09-21 15:07:52 1780] DEBUG (XendDomainInfo:103) XendDomainInfo.create([‘vm’, [‘name’, ‘cs’], [‘memory’, ‘512’], [‘on_reboot’, ‘restart’], [‘on_crash’, ‘destroy’], [‘on_xend_start’, ‘ignore’], [‘on_xend_stop’, ‘ignore’], [‘vcpus’, 1], [‘oos’, 1], [‘image’, [‘linux’, [‘kernel’, ‘/boot/vmlinuz-3.0.94’], [‘ramdisk’, ‘/boot/initramfs-3.0.94.img’], [‘root’, ‘/dev/xvda ro’], [‘videoram’, 4], [‘tsc_mode’, 0], [‘nomigrate’, 0]]], [‘s3_integrity’, 1], [‘device’, [‘vbd’, [‘uname’, ‘file:/vms-xen/cs.img’], [‘dev’, ‘xvda’], [‘mode’, ‘w’]]], [‘device’, [‘vbd’, [‘uname’, ‘file:/vms-xen/cs-swap.img’], [‘dev’, ‘xvda2’], [‘mode’, ‘w’]]]])
    [2013-09-21 15:07:52 1780] DEBUG (XendDomainInfo:2498) XendDomainInfo.constructDomain
    [2013-09-21 15:07:52 1780] DEBUG (balloon:187) Balloon: 1106860 KiB free; need 16384; done.
    [2013-09-21 15:07:52 1780] DEBUG (XendDomain:476) Adding Domain: 30
    [2013-09-21 15:07:52 1780] DEBUG (XendDomainInfo:2836) XendDomainInfo.initDomain: 30 256
    [2013-09-21 15:07:52 1780] DEBUG (XendDomainInfo:2863) _initDomain:shadow_memory=0x0, memory_static_max=0x20000000, memory_static_min=0x0.
    [2013-09-21 15:07:52 1780] INFO (image:182) buildDomain os=linux dom=30 vcpus=1
    [2013-09-21 15:07:52 1780] DEBUG (image:721) domid = 30
    [2013-09-21 15:07:52 1780] DEBUG (image:722) memsize = 512
    [2013-09-21 15:07:52 1780] DEBUG (image:723) image = /boot/vmlinuz-3.0.94
    [2013-09-21 15:07:52 1780] DEBUG (image:724) store_evtchn = 1
    [2013-09-21 15:07:52 1780] DEBUG (image:725) console_evtchn = 2
    [2013-09-21 15:07:52 1780] DEBUG (image:726) cmdline = root=/dev/xvda ro
    [2013-09-21 15:07:52 1780] DEBUG (image:727) ramdisk = /boot/initramfs-3.0.94.img
    [2013-09-21 15:07:52 1780] DEBUG (image:728) vcpus = 1
    [2013-09-21 15:07:52 1780] DEBUG (image:729) features =
    [2013-09-21 15:07:52 1780] DEBUG (image:730) flags = 0
    [2013-09-21 15:07:52 1780] DEBUG (image:731) superpages = 0
    [2013-09-21 15:07:53 1780] INFO (XendDomainInfo:2357) createDevice: vbd : {‘uuid’: ‘d0848e8e-750b-6b35-5b47-0c31a1f1d1a3’, ‘bootable’: 1, ‘driver’: ‘paravirtualised’, ‘dev’: ‘xvda’, ‘uname’: ‘file:/vms-xen/cs.img’, ‘mode’: ‘w’}
    [2013-09-21 15:07:53 1780] DEBUG (DevController:95) DevController: writing {‘virtual-device’: ‘51712’, ‘device-type’: ‘disk’, ‘protocol’: ‘x86_64-abi’, ‘backend-id’: ‘0’, ‘state’: ‘1’, ‘backend’: ‘/local/domain/0/backend/vbd/30/51712’} to /local/domain/30/device/vbd/51712.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:97) DevController: writing {‘domain’: ‘cs’, ‘frontend’: ‘/local/domain/30/device/vbd/51712’, ‘uuid’: ‘d0848e8e-750b-6b35-5b47-0c31a1f1d1a3’, ‘bootable’: ‘1’, ‘dev’: ‘xvda’, ‘state’: ‘1’, ‘params’: ‘/vms-xen/cs.img’, ‘mode’: ‘w’, ‘online’: ‘1’, ‘frontend-id’: ’30’, ‘type’: ‘file’} to /local/domain/0/backend/vbd/30/51712.
    [2013-09-21 15:07:53 1780] INFO (XendDomainInfo:2357) createDevice: vbd : {‘uuid’: ’04b77cd3-7c91-1341-0f7e-0d831138f2ea’, ‘bootable’: 0, ‘driver’: ‘paravirtualised’, ‘dev’: ‘xvda2’, ‘uname’: ‘file:/vms-xen/cs-swap.img’, ‘mode’: ‘w’}
    [2013-09-21 15:07:53 1780] DEBUG (DevController:95) DevController: writing {‘virtual-device’: ‘51714’, ‘device-type’: ‘disk’, ‘protocol’: ‘x86_64-abi’, ‘backend-id’: ‘0’, ‘state’: ‘1’, ‘backend’: ‘/local/domain/0/backend/vbd/30/51714’} to /local/domain/30/device/vbd/51714.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:97) DevController: writing {‘domain’: ‘cs’, ‘frontend’: ‘/local/domain/30/device/vbd/51714’, ‘uuid’: ’04b77cd3-7c91-1341-0f7e-0d831138f2ea’, ‘bootable’: ‘0’, ‘dev’: ‘xvda2’, ‘state’: ‘1’, ‘params’: ‘/vms-xen/cs-swap.img’, ‘mode’: ‘w’, ‘online’: ‘1’, ‘frontend-id’: ’30’, ‘type’: ‘file’} to /local/domain/0/backend/vbd/30/51714.
    [2013-09-21 15:07:53 1780] DEBUG (XendDomainInfo:3420) Storing VM details: {‘on_xend_stop’: ‘ignore’, ‘pool_name’: ‘Pool-0’, ‘shadow_memory’: ‘0’, ‘uuid’: ‘e87897ad-c78d-3b81-bbf5-a5239a245f91’, ‘on_reboot’: ‘restart’, ‘start_time’: ‘1379747273.41’, ‘on_poweroff’: ‘destroy’, ‘bootloader_args’: ”, ‘on_xend_start’: ‘ignore’, ‘on_crash’: ‘destroy’, ‘xend/restart_count’: ‘0’, ‘vcpus’: ‘1’, ‘vcpu_avail’: ‘1’, ‘bootloader’: ”, ‘image’: “(linux (kernel /boot/vmlinuz-3.0.94) (ramdisk /boot/initramfs-3.0.94.img) (args ‘root=/dev/xvda ro ‘) (superpages 0) (videoram 4) (pci ()) (nomigrate 0) (tsc_mode 0) (notes (HV_START_LOW 18446603336221196288) (FEATURES ‘!writable_page_tables|pae_pgdir_above_4gb’) (VIRT_BASE 18446744071562067968) (GUEST_VERSION 2.6) (PADDR_OFFSET 0) (GUEST_OS linux) (HYPERCALL_PAGE 18446744071578849280) (LOADER generic) (SUSPEND_CANCEL 1) (PAE_MODE yes) (ENTRY 18446744071591588352) (XEN_VERSION xen-3.0)))”, ‘name’: ‘cs’}
    [2013-09-21 15:07:53 1780] DEBUG (XendDomainInfo:1794) Storing domain details: {‘console/ring-ref’: ‘275643’, ‘image/entry’: ‘18446744071591588352’, ‘console/port’: ‘2’, ‘store/ring-ref’: ‘363652’, ‘image/loader’: ‘generic’, ‘vm’: ‘/vm/e87897ad-c78d-3b81-bbf5-a5239a245f91’, ‘control/platform-feature-multiprocessor-suspend’: ‘1’, ‘image/hv-start-low’: ‘18446603336221196288’, ‘image/guest-os’: ‘linux’, ‘image/virt-base’: ‘18446744071562067968’, ‘memory/target’: ‘524288’, ‘image/guest-version’: ‘2.6’, ‘image/pae-mode’: ‘yes’, ‘description’: ”, ‘console/limit’: ‘1048576’, ‘image/paddr-offset’: ‘0’, ‘image/hypercall-page’: ‘18446744071578849280’, ‘image/suspend-cancel’: ‘1’, ‘cpu/0/availability’: ‘online’, ‘image/features/pae-pgdir-above-4gb’: ‘1’, ‘image/features/writable-page-tables’: ‘0’, ‘console/type’: ‘xenconsoled’, ‘name’: ‘cs’, ‘domid’: ’30’, ‘image/xen-version’: ‘xen-3.0’, ‘store/port’: ‘1’}
    [2013-09-21 15:07:53 1780] DEBUG (DevController:95) DevController: writing {‘protocol’: ‘x86_64-abi’, ‘state’: ‘1’, ‘backend-id’: ‘0’, ‘backend’: ‘/local/domain/0/backend/console/30/0’} to /local/domain/30/device/console/0.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:97) DevController: writing {‘domain’: ‘cs’, ‘frontend’: ‘/local/domain/30/device/console/0’, ‘uuid’: ‘e4fddfbb-3c15-a576-b881-4ca8f697aeb8’, ‘frontend-id’: ’30’, ‘state’: ‘1’, ‘location’: ‘2’, ‘online’: ‘1’, ‘protocol’: ‘vt100’} to /local/domain/0/backend/console/30/0.
    [2013-09-21 15:07:53 1780] DEBUG (XendDomainInfo:1881) XendDomainInfo.handleShutdownWatch
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices tap2.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vif.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vkbd.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices ioports.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices tap.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vif2.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices console.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:144) Waiting for 0.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vscsi.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vbd.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:144) Waiting for 51712.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:628) hotplugStatusCallback /local/domain/0/backend/vbd/30/51712/hotplug-status.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:628) hotplugStatusCallback /local/domain/0/backend/vbd/30/51712/hotplug-status.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:642) hotplugStatusCallback 1.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:144) Waiting for 51714.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:628) hotplugStatusCallback /local/domain/0/backend/vbd/30/51714/hotplug-status.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:628) hotplugStatusCallback /local/domain/0/backend/vbd/30/51714/hotplug-status.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:642) hotplugStatusCallback 1.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices irq.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vfb.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices pci.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vusb.
    [2013-09-21 15:07:53 1780] DEBUG (DevController:139) Waiting for devices vtpm.
    [2013-09-21 15:07:54 1780] INFO (XendDomain:1225) Domain cs (30) unpaused.
    [2013-09-21 15:07:55 1780] WARNING (XendDomainInfo:2061) Domain has crashed: name=cs id=30.
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:3071) XendDomainInfo.destroy: domid=30
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2401) Destroying device model
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2408) Releasing devices
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2414) Removing console/0
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = console, device = console/0
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2414) Removing vbd/51712
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/51712
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2414) Removing vbd/51714
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/51714
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2406) No device model
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2408) Releasing devices
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2414) Removing vbd/51712
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/51712
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:2414) Removing vbd/51714
    [2013-09-21 15:07:56 1780] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/51714
    总是在unpause 后就crash。

  71. 请教博主个问题,如果我要配置内核参数,虚拟机配置文件里应该怎么写?
    我把它写在kernel=” ” 这一行,这样不行

  72. 如何制作suse的最小化模板啊

  73. @mnt
    先在虚拟机下最小化装个 suse,然后 tar 整个文件系统,再改一下内核以及几个配置文件即可。

  74. vpsee 你好
    在centos5.9安装xen 用的guest的img能不能直接用到ubuntu+xen上?
    是只修改配置文件吗?
    我修改了配置文件,但是不能启动,好像是elf格式有错

  75. @Lisa
    理论上可以,实际情况会麻烦一些,会遇到各种问题(都是可解决的)。可能会有 guest 内核版本、host 内核版本、xen 版本、文件系统、guest 配置文件等问题。

发表评论