VisualBox虚拟机扩容硬盘及分区空间
在VisualBox管理器中可查看虚拟机的存储空间及格式,也可在终端进入VisualBox安装目录使用VBoxManager.exe工具来查看:
$ cd C:安装目录VirtualBox
$ VBoxManage.exe list hdds
UUID: 3174cfbd-2da3-4ae7-b16b-f417e6f651b6
Parent UUID: base
State: locked write
Type: normal (base)
Location: C:用户目录.dockermachinemachinesdefaultdisk.vmdk
Storage format: VMDK
Capacity: 20000 MBytes
Encryption: disabled
开始扩容,注意要先关闭虚拟机。
对于vdi格式的存储,可以直接扩容(参考下方直接使用modifyhd命令),对于vmdk格式的存储,需要先复制转换为vdi格式,扩容后可以直接使用vdi格式的硬盘,便于以后扩容:
# 使用clonehd命令复制转换格式
$ VBoxManage.exe clonehd "C:用户目录.dockermachinemachinesdefaultdisk.vmdk" "C:用户目录.dockermachinemachinesdefaultdocker.vdi" --format vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vdi'. UUID: 7ea0cb49-98b3-45c7-ba05-599fdac9f947
# 对vdi格式进行扩容,单位为M,这里我扩容到35G(注意,这种方法不能用来缩容)。
$ VBoxManage.exe modifyhd "C:用户目录.dockermachinemachinesdefaultdocker.vdi" --resize 35840
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
此时直接去管理器挂载新硬盘会提示UUID重复,需要重置一下UUID:
# 其实不带.exe后缀也能使用VBoxManage
$ VBoxManage internalcommands sethduuid "C:用户目录.dockermachinemachinesdefaultdocker.vdi"
UUID changed to: b3202d65-0097-4e93-833c-4e2b463dcf89
此时去管理器的虚拟机设置界面,找到存储,删除之前的vmdk盘片(不会真的删除,文件夹中还存在),添加盘片——添加已有磁盘,然后在目录中找到刚扩容的vdi格式磁盘添加即可。
PS:如果之前有做过快照的(在磁盘文件所在目录下或其default子目录中会有一个Snapshots文件夹,看里面有没有快照文件),还需要对快照做处理,因为本文操作不涉及,需要的可以自行搜索。
现在在虚拟机的设置界面查看存储可以发现磁盘的虚拟空间已经到了35G。重新启动虚拟机试试。
我们输入fdisk -l命令查看磁盘空间:
$ fdisk -l
Disk /dev/sda: 35 GB, 37580963840 bytes, 73400320 sectors
4568 cylinders, 255 heads, 63 sectors/track
Units: cylinders of 16065 * 512 = 8225280 bytes
Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
/dev/sda1 123,0,1 1023,254,63 1975995 40949684 38973690 18.5G 83 Linux
/dev/sda2 0,1,1 122,254,63 63 1975994 1975932 964M 82 Linux swap
Partition table entries are not in disk order
从结果的第一行我们可以看到/dev/sda: 35 GB,磁盘总空间确实在35G,但再看下面/dev/sda1,依然还是18.5G,没有扩容,怎么回事?
其实这是因为新增的磁盘空间并没有被挂载上去,这类似于我们给电脑加了个新存储条,但没分区是一回事。
此时我们可以选择将新增的空间添加到新分区,也可以选择增加到老分区去扩充其空间。在此我的需求是新增老分区/dev/sda1的空间,但其实都可以通过下面的方法做到。
现在我们需要用到Gparted这个工具。
先去其官网下载其iso文件:http://gparted.sourceforge.net/download.php,我下载的版本是gparted-live-1.0.0-3-i686.iso。
现在再次关闭虚拟机,我们要做的是用这个iso文件来启动虚拟机,并分配新的空间。
使用虚拟机管理器,进入设置的“存储”标签,添加一个IDE控制器,然后在IDE控制器下选择添加光驱,从已有磁盘中选择我们刚才下载的gparted-live-1.0.0-3-i686.iso。
然后去“系统”标签下,将光驱的启动顺序拉到最前面。重新启动虚拟机(带界面)。现在能看到,虚拟机通过Gparted启动了。
一路回车,全用默认推荐设置,打开Gparted,我们可以看到我们目前已有的分区和未被分区的空间。这里我们可以右键选择修改一个已有分区的大小(可以拉取到最大,将空闲空间全部使用),也可以将空闲空间放入一个新分区。 操作界面参考这两篇博客: https://www.cnblogs.com/zhcncn/articles/2948508.html https://www.cnblogs.com/xueweihan/p/5923937.html
操作完后提交,然后关闭虚拟机,去掉存储中的IDE控制器,再重新打开就会以之前的系统和磁盘来启动了。现在再来检查一下空间:
$ fdisk -l
Disk /dev/sda: 35 GB, 37580963840 bytes, 73400320 sectors
4568 cylinders, 255 heads, 63 sectors/track
Units: cylinders of 16065 * 512 = 8225280 bytes
Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
/dev/sda1 123,0,1 1023,254,63 1975995 73400319 71424325 34.0G 83 Linux
/dev/sda2 0,1,1 122,254,63 63 1975994 1975932 964M 82 Linux swap
Partition table entries are not in disk order
可以看到/dev/sda1分区已经扩大到34G了,全部利用了我添加的空间,原本分区中的内容也还存在着
相关文章
- 一时兴起,自己动手开发了个IDEA插件!
- HarmonyOS之时钟FA卡片开发样例实践
- 为什么说集中管理数据是个坏主意?
- 谷歌人工智能算法RankBrain运行原理解析
- 哪种编程语言最容易出bug?
- 如何用Netty写一个高性能的分布式服务框架?
- 从一个优质开源项目来看前端架构
- 安全断言标记语言SAML2.0的认证机制与重要性
- 科技初创企业遭遇IPO寒冬
- 商业项目中最受欢迎的7种编程语言
- 一份完整的亿级消息中心架构方案!
- 用算法揭示玛雅文字的奥秘
- 一文看懂HarmonyOS服务卡片运行原理和开发方法
- 自动化:DevSecOps成功关键所在
- 有了这个开源项目,不会 Web 开发也能让数据“动”起来!
- 这九项传统编程语言的招聘岗位需求仍然坚挺
- 微服务架构下的系统集成
- 设计模式系列之迭代器模式
- 超全面的 Kubernetes 容器网络技能,运维看后都说好
- 几行代码实现老照片上色复原!