onk*_*ows 12 virtualbox gparted clone clonezilla vdi
我想将运行 MS Windows 7 的物理机变成 VirtualBox 虚拟机。这很容易,我以前做过,但这次我需要磁盘的虚拟大小/容量是固定的和较小的大小。
它需要修复,因为出于合规性原因,我将在其上安装 PGP 磁盘加密。这会将动态磁盘扩展到最大大小。
除了这种特殊情况之外,还有其他原因希望磁盘更小和更固定。是我的经验。例如,如果您在动态扩展的磁盘上运行 Jenkins 构建服务器,您会看到磁盘快速扩展到其最大大小,而在来宾操作系统中磁盘空间使用稳定并且有大量可用空间。
使用Disk2vhd我创建了一个 vhdx 文件。这个文件我转换成vdi格式。
vboxmanage clonehd --format VDI MSWIN7.VHDX MSWIN7.vdi
Run Code Online (Sandbox Code Playgroud)
据称,使用 vdi,您可以使用类似于以下命令的命令减少虚拟大小/容量
vboxmanage modifyhd MSWIN7.vdi --resize 160000
Run Code Online (Sandbox Code Playgroud)
我发现这不起作用。即使您尝试变体,您也会始终收到如下错误消息:
进度状态:VBOX_E_NOT_SUPPORTED VBoxManage:错误:此格式的调整硬盘大小操作尚未实现!
下面是我的 vdi 磁盘的磁盘布局。我将此添加到 Ubuntu VM 中,以使用 Gparted 和 CloneZilla 来查看它。容量约为300GB。未分配的 145GB。使用的是大约 153GB。
我想将容量缩小到 160GB 左右。这应该足以适应/dev/sdb1
和/dev/sdb2
。
顺便说一句,我尝试了 CloneZilla,但它似乎也不喜欢将容量缩小到较小的磁盘。我在 CloneZilla 中尝试了各种设置,但没有成功。
如何减少虚拟大小/容量?
And*_*edo 24
将内容从旧磁盘移动到新磁盘内:
vboxmanage clonehd "source-disk.vmdk" "new-disk.vmdk" --existing
Run Code Online (Sandbox Code Playgroud)开启虚拟机。
最后,我设法使用预安装的命令行实用程序(dd
请参阅磁盘克隆)以意想不到的简单方式解决了这个难题。如下所示,现在我的来宾操作系统中的 160GB 驱动器存储在 160GB 固定 VirtualBox vdi 文件中。
我使用以下步骤解决了它:
\n\nMSWIN7.vdi
到 Ubuntu VM 作为第二个磁盘。/dev/sda1
正在运行的 Ubuntu VM、/dev/sdb2
源磁盘MSWIN7.vdi
和/dev/sdc1
新的 vdi。/dev/sdc
。CloneZilla 为我做了这个。它没有复制数据,但确实创建了我想要的分区。当然,您可以手动执行此操作。sdb
到。该命令以 no space left 错误消息结束,这是预期的。我忽略了这一点,因为这只是未分配的空间,无法复制。sdc
dd
sudo dd if=/dev/sdb of=/dev/sdc
我认为可以为每个分区运行该命令。也许这样会更好并且不会显示错误消息。sudo dd if=/dev/sdb1 of=/dev/sdc1
和sudo dd if=/dev/sdb2 of=/dev/sdc2
。
vagrant@devops:~$ sudo dd if=/dev/sdb of=/dev/sdc\ndd: writing to \xe2\x80\x98/dev/sdc\xe2\x80\x99: No space left on device\n335544321+0 records in\n335544320+0 records out\n171798691840 bytes (172 GB) copied, 6360.3 s, 27.0 MB/s\n
Run Code Online (Sandbox Code Playgroud)\n