【最佳实践】镜像格式转换

举报
云上精选 发表于 2020/04/23 19:29:18 2020/04/23
【摘要】 安装qemu-img并转换镜像文件的格式

操作场景

本节操作指导您使用开源qemu-img工具转换镜像格式。

当前云平台支持导入vhd、vmdk、qcow2、raw、vhdx、qcow、vdi、qed、zvhd或zvhd2等格式镜像文件。推荐使用qcow2格式的镜像文件。如果您需要导入其他格式的镜像,请先使用qemu-img工具转换镜像的格式后再导入。导入的镜像文件必须为单一的镜像文件,例如pre-allocated格式镜像依赖2个文件:“xxxx.vmdk”和“xxxx-flat.vmdk”,这两种格式的镜像文件不能直接导入到云平台,需提前转换成通用的vmdk或qcow2格式才能导入。

根据您本地服务器的操作系统不同,您可以采用不同的方法安装qemu-img并转换镜像文件的格式。

qemu-img镜像格式转换工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed社区格式的镜像的相互转换,请您根据实际需要选择镜像转换的格式。

  • zvhd和zvhd2是云服务内部自研格式,qemu-img工具无法识别这两种格式的镜像文件。
  • vhd格式镜像在执行命令转换格式时请使用vpc代替,否则可能造成qemu-img工具无法识别镜像格式。

    例如,将CentOS 6.9镜像的vhd格式转换为qcow2格式,请执行如下命令:

    qemu-img convert -p -f vpc -O qcow2 centos6.9.vhd centos6.9.qcow2

Windows操作系统

  1. 安装qemu-img。
    1. 下载qemu-img安装包至本地:https://qemu.weilnetz.de/w64/
    2. 双击setup文件安装qemu-img,以下操作以安装路径为“D:\Program Files\qemu”为例。
  2. 配置环境变量。
    1. 选择“开始 > 计算机”,右键单击“属性”。
    2. 单击“高级系统设置”。
    3. 在“系统属性”对话框里,单击“高级 > 环境变量"。
    4. 在环境变量对话框里,在系统变量部分找到Path,并单击“编辑”。在“变量值”里,添加“D:\Program Files\qemu”,不同的变量值之间以“;”分隔。

      如果没有Path变量请新建,并补充Path的变量值为“D:\Program Files\qemu”。

    5. 单击“确定”,保存修改。
  3. 验证安装成功。

    单击“开始 > 运行”,输入“cmd”后按回车键,在“cmd”窗口输入qemu-img --help,如回显信息中出现qemu-img工具的版本信息,即表示安装成功。

  4. 转换镜像格式。
    1. 在“cmd”窗口输入如下命令切换文件目录,以安装目录为“D:\Program Files\qemu”为例。

      d:

      cd D:\Program Files\qemu

    1. 执行如下命令转换镜像文件格式,以转换vmdk格式为qcow2格式的镜像为例。

      qemu-img convert -p -f vmdk -O qcow2 centos6.9-flat.vmdk centos6.9.qcow2

      上述命令中各参数对应的说明如下:

      • -p:表示镜像转换的进度。
      • -f后面为源镜像格式。
      • -O(必须是大写)后面的参数由如下3个部分组成:转换出来的镜像格式 + 源镜像文件名称 + 目标文件名称。

      转换完成后,目标文件会出现在源镜像文件所在的目录下。

      回显信息如下所示:

      # qemu-img convert -p -f vmdk -O qcow2 centos6.9-flat.vmdk centos6.9.qcow2
          (100.00/100%)
    2. 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。

      qemu-img info centos6.9.qcow2

      回显信息如下所示:

      # qemu-img info centos6.9.qcow2
      image: centos6.9.qcow2
      file format: qcow2
      virtual size: 1.0G (1073741824 bytes)
      disk size: 200K
      cluster_size: 65536
      Format specific information:
          compat: 1.1
          lazy refcounts: false

