Filesystems 如何从主机操作系统调整VDI及其包含的文件系统的大小?

Filesystems 如何从主机操作系统调整VDI及其包含的文件系统的大小?,filesystems,virtualbox,Filesystems,Virtualbox,关于如何调整Virtualbox磁盘映像VDI的大小,然后引导live CD调整其文件系统的大小,从现在调整大小的磁盘重新启动,有很多描述。瞧,您已经扩展了VDI中文件系统的大小 我想使用主机操作系统来实现这一点,主机操作系统只有Linux Ubuntu 12.04 LTS。这一点是为了能够使其自动化,并使过程花费更少的时间。我该如何做到这一点?看起来,使用Qemu的NBD工具并不总是能够以可预测/稳定/可靠的结果实现这一点,正如Jeff Waugh所描述的,其中基本上是这样的: sudo ap

关于如何调整Virtualbox磁盘映像VDI的大小,然后引导live CD调整其文件系统的大小,从现在调整大小的磁盘重新启动,有很多描述。瞧,您已经扩展了VDI中文件系统的大小


我想使用主机操作系统来实现这一点,主机操作系统只有Linux Ubuntu 12.04 LTS。这一点是为了能够使其自动化,并使过程花费更少的时间。我该如何做到这一点?

看起来,使用Qemu的NBD工具并不总是能够以可预测/稳定/可靠的结果实现这一点,正如Jeff Waugh所描述的,其中基本上是这样的:

sudo aptitude install qemu-utils
sudo modprobe nbd
VBoxManage modifyhd <vdi-file> --resize <new_size>
sudo qemu-nbd -c /dev/nbd0 <vdi-file>
sudo gparted /dev/nbd0
sudo qemu-nbd -d /dev/nbd0

您只需遵循以下步骤:

关掉你的机器。 右键单击虚拟机名称>设置>存储 单击控制器:SATA>添加硬盘。 选择新硬盘类型大小并点击创建。 放弃机器状态。 插入Ubuntu Live CD。 从ubuntu live cd启动。 打开gparted它已安装,无需安装。 检查系统是否看到新创建的硬盘。 打开终端。 键入以下代码。 sudo dd if=/dev/sda of=/dev/sdb第一个是旧分区路径,第二个是新分区路径。 等待完成数据复制,根据主机规格,此步骤可能需要一些时间。 完成复制后,返回gparted并选择刷新设备。 选择新分区/dev/sdb执行dd命令后,它必须是旧分区的典型。 它会将扩展的空间显示为未定位的数据。 删除交换分区/扩展分区。 右键单击根分区/dev/sdb>Resize 在不进行交换分配的情况下分配整个空间。 创建新的扩展分区>选择扩展>创建 创建新的linux交换分区>选择linux交换>创建 现在关掉你的跑步机器。 右键单击机器>设置>存储。 弹出ubuntu live cd。 右键单击旧硬盘>删除附件。 现在,您可以从新创建的硬盘启动vm。 通过输入df-kh命令检查存储。 它必须告诉你新的尺寸。 祝贺你,享受你的自由空间。 本视频将帮助您:

我尝试了各种建议,说明如何从网络上实现这一点,但在嵌入式发行版(如OpenWrt)上,来自来宾端的gparted技巧不会起作用,尽管不可否认,可能是因为您没有安装所有的先决条件。所以你必须在客人之外做

我最后做的是回到图像文件。如果您周围没有原始图像,可以从.vdi:

VBoxManage internalcommands  converttoraw file.vdi disk.img
现在,您可以执行以下操作:

qemu-img resize disk.img +10G
例如,向磁盘添加10Gib。然后:

kpartx -av disk.img
kpartx应该输出它用于块设备的环回设备,例如loop0,AKA/dev/loop0。然后这样做:

ls -la /dev/mapper/loop0p*
要查看kpartx在/dev树下插入的设备,例如磁盘映像中每个分区的/dev/dm-8。您需要知道这些,以伪造gparted,它喜欢被称为/dev/loop0\u partx之类的分区。所以为gparted创建这些假链接

因此,您最终可以在gparted中执行调整大小等操作

不要忘记在图像完全符合您的要求后进行清理:

kpartx -d disk.img
rm /dev/loop0_part1
...
并将disk.img作为.vdi重新导入

VBoxManage convertfromraw --format VDI disk.img disk.vdi

顺便说一句,我确实尝试了公认的答案,但gparted就是不愿意调整大小。

感谢您的帮助,但正如问题中所述:这一点是为了能够实现自动化。您的解决方案包含多张插入CD,右键单击,…virtual box的目的是虚拟地创建一台独立的计算机,因此,您应该在主机和来宾机上执行此操作,因为您需要在计算机内部重新分区硬盘。
kpartx -d disk.img
rm /dev/loop0_part1
...
VBoxManage convertfromraw --format VDI disk.img disk.vdi