复制大小大于 4GB 的 vdi

复制大小大于 4GB 的 vdi

我只有 4.6GB VDI 映像。我必须将其复制到 FAT32 文件系统中。我不能使用 VMDK 格式,只能使用 VDI 映像。

我如何将 VDI 分割成更小的 VDI 块,以便可以将其复制到 USB 中。

答案1

您是否只需要将其分割成足够小的块以适合 FAT32 文件系统,以便传输或复制它?如果是这种情况,您可以:

  • 用于split将文件分割成几部分。
  • 或者用来dd做同样的事情。
  • 或者将其存档(例如多部分 RAR 或多部分 ZIP 文件)。

如果您需要虚拟机真正从 U 盘运行:

  • 更改文件系统。FAT32 仅限于 4GiB 或更小的文件,因为这是文件系统的限制。
  • 或者更改为可以分割的文件格式。(为什么 VMDK 不是一个选项?)。
  • 或者完全使用环回文件系统,将 FAT32 格式的 pendrive 上的多个 4GiB 文件 RAID 到足够大的单个分区中,然后在其上使用不同的文件系统。


编辑于 2014 年 5 月 25 日:添加有关第三个选项的更多信息。

使用 dd 创建≤4GiB 文件:

dd if=/dev/null of=/mnt/myPenDrive/RAID_part_1.diskimage bs=1M count=3072
dd if=/dev/null of=/mnt/myPenDrive/RAID_part_2.diskimage bs=1M count=3072

解释:

  • 从 /dev/null 读取 1M 块,它提供了无尽的零源。
  • 重复 3072 次。
  • 将得到的 3TiB 零写入名为 RAID_part_1.diskimage 的文件中

请注意,文件大小几乎可以是任意大小,但由于我们正在写入 FAt32 文件系统,因此文件大小必须小于 4GiB。因此,不要将计数增加到 4095 以上。


接下来我们告诉操作系统我们希望将这些文件视为块设备。

losetup /dev/loop0 /mnt/myPenDrive/RAID_part_1.diskimage
losetup /dev/loop1 /mnt/myPenDrive/RAID_part_2.diskimage

现在我们可以像普通磁盘一样访问这些文件。例如,然后运行 ​​fdisk,以我们想要的任何方式格式化它们,然后挂载格式化的卷。

再说一遍:我们可以用 FAT32 以外的其他格式格式化此环回设备。因此 FAT32 限制不再适用。由于或假“磁盘”小于 4GiB,如果我们尝试创建 6GiB 文件,磁盘仍会变满。所以让我们扩展磁盘。

我们可以通过连接多个设备来实现这一点。把它想象成一本纸质笔记本,你可以把两个笔记本粘在一起。第一个笔记本的最后一页贴到第二个笔记本的第一页上。现在你已经把两个小笔记本(磁盘)变成了一个大笔记本。

可以找到更详细、更全面的描述在我们的姊妹网站上

对于 Linux,你可能想要使用管理

首先确保您有可用的 mdadm(例如尝试运行它,如果未找到,请尝试使用您的发行版的相关命令来安装它。例如apt-get install mdadm对于 Ubuntu、yum install mdadmRedHat 或emerge mdadmGentoo)。

mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1 

您现在应该有一个名为 /dev/md0 的新 6GiB 块设备。根据需要对其进行格式化和挂载。

相关内容