Linux 上基于文件的动态分配硬盘

Linux 上基于文件的动态分配硬盘

我可以在现有文件系统(例如,ext4)上创建一个常规文件,将其转变为块设备(通过losetup),然后使用它自己的 ext4 文件系统对其进行格式化。

但上述硬盘的大小是固定的。

问题:

  1. VirtualBox允许您创建固定大小或动态大小的 VDI、VMDK 和 VHD 类型的硬盘。有什么办法制作一个基于文件的动态大小硬盘供 Linux 主机操作系统使用?

  2. 是否有可能VirtualBox在 Linux 主机操作系统上,可以使用这三种基于文件、动态大小的硬盘吗?

我在使用 Ubuntu 16.04。

答案1

  1. 是的,如果您的文件系统支持稀疏文件。(ext4 支持稀疏文件。)

    以下是创建最初几乎不占用空间的64GiB原始图像的方法:disk.img

    truncate -s 64G disk.img
    
  2. 您现在可以将其用作disk.img环回块设备,并且它会在您写入时扩展。


奖励功能

如果要将磁盘映像转换disk.img为其他格式(如物理磁盘)/dev/sdb,请使用qemu-img

qemu-img convert -O raw disk.img /dev/sdb

losetup如果您想将 VDI、VMDK、VHD 或其他容器格式转换为 RAW,以便您可以使用/等内置工具来操作输出图像,这很有用kpartx

源映像的格式无关紧要。 qemu-img可以处理 VDI、VMDK、VHD 和原始映像。要查看受支持的映像列表,请运行以下命令:

    root@node51 [~]# qemu-img --help | grep 'Supported formats:'
    Supported formats: bochs vvfat rbd vpc parallels tftp ftp ftps raw https qcow http dmg qcow2 quorum null-aio cloop vdi null-co vhdx blkverify file vmdk host_cdrom blkdebug host_device sheepdog iscsi qed nbd

相关内容