vmware中扩容ubuntu的根目录磁盘空间

最近给Mac(2014 mid)换了个SSD,从256GB换成了Intel 760p的1TB SSD,再也不用管磁盘空间问题了,速度也比以前快了很多。

原装SSD的速度:

更新intel 760p 1TB之后的速度:

方法网上很多,也很简单,time machine备份原系统到移动硬盘,买转接口,买SSD,拆机,安装,开机按command+r进入time machine恢复系统。遇到了未格式化的SSD,不识别的问题,不过进入terminal敲fdisk命令发现可识别,于是命令行下分区加格式化就搞定。升级catalina最新版本Mac系统后,未遇到休眠不能唤醒的问题。倒是遇到Mac系统不再兼容32倍程序,导致很多软件不能运行,需要更新到最新64位版本。

本文主要记录下给虚拟机扩容的步骤。虚拟机是20GB的ubuntu server,一直不够用,现在宿主机器扩成了1TB,自然空间就不是问题了,就给虚拟机也扩下容,目标是将20GB扩成30GB。

首先肯定是在vmware里的Disk里去设置一下,但显然启动虚拟机之后,ubuntu不会识别扩展的空间,因为分区信息已经记录在了虚拟磁盘的开头(MBR)。网上大多数的做法是再创建一个分区,然后将分区设置为开机启动挂载,以我的例子就是将扩展的10GB创建一个新的扩展分区,格式化,然后挂载,这非常好理解,但是我希望直接扩展根目录,即/,原系统原文件都保持不变。这就比较难理解了,在没有其他系统或者内存系统(加载镜像ISO)的帮助下,一个系统在运行过程中怎么去修改自身呢。听起来就像既不搬家,又要装修房子的感觉。

发现还真是有办法的,借鉴网上的方案,步骤大体是:关闭系统swap功能;删除磁盘分区;重新分区确保swap跟原来一样大,同时swap分区还是在磁盘末尾;重启后扩展root分区;更新swap的UUID标识。

首先查看下当前的磁盘分区情况:

可以看到,sda是30GB,但是分区是19GB的root主分区,加975GB的swap分区,最好拍照留存,接下来的计算中会用到。

swapoff来关闭系统交换分区功能,free查看,swap都为0,接着fdisk进入交互模式,开始删除原有分区:

从p命令输出可看,分区删除完毕。开始创建新分区:

新的root主分区(primary partition)的大小特别注意,这里要预留末尾的swap分区,所以是总大小减swap分区大小,即为新的root分区大小:62914559 - 1996800 = 60917759

如上图,接着创建swap分区,选项保持默认,结果就是预留的975MB。注意:这里可能会有一个疑问,为什么swap分区要保持跟原来一样大小,这里我没有深究,也没有尝试,可能不一样也ok。

接着设置分区2为Linux swap / Solaris类型,最终得到的分区结果如下图:

然后通过w,将新的分区信息写入磁盘,这个时候出现一个红色错误信息,让人心里一紧张,但紧接着下面就有说明:The kernel still uses the old table. The new table will be used at the next reboot. 立马就放心了,只需要重启,新设置就会生效。

重启比以往要慢很多,如图:

接着进入之后,发现swap分区挂载失败,是因为新的swap分区有新的UUID,跟原来/etc/fstab里写的不一致了,需要使用mkswap命令,将原来的UUID写到swap分区上去。网上有说使用blkid命令查询新的UUID,然后修改fstab,但我遇到的情况是,新的swap没有设置新的UUID,UUID是空的。设置好之后,就可以swapon来开启交互分区了:

最后一步,也是我认为最神奇的一步,居然有resize2fs这个命令,感觉作用就是校正了MBR里的分区table,将孔洞都去掉的操作。简单查了一下,Linux内核和ext3/ext4配合才支持了这么牛逼的操作,不光能扩展,还能缩小磁盘,这么看来我应该还可以再从30GB缩回到原来的20GB去。最终结果如下:

特别注意:我这里,新的分区跟原来有点不一样,原来是swap在扩展分区里,而现在swap也是主分区。如果没记错的话,MBR里只有四个分区信息位置,即可以设置四个主分区,考虑到分区个数可能会多于4个,就可以将一个位置记录为扩展分区,然后在扩展分区表里,再记录更多的分区信息,有点指针指向二级索引的意思。总之,如果分区不超过4个,就可以全是主分区,不添加扩展分区表。

发表于 2020年07月19日 10:06   评论:0   阅读:3373  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo