玩命加载中 . . .

利用gparted扩展根分区


前言

lab有一套Jenkins环境,是一台VM环境,最初安装系统的时候,整个系统分区只有20G的容量,后来发现这个容量实在太小,经常因根分区满导致jenkins任务没法正常执行。

后台通过VMware vSphere Client扩大了这个分区空间(扩大到60G):

root@ubuntu-16:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   20G  0 disk /iso
sdb      8:16   0   60G  0 disk 
├─sdb1   8:17   0   16G  0 part /
├─sdb2   8:18   0    1K  0 part 
└─sdb5   8:21   0    4G  0 part [SWAP]
sr0     11:0    1 1024M  0 rom  
root@ubuntu-16:~# 

但这多出的40G,如何分配给根/分区呢?

环境准备

为此,准备了一个测试环境,进行/分区扩容验证。

安装Ubuntu16.04,系统分区是60G的容量:

root@ubuntu16:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   60G  0 disk 
├─sda1   8:1    0   59G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  975M  0 part [SWAP]
sr0     11:0    1 1024M  0 rom  
root@ubuntu16:~# 

成功安装后,关机,通过VMware vSphere Client扩大vdisk空间,从60G扩大到80G:

root@ubuntu16:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0   59G  0 part /
├─sda2   8:2    0    1K  0 part 
└─sda5   8:5    0  975M  0 part [SWAP]
sr0     11:0    1  873M  0 rom  
root@ubuntu16:~# 

并在根目录下,创建了一个文件,计算md5值:

root@ubuntu16:/# echo 'check' > test.txt 
root@ubuntu16:/# md5sum test.txt 
5e9b13ce8f6c99f3f510756be58d15fe  test.txt
root@ubuntu16:/# 

借助gparted live ISO进行修改

gparted可以调整分区大小,且支持无损,但是对于/根目录的分区无法调整,但是它提供ISO工具,可以启动后进行调整。

下载了一个gparted-live-0.29.0-1-amd64.iso,下载链接:

链接:https://pan.baidu.com/s/1I_JWP7-HKHfNM44mlt6Vow 提取码:moq4

修改VM启动顺序

在将gparted-live-0.29.0-1-amd64.iso作为VM “CD/DVD设备”条件下,重新启动VM,进入BIOS界面,设置操作如下图所示:

进入Boot页面,使用“-/+”按钮,将“CD-ROM Driver”设置为第一启动顺序,保存后退出,如下图所示:

使用 GParted Live 安装介质启动你的系统

VM重新开机后,会弹出如下界面:

这里选择 “GParted Live (Default settings)” ,并敲击回车按键。

键盘选择

默认情况下,它选择第二个选项,按下回车即可。

语言选择

默认情况下,它选择 “33” 美国英语,按下回车即可。

模式选择(图形用户界面或命令行)

默认情况下,它选择 “0” 图形用户界面模式,按下回车即可。

加载 GParted Live 屏幕

现在,GParted Live 屏幕已经加载,它显示我以前创建的分区列表:

删除系统磁盘非根分区

这里系统磁盘对应分区是sda,下面有swap分区(sda2, sda5),需要删除sda2和sda5,因为只有连续的分区才能合并(未分配的分区中间间隔着sda2和sda5)。

合并分区

选择根分区,点击“Resize/Move”,将20G空闲空间合并到sda1分区。

重新创建swap分区,并格式化为linux-swap

这里新建一个分区,文件系统选择linux-swap,并格式化为swap分区

生效设置

进行了上面的操作后,点击“Apply”等待生效,gparted处理过程如下图所示:

成功后,会在界面上显示”complete“字样

然后VM断连GParted Live 安装介质,重启启动VM,VM在启动过程中会出现如下信息(稍微等待一点时间即可,无需人工干预):

效果确认

最终效果如下:

root@ubuntu16:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0   79G  0 part /
└─sda2   8:2    0    1G  0 part 
sr0     11:0    1 1024M  0 rom  
root@ubuntu16:~# 
root@ubuntu16:/# cat test.txt 
check
root@ubuntu16:/# md5sum test.txt 
5e9b13ce8f6c99f3f510756be58d15fe  test.txt
root@ubuntu16:/# 

文件md5值,在扩容前后一样.

是否还有其他方法?

网上有人说在OS里安装gparted,直接执行gparted来扩展分区,下文将验证其可行性。

安装gparted

因为要使用gparted来进行根分区的扩容,需要安装gparted;如果已经安装了,忽略此步骤。

apt-get install gparted

如果后面使用XManager还有问题,可以在此ubuntu节点上安装如下一个工具:

apt install x11-xserver-utils

通过XManager访问此节点

需要找一台Windows安装XManager,非本文重点,忽略。

XManager上创建一个XStart

新建一个XStart,输入此节点的IP地址、root账号和密码,以及需要执行的命令(gparted),保存即可。之后点击这个新建的XStart,会出现有一个auth文件没有,关掉后重新打开这个XStart再次登录即可。

如果直接在终端执行gparted命令时,会出现如下错误:

root@ubuntu16:/# gparted

(gpartedbin:2462): Gtk-WARNING **: cannot open display:

查看进入gparted界面效果

成功通过XStart进入可视化界面后,会看到已经使用的空间都带有锁标记,如下图所示:

这时是不能对分区进行操作的,网上有人说需要先卸载(unmount)或者停止(swapoff),然后才能进行Resize操作。

尝试swapoff

root@ubuntu16:/# swapoff -a
root@ubuntu16:/# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk
sda      8:0    0   80G  0 disk
├─sda1   8:1    0   59G  0 part /
└─sda5   8:5    0  975M  0 part
sr0     11:0    1  873M  0 rom
root@ubuntu16:/#

上面显示已经swapoff了,此时重新进入gparted界面,显示如下:

尝试对根分区进行容量扩展,发现没法扩展;尝试先umount,发现也没法umount掉这个根分区,因为会显示为Busy(其实想想,如果umount掉了,系统都没法使用了吧,更不用谈当前gparted操作了),从这里,基本上把swapoff和umount两条路给堵死了,说明行不通。

还有人说用制作Ubuntu启动U盘试用模式下进行的,不过我的环境是虚机,就没尝试这个方法。

先还原环境吧,swapon回来;

root@ubuntu16:/# swapon -a
root@ubuntu16:/# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk
sda      8:0    0   80G  0 disk
├─sda1   8:1    0   59G  0 part /
└─sda5   8:5    0  975M  0 part [SWAP]
sr0     11:0    1  873M  0 rom
root@ubuntu16:/#

结论

直接通过gparted,只能对非根分区进行扩容/缩容,如果想对根分区进行扩容/缩容,可以通过gparted live ISO进行。


文章作者: Gavin Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gavin Wang !
  目录