我发现一个非常好的教程关于如何创建虚拟硬盘,我正在考虑在我的工作中使用它们,以便可靠且可移植地存储具有相关处理结果的大型数据集。
基本上,本教程包括这样做:
dd if=/dev/zero of=MyDrive.vhd bs=1M count=500
mkfs -t ext3 MyDrive.vhd
mount -t auto -o loop MyDrive.vhd /some/user/folder
它创建一个 ext3 格式的 500MB 虚拟硬盘并将其安装在某个地方。
现在假设我使用该文件并意识到我需要超过 500MB,有没有一种方法可以“动态”调整虚拟磁盘的大小? (动态我的意思是除了创建一个新的更大的磁盘并复制数据之外。)
答案1
有比dd
扩展文件更好的选择。该dd
命令需要几个参数才能正常运行(以免损坏数据)。我用的是truncate
。尽管它的名字如此,它也可以扩展文件的大小:
truncate - 将文件大小缩小或扩展至指定大小
-s, --size=大小
通过 SIZE 设置或调整文件大小
SIZE 是一个整数,可选单位(例如:10M 是 10*1024*1024)。单位 > 为 K、M、G、T、P、E、Z、Y(1024 的幂)或 KB、MB、...(1000 的幂)。
SIZE 还可以以以下修饰字符之一作为前缀:“+”扩展、“-”减少、最多“<”、至少“>”、“/”向下舍入到多个、“%”舍入最多为 的倍数。
因此,
truncate -s +1G MyDrive.vhd
安全地将您的文件扩展 1 GB。而且,是的,当底层文件系统支持时,它会进行稀疏扩展,因此实际的块将按需分配。
当文件扩展时,不要忘记运行 resize2fs:
resize2fs MyDrive.vhd
此外,对于支持在线调整大小的文件系统,整个过程可以在线完成(无需umount
设备):
losetup -c loopdev
更新支持文件上的内核信息,
和
resize2fs loopdev
在线调整挂载文件系统的大小
答案2
双倍尺寸:
umount /some/user/folder
dd if=/dev/zero bs=1M count=500 seek=500 >>MyDrive.vhd
resize2fs MyDrive.vhd
答案3
$ vboxmanagemodifyhd NewVirtualDisk1.vhd --resize 40000 #新大小以mb为单位,此处为40000mb