美文网首页
制作Aliyun vhd镜像

制作Aliyun vhd镜像

作者: 分享放大价值 | 来源:发表于2017-05-17 11:22 被阅读918次
    Preface

    阿里云仅支持raw和vhd两种镜像格式的导入,而且对这两种格式都有较为严格的要求。

    • vhd格式:阿里云完全适配使用vhd-util制作出来的vhd格式,但不支持qemu-img制作或者转换得到的vhd。因此,手头有qcow2等镜像格式的没有必要尝试转成vhd了,不大可能成功
    • raw格式:镜像文件必须是1M对齐,分区建议4K对齐

    vhd Creator Application字段必须是"tap" (可以使用vhd-util read -n ${VHD_NAME}.vhd -p查看),ECS存储完全适配的是使用vhd-util2工具做出来的vhd文件

    Environment

    因为raw格式制作出来的镜像很大 (一般raw的镜像要几十G左右,而qcow2或vhd在几G左右),延长了debug周期,不做考虑。
    选择vhd格式的镜像就要先打造虚拟化环境,有下面两种开发环境可供选择:

    • qemu-kvm + xen-runtime (推荐):采用qemu-kvm虚拟化平台便于对做好的vhd格式的镜像进行校验,而vhd-util是Xen平台提供的管理虚拟块设备的工具

    vhd-util CentOS环境推荐用yum安装

      yum install xen-runtime.x86_64
    

    也可以通过搜索vhd-util依赖的so及elf的方式进行精简安装,但从网上能搜到的elf来看,64位系统有可能需要解决multilab的问题,故不推荐

    • Xenserver + kvm:需要两台物理机,一台安装Citrix Xenserver用于制作vhd格式的镜像,另一台安装kvm用于验证。对于怕把现有虚拟化环境搞坏的朋友,这是一种好的选择

    以第一种环境为例,一般需要安装如下几个软件包:

    • qemu-kvm (注意,使用CentOS的朋友不要采取yum安装的方式,要手动编译,见Troubleshooting)
    • xen-runtime
    • libvirt和virt-manager (Optional, 可以方便管理虚拟机)
    Install
    1. 准备好制作虚拟机镜像的工具,可以是:
      a) 打包好的虚拟机镜像
      b) 能在qemu-kvm运行的虚拟机
    2. 使用vhd-util创建符合要求大小的vhd虚拟磁盘
    3. 启动qemu-kvm虚拟机,硬盘格式选VirtIO
      a) 如果是linux shell console用户,注意/etc/libvirt/qemu/${VM_NAME}.xml中的driver type字段应该是vpcbus字段为virtio,如下图
      libvirt config

    b) 如果是virt-manager,对应的窗口应该如下图


    virt-manager
    1. 通过任何方法,将虚拟机操作系统安装在vhd虚拟磁盘上。对于手头有qemu-kvm虚拟机镜像的朋友,建议不要图省事直接dd拷贝磁盘。这样会使制作出来的vhd磁盘大小直逼raw。建议将源系统打包,然后在分好区的vhd虚拟磁盘中解包,最后装bootloader
    2. 测试镜像是否能在qemu-kvm环境成功运行。如果没有问题,便可以将vhd拷出来,传到Aliyun上了
    Trouble shooting

    Q: driver type选择vpc后启动虚拟机报错Driver 'vpc' can only be used for read-only devices
    A: 这个问题与qemu的配置有关系,需要重新编译qemu

    1. 从这篇有关qemu介绍的文章中可知,默认情况下的vpc格式是只读的,因此不支持制作dynamic vhd的kvm虚拟机镜像
    2. CentOS中支持kvm的qemu主要是通过yum install qemu-kvm安装,该qemu-kvm是不支持vpc的
    3. 手动编译qemu(下载qemu-kvm源码)并将vpc加入configure的--block-drv-rw-whitelist列表,下面是一个例子
    ```bash
    ./configure --enable-kvm --block-drv-rw-whitelist=vpc,qcow2
    ```
    
        > **注** CentOS中,手动编译的qemu并没有`/usr/libexec/qemu-kvm`(和`yum`安装的有区别)
    
    1. 安装libvirt virt-install virt-manager等工具,注意一定不要安装qemu-kvmqemu-kvm-ev之类有qemu-kvm字样的包,否则会覆盖手动编译的qemu,成为libvirt首选的emulator
    2. 现在应该可以使用virt-install/virt-manager(GUI)挂载vhd格式的磁盘了

    相关文章

      网友评论

          本文标题:制作Aliyun vhd镜像

          本文链接:https://www.haomeiwen.com/subject/emqdxxtx.html