我可以在现有文件系统(例如,ext4)上创建一个常规文件,将其转变为块设备(通过losetup
),然后使用它自己的 ext4 文件系统对其进行格式化。
但上述硬盘的大小是固定的。
问题:
VirtualBox
允许您创建固定大小或动态大小的 VDI、VMDK 和 VHD 类型的硬盘。有什么办法制作一个基于文件的动态大小硬盘供 Linux 主机操作系统使用?是否有可能
VirtualBox
在 Linux 主机操作系统上,可以使用这三种基于文件、动态大小的硬盘吗?
我在使用 Ubuntu 16.04。
答案1
是的,如果您的文件系统支持稀疏文件。(ext4 支持稀疏文件。)
以下是创建最初几乎不占用空间的
64GiB
原始图像的方法:disk.img
truncate -s 64G disk.img
您现在可以将其用作
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