Linux操作系统

  1. 安装qemu-img。
    • Ubuntu、Debian系列操作系统,请执行如下命令:

      apt install qemu-img

    • CentOS、Red Hat、Oracle系列操作系统,请执行如下命令:

      yum install qemu-img

    • SUSE、OpenSUSE系列操作系统,请执行如下命令:

      zypper install qemu-img

  2. 执行如下命令,验证安装成功。

    qemu-img -v

    如回显信息中出现qemu-img工具的版本信息和帮助手册,即表示安装成功。以CentOS 7为例,回显信息如下所示:

    [root@CentOS7 ~]# qemu-img -v
    qemu-img version 1.5.3, Copyright (c) 2004-2008 Fabrice Bellard
    usage: qemu-img command [command options]
    QEMU disk image utility
    
    Command syntax:
      check [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename
      create [-q] [-f fmt] [-o options] filename [size]
      commit [-q] [-f fmt] [-t cache] filename
      compare [-f fmt] [-F fmt] [-T src_cach]
  3. 转换镜像格式,以CentOS 7操作系统中转换vmdk格式为qcow2格式的镜像为例。
    1. 执行如下命令转换镜像文件格式。

      qemu-img convert -p -f vmdk -O qcow2 centos6.9-flat.vmdk centos6.9.qcow2

      上述命令中各参数对应的说明如下:

      • -p标识转换的进度条。
      • -f后面为源镜像格式。
      • -O(必须是大写)后面的参数为转换出来的镜像格式 + 源镜像文件名称 + 目标文件名称。

      转换完成后,目标文件会出现在源镜像文件所在的目录下。

      回显信息如下所示:

      [root@CentOS7 home]# qemu-img convert -p -f vmdk -O qcow2 centos6.9-flat.vmdk centos6.9.qcow2
          (100.00/100%)
    2. 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。

      qemu-img info centos6.9.qcow2

      回显信息如下所示:

      [root@CentOS7 home]# qemu-img info centos6.9.qcow2
      image: centos6.9.qcow2
      file format: qcow2
      virtual size: 1.0G (1073741824 bytes)
      disk size: 200K
      cluster_size: 65536
      Format specific information:
          compat: 1.1
          lazy refcounts: false

典型应用举例

用户从VMware平台导出一个pre-allocated格式的镜像文件(pre-allocated格式是VMDK monolithicFlat子格式类型),pre-allocated格式镜像依赖2个文件:“xxxx.vmdk”和“xxxx-flat.vmdk”,这两种格式的镜像文件不能直接导入到云平台,需提前转换成通用的vmdk或qcow2格式才能导入。

以下以镜像文件格式为centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk为例。将centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk放在同一个目录下,通过qemu-img进行镜像格式转换。

  1. 执行如下命令,查询镜像文件的详细信息。

    ls -lh centos6.9-64bit*

    qemu-img info centos6.9-64bit.vmdk

    回显信息如下所示:

    [root@CentOS7 tmp]# ls -lh centos6.9-64bit*
    -rw-r--r--. 1 root root 10G Jun 13 05:30 centos6.9-64bit-flat.vmdk
    -rw-r--r--. 1 root root 327 Jun 13 05:30 centos6.9-64bit.vmdk
    [root@CentOS7 tmp]# qemu-img info centos6.9-64bit.vmdk
    image: centos6.9-64bit.vmdk
    file format: vmdk
    virtual size: 10G (10737418240 bytes)
    disk size: 4.0K
    Format specific information:
        cid: 3302005459
        parent cid: 4294967295
        create type: monolithicFlat
        extents:
            [0]:
                virtual size: 10737418240
                filename: centos6.9-64bit-flat.vmdk
                format: FLAT
    [root@CentOS7 tmp]# qemu-img info centos6.9-64bit-flat.vmdk
    image: centos6.9-64bit-flat.vmdk
    file format: raw
    virtual size: 10G (10737418240 bytes)
    disk size: 0
  2. 执行如下命令,查看pre-allocated格式的镜像文件的相关配置信息。

    cat centos6.9-64bit.vmdk

    回显信息如下所示:

    [root@CentOS7 tmp]# cat centos6.9-64bit.vmdk
    # Disk DescriptorFile
    version=1
    CID=c4d09ad3
    parentCID=ffffffff
    createType="monolithicFlat"
     
    # Extent description
    RW 20971520 FLAT "centos6.9-64bit-flat.vmdk" 0
     
    # The Disk Data Base
    #DDB
     
    ddb.virtualHWVersion = "4"
    ddb.geometry.cylinders = "20805"
    ddb.geometry.heads = "16"
    ddb.geometry.sectors = "63"
    ddb.adapterType = "ide"
  3. 将centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk放在同一个目录下,执行如下命令,通过qemu-img工具转换镜像格式为qcow2格式。
    [root@CentOS7 tmp]# qemu-img convert -p -f vmdk -O qcow2 centos6.9-64bit-flat.vmdk centos6.9-64bit.qcow2
        (100.00/100%)
  4. 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。

    qemu-img info centos6.9-64bit.qcow2

    回显信息如下所示:

    [root@CentOS7 tmp]# qemu-img info centos6.9-64bit.qcow2
    image: centos6.9-64bit.qcow2
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 200K
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200