一、虚拟机物理空间扩容
首先要在Virtualbox中进行设置,给虚拟机再多分配点硬盘空间。比如我的虚拟机,本来分配的是30G,我想要调成80G。于是,要利用Virtualbox自带的工具VboxManage,该工具位于安装目录C:\Program Files\Oracle\VirtualBox下。为了使用方便,建议将该目录加入到系统的环境变量中,否则每次都要跳转到该目录下才能使用,比较麻烦。至于如何加入环境变量,此处就不解释了,不懂的请自行百度。
请注意,本步骤无需启动虚拟机。如果已经启动了的,请关掉退出。
1、获取虚拟机目标
C:\Users\leon>VboxManage.exe list hdds
UUID: c078b5bd-2340-470a-ab82-9536d123ba36
Parent UUID: base
State: created
Type: normal (base)
Location: E:\V_VtSystem\A_Systems\Ubuntu 12.04_HUD.vdi
Storage format: VDI
Capacity: 30720 MBytes
Encryption: disabled
2、增加硬盘空间
C:\Users\leon>VBoxManage.exe modifyhd c078b5bd-2340-470a-ab82-9536d123ba36 --resize 81920
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
done!
3、查看执行结果
C:\Users\leon>VboxManage.exe list hdds
UUID: c078b5bd-2340-470a-ab82-9536d123ba36
Parent UUID: base
State: created
Type: normal (base)
Location: E:\V_VtSystem\A_Systems\Ubuntu 12.04_HUD.vdi
Storage format: VDI
Capacity: 81920 MBytes
Encryption:
可以看出,Virtualbo给目标虚拟机分配的硬件空间已经提升到了80G。不过,这仅仅是Virtualbox这端分配的值提升了,这个数据还没传达到虚拟机里面去,虚拟机里还要另外设置。
二、Ubuntu磁盘分区表重写
1、查看当前磁盘分区情况
leon@Ubuntu:~$ sudo df -h
[sudo] password for leon:
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 28G 26G 995M 97% /
udev 1.5G 12K 1.5G 1% /dev
tmpfs 301M 780K 301M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.5G 152K 1.5G 1% /run/shm
dir_esd 293G 79G 214G 27% /mnt/share/esd
dir_hud 293G 79G 214G 27% /mnt/share/hud
leon@Ubuntu:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 84.4 GB, 85424509440 bytes
255 heads, 83 sectors/track, 7832 cylinders, total 125829120 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ca15e
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 * 2048 58720255 29359104 83 Linux
/dev/sda2 58720256 161634815 51457280 83 Linux
/dev/sda3 121634816 125829119 2097152 82 Linux 交换 / Solaris
2、关闭swap分区(一般不需要,没有交换区)
leon@Ubuntu:~$ free -m
total used free shared buffers cached
Mem: 3009 829 2180 0 27 334
-/+ buffers/cache: 468 2541
Swap: 0 0 0
leon@Ubuntu:~$ swapoff -a
leon@Ubuntu:~$ free -m
total used free shared buffers cached
Mem: 3009 829 2180 0 27 334
-/+ buffers/cache: 467 2541
Swap: 0 0 0
3、删除现有磁盘分区信息
leon@Ubuntu:~$ sudo fdisk /dev/sda
命令(输入 m 获取帮助): p
Disk /dev/sda: 84.4 GB, 84424509440 bytes
255 heads, 83 sectors/track, 7832 cylinders, total 125829120 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ca15e
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 * 2048 58720255 29359104 83 Linux
/dev/sda2 58720256 161634815 51457280 83 Linux
/dev/sda3 161634816 165829119 2097152 82 Linux 交换 / Solaris
命令(输入 m 获取帮助): d
分区号 (1-4): 1
命令(输入 m 获取帮助): d
分区号 (1-4): 2
命令(输入 m 获取帮助): p
Disk /dev/sda: 84.4 GB, 84424509440 bytes
255 heads, 83 sectors/track, 7832 cylinders, total 125829120 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ca15e
设备 启动 起点 终点 块数 Id 系统
/dev/sda3 161634816 165829119 2097152 82 Linux 交换 / Solaris
可以看出,前2个分区已经消失了。
4、重新建立新的分区信息
命令(输入 m 获取帮助): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (1-4,默认为 1): 1
起始 sector (2048-125829119,默认为 2048):
将使用默认值 2048
Last sector, +扇区 or +size{K,M,G} (2048-121634815,默认为 121634815):
将使用默认值 121634815
命令(输入 m 获取帮助): p
Disk /dev/sda: 84.4 GB, 84424509440 bytes
255 heads, 83 sectors/track, 7832 cylinders, total 125829120 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ca15e
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 2048 161634815 80816384 83 Linux
/dev/sda3 161634816 165829119 2097152 82 Linux 交换 / Solaris
可以看出,新的分区信息建立完毕,主分区已经有了80G的空间了。但是,此时还没完全结束,还要把分区信息写入到分区表里去。
5、分区信息写入分区表(可能提示 是否要覆盖ext4签名,选择N,不覆盖!)
命令(输入 m 获取帮助): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
6、重启系统并生效
立即重启系统,重启完后,执行下述命令,让系统完成分区表的刷新和重载。
leon@Ubuntu:~$ sudo df -h
[sudo] password for leon:
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 28G 11G 16G 39% /
udev 1.5G 12K 1.5G 1% /dev
tmpfs 301M 808K 301M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.5G 76K 1.5G 1% /run/shm
dir_esd 293G 80G 214G 27% /mnt/share/esd
dir_tmp 293G 80G 214G 27% /mnt/share/tmp
leon@Ubuntu:~$ sudo resize2fs /dev/sda1
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 5
The filesystem on /dev/sda1 is now 20446976 blocks long.
leon@Ubuntu:~$ sudo df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 77G 11G 64G 14% /
udev 1.5G 12K 1.5G 1% /dev
tmpfs 301M 808K 301M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.5G 124K 1.5G 1% /run/shm
dir_esd 293G 80G 214G 27% /mnt/share/esd
dir_tmp 293G 80G 214G 27% /mnt/share/tmp
leon@Ubuntu:~$
leon@Ubuntu:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ca15e
设备 启动 起点 终点 块数 Id 系统
/dev/sda1 2048 163577855 81787904 83 Linux
/dev/sda3 163577856 167772159 2097152 82 Linux 交换 / Solaris
三、参考
参考:https://blog.youkuaiyun.com/LEON1741/article/details/56494797