我有一个现有的 Ubuntu VirtualBox VM(Windows 10 主机)。它目前使用 50GB 的固定大小磁盘。根据我查看其文件系统时看到的内容判断,它目前使用了其中约 29.7GB 的空间(所以,是的,有 20.3GB 可用)。
我想使磁盘动态化,还想将此磁盘的上限设置为 35GB,以节省笔记本电脑 SSD 上的空间。我知道 vboxmanage 的clonemedium
命令,但有几个问题:
我在克隆端的安装会怎样?换句话说,它是否足够聪明,能够看到原始磁盘中有 20.3GB 的“空间”,并将克隆缩小到大小(29.7GB)?尽管原始磁盘有“可用空间”,但我是否面临数据丢失的风险?
有没有办法通过命令行或者 XML 文件来指定动态磁盘的上限?文档没有提到任何有关它的内容。我当然不希望磁盘无限增长。
答案1
将虚拟磁盘从固定磁盘转换为动态磁盘
VBoxManage.exe clonemedium disk "\path\to\source.vdi" "\path\to\destination.vdi" –variant Standard
然后在 VirtualBox 中的 VM 中,将其替换source.vdi
为destination.vdi
。
压缩磁盘
启动 Ubuntu VM 并安装
zerofree
:sudo apt install zerofree
Esc通过重新启动虚拟机并在启动时反复按下进入恢复模式
- 在 Grub 菜单中,选择“Ubuntu 高级选项”,然后按Enter
- 选择最新内核的“(恢复模式)”选项
- 选择
root
启动到 root shell 提示符 - 当提示“按 Enter 键进行维护”时,按Enter
- 要查找要归零的虚拟磁盘,请运行命令
df
- 通过命令将可用空间清零
zerofree -v /dev/sda1
(sda1
用磁盘替换) - 通过命令关闭虚拟机
halt
使用命令压缩磁盘
VBoxManage.exe modifymedium disk "\path\to\disk.vdi" --compact
节省多少空间取决于有多少空闲空间需要恢复。这将减少映像的物理大小,而不会影响其逻辑大小。
要减少客户操作系统看到的磁盘逻辑大小:
VBoxManage modifymedium disk "\path\to\disk.vdi" --resize <megabytes>
有用的参考资料: