200字
Linux 根分区大小修改
2026-01-15
2026-01-15

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(磁盘),这样会破坏原分区结构,务必注意。

进入后按以下顺序输入命令(输入后按回车,注意大小写):

  1. 输入p:查看分区表,再次确认根分区(/dev/nvme0n1p3)的起始扇区,确保与之前记录一致。

  2. 输入d:删除原根分区(仅删除分区表记录,不会删除数据),若有多个分区,会提示选择分区号,输入对应数字即可。

  3. 输入n:新建分区,按提示完成配置:

    • 分区类型:默认p(主分区),直接回车。

    • 分区号:默认,回车。

    • 起始扇区:必须输入之前记录的69208064(关键!错填会导致数据丢失)。

    • 结束扇区:输入计算好的488638463,回车

  4. 输入p:再次查看分区表,确认新分区的大小、起始/结束扇区是否正确。

  5. 输入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下的文件),则说明操作成功。

评论