调整虚拟硬盘大小

调整虚拟硬盘大小

我发现一个非常好的教程关于如何创建虚拟硬盘,我正在考虑在我的工作中使用它们,以便可靠且可移植地存储具有相关处理结果的大型数据集。

基本上,本教程包括这样做:

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

相关内容