AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 4398
Accepted
ændrük
ændrük
Asked: 2010-09-20 14:49:02 +0800 CST2010-09-20 14:49:02 +0800 CST 2010-09-20 14:49:02 +0800 CST

如何将多部分 VMDK 磁盘映像转换为 qcow2?

  • 772

我有一个作为多个文件存在的 VMDK 磁盘映像:

2.0G guest-s001.vmdk  1.8G guest-s003.vmdk  128K guest-s005.vmdk
2.0G guest-s002.vmdk  1.7G guest-s004.vmdk  4.0K guest.vmdk

运行qemu-img以将其转换为 qcow2 格式时,我应该指定哪个输入文件名?只是guest.vmdk,所有这些,还是类似的东西guest-*.vmdk?

vmware qemu
  • 7 7 个回答
  • 40166 Views

7 个回答

  • Voted
  1. Best Answer
    Kees Cook
    2010-09-23T15:37:34+08:002010-09-23T15:37:34+08:00

    过去,我必须先将它们转换为原始图像,将它们连接在一起,然后将生成的原始图像转换为 qcow2:

    qemu-img convert guest-s001.vmdk guest-s0001.raw
    qemu-img convert guest-s002.vmdk guest-s0002.raw
    qemu-img convert guest-s003.vmdk guest-s0003.raw
    qemu-img convert guest-s004.vmdk guest-s0004.raw
    qemu-img convert guest-s005.vmdk guest-s0005.raw
    cat guest-s0001.raw guest-s0002.raw guest-s0003.raw guest-s0004.raw guest-s0005.raw > guest.raw
    qemu-img convert guest.raw guest.qcow2
    

    如果不仅仅是最后一个文件小于 2146762752 字节,请不要惊慌。一些 VMware 产品会创建不同大小的 vmdk span。大小应匹配主 vmdk 文件中的扩展描述中列出的扇区数的 512 倍(可使用任何文本编辑器或“cat”读取)。

    也可以一次完成所有操作,但我还没有尝试过:

    qemu-img convert guest-s001.vmdk guest-s002.vmdk guest-s003.vmdk guest-s004.vmdk guest-s005.vmdk guest.qcow2
    

    或者,如果它们实际上不是连续的磁盘映像,那么我不确定该建议什么。:)

    祝你好运!


    一次转换所有图像的快速终端脚本是:

    for i in *.vmdk; do qemu-img convert -f vmdk $i -O raw $i.raw; done
    cat *.raw > tmpImage.raw
    qemu-img convert tmpImage.raw finalImage.qcow2
    rm *.raw
    
    • 12
  2. Stuart
    2018-12-08T03:54:21+08:002018-12-08T03:54:21+08:00

    看起来 qemu-img 命令现在得到了增强。我刚刚使用以下命令将一堆 VMware 多部分图像转换为 qcow2:

    $ qemu-img convert <base of the image without the S0001,2etc>.vmdk new-image.qcow2
    
    • 7
  3. user9684
    2011-01-27T16:47:52+08:002011-01-27T16:47:52+08:00

    我正在尝试将其转换为原始:

    find . -type f -iname <guest-name>\*-f0\*vmdk -exec qemu-img convert {} {}.raw \;
    

    然后串联:

    cat <guest-name>*-f0[0-1][1-9]*raw >> <guest-name>.raw
    

    然后转换:

    qemu-img convert <guest-name>.raw -O qcow2 <guest-name>.qcow2
    
    • 1
  4. Andrew Galford
    2014-11-05T22:09:05+08:002014-11-05T22:09:05+08:00

    我本来可以parallel这样做,但这里有一个目录:

    ls *s0??.vdmk | xargs -n 2 -I % qemu-img convert % %.img
    

    接着:

    cat *.img >> imagename.raw
    

    管道之前的ls部分将打印所有在末尾有一个s0和两个通配符的 vdmk,该xargs命令允许它%两次替换为命令末尾的变量qemu-img。

    • 1
  5. ScienceMan
    2015-05-08T14:31:11+08:002015-05-08T14:31:11+08:00

    这是一种使用数组的简单方法:

    files=(*s0??.vmdk); qemu-img convert -f vmdk -O qcow2 ${files[@]} ${files%-s001.vmdk}.qcow2;
    
    • 1
  6. coffman21
    2019-01-23T08:39:40+08:002019-01-23T08:39:40+08:00

    一个选项是在图像名称中使用通配符:

    qemu-img convert my-multipart-image*.vmdk my-image.qcow2
    
    • 0
  7. wuseman
    2022-01-20T19:11:04+08:002022-01-20T19:11:04+08:00

    上述示例都没有为我完成工作,我在网上找到的其他解决方案也没有,所以在这里你可以使用更新的版本。

    文件名:Windows.10-s00{1,16}.vmdk存储在 vmware 路径中,但也请注意单个 .vmdk 文件,即:您的文件夹中的 ~4.0kb:这是它在我的设置中的查找方式:Windows.10 .vmdk选择这个最小文件作为“目标”,然后 qemu-img 将为我们完成这项工作:

     4.0G       Windows.10-s001.vmdk
     4.0G       Windows.10-s002.vmdk
     4.0G       Windows.10-s003.vmdk
     4.0G       Windows.10-s004.vmdk
     4.0G       Windows.10-s005.vmdk
     4.0G       Windows.10-s006.vmdk
     4.0G       Windows.10-s007.vmdk
     3.8G       Windows.10-s008.vmdk
     12K        Windows.10-s009.vmdk
     12K        Windows.10-s010.vmdk
     12K        Windows.10-s011.vmdk
     12K        Windows.10-s012.vmdk
     12K        Windows.10-s013.vmdk
     12K        Windows.10-s014.vmdk
     12K        Windows.10-s015.vmdk
     144K       Windows.10-s016.vmdk
     4.0K       Windows.10.vmdk
    
    • 使用以下命令转换 vmdk > qcow2:

      qemu-img convert Windows.10.vmdk Windows.10.qcow
      
    • 0

相关问题

  • 如何挂载 qcow2 磁盘映像?

  • 10.04 的 kqemu ppa

  • 来宾在 VMware Player 中调整 Ubuntu 10.04 64 位大小不起作用 [关闭]

  • vmware/virtualbox 3d 加速

  • 哪个更好:Win7 主机运行 VMware 和 Ubuntu 来宾,反之亦然?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve