通过调整相邻分区实现Linux根分区扩容(ext4文件系统)

通过GParted调整Linux分区大小实现根分区扩容

前言

在Linux系统使用过程中,我们可能会遇到根分区(/)空间不足的情况。本文将详细介绍如何通过GParted工具安全地调整相邻分区大小,将备份分区缩小,并将释放的空间分配给根分区,实现根分区的扩容。

环境介绍

硬件环境

  • 系统SSD:WDC PC SN530 SDBPNPZ-512G-1006
  • 数据SSD:HP SSD FX900 Pro 2TB

分区情况 (调整前)

HP SSD FX900 Pro 2TB上的分区布局如下:

分区 类型 开始扇区 结束扇区 文件系统 卷标 挂载点
/dev/nvme1n1p1 Primary 2048 1842483939 ntfs Software /media/test/Software
/dev/nvme1n1p2 Primary 1842485248 3795182914 ntfs Documents /media/test/Documents
/dev/nvme1n1p3 Primary 3795185664 3978239999 ext4 /
/dev/nvme1n1p4 Primary 3978240000 3984416767 ext4 /backup
/dev/nvme1n1p5 Primary 3984416768 4000796671 linux-swap

操作步骤

整个过程主要分为两个部分:

  1. 缩小备份分区(/dev/nvme1n1p4)
  2. 扩大根分区(/dev/nvme1n1p3)

1. 缩小备份分区并移动

首先,我们需要缩小备份分区并将其向右移动,以便为根分区腾出空间。

复制代码
操作:向右移动 /dev/nvme1n1p4 并由 2.95 GiB 缩小至 2.18 GiB

具体步骤如下:

  1. 校准分区

    • 确认分区信息
    • 起始位置:3978240000
    • 终止位置:3984416767
    • 大小:6176768 (2.95 GiB)
  2. 检查文件系统错误

    • 使用e2fsck命令检查文件系统
    • 命令:e2fsck -f -y -v -C 0 '/dev/nvme1n1p4'
    • 检查结果:文件系统正常,包含14个文件
  3. 缩小文件系统

    • 使用resize2fs命令缩小文件系统
    • 命令:resize2fs -p '/dev/nvme1n1p4' 2285568K
    • 结果:文件系统大小调整为571392个块(每块4k)
  4. 调整分区大小

    • 旧的大小:6176768 (2.95 GiB)
    • 新的大小:4571136 (2.18 GiB)
  5. 再次检查文件系统

    • 确保文件系统完整性
    • 已使用的inode:23个(0.02%,总共147168)
    • 已使用的块:48174个(8.43%,总共571392)
  6. 向右移动文件系统

    • 使用e2image命令
    • 命令:e2image -ra -p -O 822083584 '/dev/nvme1n1p4'
      ##注意此处822083584为向右偏移量字节大小,注意需要计算,不要覆盖到p5分区,
      ##单个扇区大小可通过fdisk -l 命令查看sector size数值
    • 复制了48138个块,速度约188.04 MB/s
  7. 最终调整分区位置

    • 新的起始位置:3979845632
    • 新的终止位置:3984416767
    • 新的大小:4571136 (2.18 GiB)

2. 扩大根分区

在缩小并移动备份分区后,我们可以将释放出的空间分配给根分区。

复制代码
操作:将 /dev/nvme1n1p3 由 87.29 GiB 扩大至 88.05 GiB

具体步骤如下:

  1. 校准根分区

    • 确认分区信息
    • 起始位置:3795185664
    • 终止位置:3978239999
    • 大小:183054336 (87.29 GiB)
  2. 扩大分区

    • 旧的大小:183054336 (87.29 GiB)
    • 新的大小:184659968 (88.05 GiB)
    • 增加了约0.76 GiB的空间
  3. 扩大文件系统

    • 使用resize2fs命令在线调整文件系统大小
    • 命令:resize2fs -p '/dev/nvme1n1p3'
    • 结果:文件系统大小调整为23082496个块(每块4k)
    • 注意:根分区在调整时是在线状态(已挂载)

结果分析

操作完成后,分区布局如下:

分区 类型 开始扇区 结束扇区 文件系统 卷标 挂载点
/dev/nvme1n1p1 Primary 2048 1842483939 ntfs Software /media/test/Software
/dev/nvme1n1p2 Primary 1842485248 3795182914 ntfs Documents /media/test/Documents
/dev/nvme1n1p3 Primary 3795185664 3979845631 ext4 /
/dev/nvme1n1p4 Primary 3979845632 3984416767 ext4 /backup
/dev/nvme1n1p5 Primary 3984416768 4000796671 linux-swap

通过这次操作,我们成功地:

  1. 将备份分区(/dev/nvme1n1p4)从2.95 GiB缩小到2.18 GiB
  2. 将根分区(/dev/nvme1n1p3)从87.29 GiB扩大到88.05 GiB

注意事项

  1. 备份数据:在进行任何分区操作前,务必备份重要数据,以防意外发生。
  2. 检查文件系统:操作前后检查文件系统完整性是确保数据安全的关键步骤。
  3. 在线调整:根分区的调整是在线进行的,这是ext4文件系统的一个优势。
  4. 分区对齐:GParted会自动处理分区对齐问题,确保性能最优。
  5. 空间规划:在调整分区前,要确保有足够的空间来容纳数据。

总结

通过GParted工具,我们可以安全地调整Linux分区大小,实现根分区的扩容。整个过程虽然需要一定的技术基础,但只要按照正确的步骤操作,风险是可控的。希望本文对遇到类似问题的朋友有所帮助。推荐使用Gparted图形工具进行调整,这会更方便。

参考资料

  1. GParted官方文档:https://gparted.org/documentation.php
  2. Ext4文件系统在线调整:https://ext4.wiki.kernel.org/index.php/Ext4_Howto
相关推荐
leo__5207 分钟前
自动化运维:使用Ansible简化日常任务
运维·自动化·ansible
霖0011 分钟前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
CodeWithMe40 分钟前
【Note】《Kafka: The Definitive Guide》 第九章:Kafka 管理与运维实战
运维·分布式·kafka
这我可不懂42 分钟前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇1 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º1 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
bug攻城狮1 小时前
Alloy VS Promtail:基于 Loki 的日志采集架构对比与选型指南
运维·架构·grafana·数据可视化
灋✘逞_兇2 小时前
Node.Js是什么?
服务器·javascript·node.js
kfepiza2 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash
CodeWithMe2 小时前
【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制
linux·运维·php