问题和环境说明
环境:
- 主机:Ubuntu 15.10
- 客户机:Windows 7 x64
- VirtualBox:5.0.10
- 虚拟机磁盘类型:VDI(VirtualBox磁盘映像)
问题:
在虚拟机里,win7系统C盘空间不足,且虚拟机的磁盘映像为动态磁盘映像VDI,可以后期修改磁盘大小,问题是如何扩大原本的磁盘文件?
简要步骤
- 如果原先的磁盘文件为VMDK格式的,则需要使用VBox管理工具转换为VDI格式
- 使用VBox管理工具调整磁盘大小,以便后面的分区扩容
- 使用GParted工具修改文件系统,将空闲的空间分配给磁盘分区
详细步骤
- 查看虚拟机的磁盘的文件格式,如果不是*.vdi,则将磁盘格式从*.vmdk转为*.vdi。打开Ubuntu终端,进入VBox磁盘文件所在文件夹
说明:虚拟机所在的磁盘文件位置查看方式为设置-存储下的明细位置,因为我的系统之前是做了快照,所以不仅在明细位置存在一个*.vdi文件,而且在磁盘文件所在目录下的Snapshots文件夹也存在多个备份的*.vdi文件,我修改的是位于Snapshots目录下最新的*.vdi文件
$ cd VirtualBox\ VMs/win7_linux/Snapshots/
$ VBoxManage clonehd --format VDI "vmdk磁盘文件名" "要创建的vdi文件名"
- 重新调整文件大小,打开终端进行*.vdi文件所在目录。例如,调整磁盘文件大小为60GB,即61440MB
$ VBoxManage modifyhd "vdi文件名" --resize 61440
- 对于原先磁盘文件格式为vmdk的,则需要重新设置虚拟机的磁盘位置,将其路径改为新创建的磁盘文件*.vdi。虚拟机-设置-存储-控制器:SATA-右键*.vmdk文件-删除盘片-添加虚拟硬盘-选择你最新创建的*.vdi文件
- 到http://gparted.sourceforge.net/download.php*下载"gparted-live-x.xx.x-x-ixxx.iso"文件,并且将其iso文件加载到虚拟机的光驱。虚拟机-设置-存储-控制器-添加最新下载的\.iso文件
- 运行虚拟机,虚拟机将会从光驱文件启动。一直选择Enter直到进入GPart系统桌面。启动gpart程序,默认是开机自启动的
- 按照下面的方法扩展分区:
- 选择你要扩容的分区,右键点击Move/Resize
- 简单的可以直接拖动上面的滑动块,将右边的所有空闲分区分配给当前分区。
- 灵活地,可以调整下面的数字,第一个为前面要空闲的大小,中间为新的分区大小,后面为新分区后面空闲分区大小。
- 点击上面工具栏的Apply按钮
- 关闭虚拟机,并将*.iso光驱文件移除
- 重新打开虚拟机,如果你的客户机为win7系统,则直接进入win7系统,系统会自动识别新增的分区,并且在自动合并后重启;否则进行第7步
- 如果客户机为Linux系统则需要手动合并新分区
- lvm vgdisplay
$ lvm vgdisplay
=> Free PE / Size 122880 / 480.00 GiB
- lvm lvdisplay
$ lvm lvdisplay /dev/VolGroup/lv_root
=> Current LE 3978
- 计算上面值的和,此时,122880 + 3978 = 126858,126858将会在下一条命令中用到
- lvm lvresize
$ lvm lvresize -l 126858 /dev/VolGroup/lv_root
- resize2fs
$ resize2fs /dev/VolGroup/lv_root
- lsblk
$ lsblk
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 500G 0 disk
+¦sda1 8:1 0 500M 0 part /boot
L¦sda2 8:2 0 499.5G 0 part
+¦VolGroup-lv_root (dm-0) 253:0 0 480G 0 lvm /
L¦VolGroup-lv_swap (dm-1) 253:1 0 4G 0 lvm [SWAP]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 通过创建一个大的文件检查文件系统是否扩容成功
$ fallocate -l 480G /test_file
- 移除测试文件
$ rm -rif /test_file