Linux根分区大小修改
想压缩Linux根分区腾出空间建立新的分区。但分区调整属于高风险操作,很容易导致Linux数据丢失。
对文件系统和分区的任何操作,都有丢失数据的风险,建议先备份关键数据!
制作启动介质
原Linux系统运行时,根分区承载着系统内核、正在运行的进程等核心资源,系统会锁定分区,禁止任何可能破坏数据的分区结构修改。
Live CD/USB 独立于硬盘系统,能进行后续分区操作。
下载Linux镜像,用Rufus(Windows)或BalenaEtcher(跨平台)写入U盘。
启动电脑时选择从U盘启动,进入Ubuntu试用模式后,打开终端,若系统自动挂载需先卸载分区:
# 卸载根分区(替换为自己的根分区设备名)
umount /dev/nvme0n1p3
检查并修复文件系统
缩小分区前必须检查文件系统完整性,避免因文件错误导致数据损坏:
e2fsck -f /dev/nvme0n1p3
若出现错误提示,按提示输入y修复即可,全部修复完成后再进行下一步。
计算扇区的方法
查看分区挂载与容量:df -h
查看文件系统类型:df -T
原根分区/dev/nvme0n1p3容量920GB,需缩小到200GB,例如起始扇区为69208064(实操时需替换为自己的起始扇区)。
分区大小的本质是扇区范围的划分,Linux中默认扇区大小为512字节,核心换算公式:
1GB ≈ 2097152扇区(计算逻辑:1024×1024×1024 ÷ 512 = 2097152)
本文目标大小200GB,计算过程:
-
200GB对应的总扇区数:200 × 2097152 = 419430400扇区
-
结束扇区 = 起始扇区 + 总扇区数 - 1(减1是因为扇区从0开始计数)
-
代入起始扇区69208064:69208064 + 419430400 - 1 = 488638463
用fdisk调整分区表
fdisk是Linux自带的分区工具,这里需操作磁盘设备(/dev/nvme0n1),而非单个分区:
# 进入fdisk操作界面(替换为自己的磁盘设备名)
fdisk /dev/nvme0n1
不要直接对分区操作:很多新手会误执行
fdisk /dev/nvme0n1p3(分区),而非fdisk /dev/nvme0n1(磁盘),这样会破坏原分区结构,务必注意。
进入后按以下顺序输入命令(输入后按回车,注意大小写):
-
输入
p:查看分区表,再次确认根分区(/dev/nvme0n1p3)的起始扇区,确保与之前记录一致。 -
输入
d:删除原根分区(仅删除分区表记录,不会删除数据),若有多个分区,会提示选择分区号,输入对应数字即可。 -
输入
n:新建分区,按提示完成配置:-
分区类型:默认p(主分区),直接回车。
-
分区号:默认,回车。
-
起始扇区:必须输入之前记录的69208064(关键!错填会导致数据丢失)。
-
结束扇区:输入计算好的488638463,回车。
-
-
输入
p:再次查看分区表,确认新分区的大小、起始/结束扇区是否正确。 -
输入
w:保存分区表,此时会提示“设备包含ext4签名,是否移除?”,输入N(不移除)——移除签名会导致系统无法识别原有数据。
保存后退出fdisk,分区表调整完成。
缩小文件系统
此时只是调整了分区表的范围,文件系统还处于原大小,需用resize2fs将文件系统缩放到新分区大小:
# 缩小ext4文件系统到新分区大小(自动适配分区表设置的200GB)
resize2fs /dev/nvme0n1p3
验证结果
挂载调整后的分区,查看大小是否符合预期:
# 创建临时挂载点并挂载
mkdir /mnt/test
mount /dev/nvme0n1p3 /mnt/test
# 查看分区大小
df -h /mnt/test
若显示容量约200GB,且能正常访问原有数据(如/mnt/test/home下的文件),则说明操作成功。