首先,缩小根分区需要对根分区进行操作,所以需要启动光盘/U盘,云服务器需要进入救援系统或者自行挂载ISO启动
有数据丢失风险,操作需谨慎
进入救援系统
进入救援系统,用fdisk -l
查看分区情况
举例说明,例如我有一个磁盘/dev/vda
,共10G。有vda1
,vda2
两个分区,分区格式为ext4,大小分别为9G,1G。目标是将vda1缩小为8G。
resizefs调整文件系统大小
首先用e2fsck -f /dev/vda1
检查一下文件系统错误
之后用resize2fs /dev/vda1 7.5G(此处应比目标大小稍小,不然可能会在fdisk调整分区表的时候出问题;而且一定要比分区内现有文件大,否则肯定会损失文件)
fdisk删除并新建分区
接下来使用fdisk /dev/vda
输入p
回车,查看分区
Device Boot Start End Sectors Size Id Type
/dev/vda1 *** *** *** 8G 83 Linux
/dev/vda2 *** *** *** 1G 82 Linux
d
回车
Partition number (1-2, default 2):
输入1
,删除分区1
n
回车
Partition type
p primary (1 primary, 0 extended, 1 free)
e extended (container for logical partitions)
默认p
回车
Using default response p.
Partition number (1,3, default 1):
默认1
回车
First sector (2048-20971519, default 2048):
默认回车
Last sector, +/-sectors or +/-size{K,M,G,T,P} (***):
输入+8G
,回车
Do you want to remove the signature? [Y]es/[N]o:
这里我选的N
,应该没什么影响吧(大概)
输入p
查看分区结果
然后w
回车写入分区表
再次使用resizefs
最后再使用resize2fs /dev/vda1
,分区回自动从7.5G调整到8G
完成,可以重启进入系统尝试了
总结要点
不能在线调整,必须使用U盘启动或者云服务器的救援系统;第一步resize2fs的大小要稍小于目标大小;最后再次使用resizefs不指定大小就会自动调整到fdisk里面指定的分区大小