通过调整相邻分区实现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
相关推荐
fridayCodeFly31 分钟前
:ref 和 this.$refs 的区别及 $ 的作用
linux·运维·服务器
Hum8le3 小时前
小科普《DNS服务器》
运维·服务器
阿俊仔(摸鱼版)5 小时前
Ubuntu上安装Docker
linux·ubuntu·docker
故事与他6455 小时前
Thinkphp(TP)框架漏洞攻略
android·服务器·网络·中间件·tomcat
yunqi12155 小时前
【负载均衡系列】nginx负载高怎么排查
运维·nginx·负载均衡
IYU_5 小时前
VulnHub-Web-Machine-N7通关攻略
服务器·安全·web安全·网络安全
BigBookX6 小时前
在 Ubuntu 中配置开机自启动脚本并激活 Anaconda 环境
linux·运维·ubuntu
kfepiza6 小时前
netplan是如何操控systemd-networkd的? 笔记250324
linux·网络·笔记·ubuntu
yi个名字7 小时前
Linux中的yum和vim工具使用总结
linux·运维·vim
m0_490240677 小时前
qt实现一个简单http服务器和客户端
服务器·qt·http