解决虚拟机环境下使用Ubuntu自带的图形化工具创建的磁盘分区无法扩容的问题
先来个结论:不要使用 Ubuntu 自带的图形化磁盘工具创建分区,磁盘分区操作请使用 fdisk 等工具。
正文太长不想看的记住这个结论就行,有兴趣的接着看。
首先介绍一下磁盘的基本配置,vmware中创建了两块磁盘,一个20GB的,用做系统盘,后续不打算扩容。另一个,做数据盘,打算后续随着数据增长进行扩容,下文为了方便演示新建一个1GB的磁盘来模拟我的真实操作。
创建数据盘时,发现 Ubuntu 自带一个图形化磁盘工具,所以就偷懒了直接用它新建分区,没有使用 fdisk 命令。
新增的数据盘未初始化前是这样的
点击下方的齿轮,选择格式化
文件系统选择EXT4,其他也没啥可以配置的,如图所示,点点鼠标就行
格式化完成后是这样的,点击三角可以挂载磁盘,用起来一切正常
使用一段时间后磁盘空间不足,于是打开虚拟机的硬盘设置进行扩容,这里演示扩容为2GB
打开虚拟机查看数据盘的容量,可以看到图形工具中显示磁盘大小为2GB,而且有1GB空闲,但使用df命令看到磁盘空间只有1GB,刚刚扩容出来的1GB看不到也无法使用
点击数据盘的设置发现resize选项是灰色的,根本无法进行修改分区大小的操作
使用系统盘进行对比,可以看到resize是正常的,可以进行修改分区大小的操作
之后就是网上找资料,国内就不用说了,来来回回也就是那么几篇文章,没有任何用处,越看越火大,真想顺着网线过去把这些抄袭文章的人狠狠揍一顿。国外也找不到相关资料,甚至连一个相似的案例都找不到。问GPT就更没用了,给出的答案甚至不如某度。总之我得自己想办法解决这个扩容问题。
解决磁盘分区问题就离不开DiskGenius,我们先打开虚拟磁盘看看,很明显刚刚扩容的1GB空间并没有划分到原来的分区中
直接用DiskGenius调整分区大小
选中虚拟机里面的这个磁盘分区
很遗憾,无法扩容
所以现在的问题是:这究竟是一个什么样的磁盘分区连DiskGenius都无法扩容?
答案是使用Ubuntu自带的图形化磁盘工具创建的分区没有分区表!我已验证Ubuntu18和20都存在这个问题,其他版本未验证。
下面是数据盘的前两个扇区,可以看到全是0
这是我物理机磁盘的前两个扇区,第一个扇区是保留兼容的MBR扇区,可以看到结结尾处0x55和0xAA的标记,第二个扇区是GPT扇区,可以看到前几个字节为EFI PART。
解决的方法很简单:不要使用Ubuntu自带的图形化磁盘工具创建的分区。喜欢用命令行的,就用fdisk初始化磁盘,记住要新建一个GPT分区表(MBR逐步淘汰,不建议用),然后再创建分区,具体操作网上资料很多,这里略过。不想用命令行的也可以在vmware里面新建虚拟磁盘后使用DiskGenius进行初始化并分区。这样创建的磁盘分区就可以正常使用Ubuntu自带的图形化磁盘工具调整容量了。
总之我被Ubuntu自带的图形化磁盘工具狠狠坑了一把,谁能想到它竟然不会自动创建分区表,甚至都不提供创建分区表的选项。相比之下windows的操作真的太友好了,新硬盘插电脑上格式化时就会创建MBR分区表,傻瓜式操作,保证上手就能用。
因为不能无损扩容,这件事情的后续是我重新创建了一个虚拟磁盘,老老实实用fdisk创建GPT分区表并建立分区,然后将数据盘的内容全部复制到新数据盘上。
希望这篇文章对遇到相同问题的朋友能有所帮助。