Linux 硬盘分区管理完全指南:GPT 分区、gdisk、parted、持久化挂载与软 RAID 实战
文章目录
- Linux 硬盘分区管理完全指南:GPT 分区、gdisk、parted、持久化挂载与软 RAID 实战
- 前言
- 一、GPT 分区方案详解
- 1\.1 为什么选择 GPT
- 1\.2 GPT 分区表结构
- 二、gdisk 工具:GPT 分区专用管理工具
- 2\.1 查看磁盘分区表
- 2\.2 MBR 转 GPT 分区表
- 2\.3 创建 GPT 分区
- 2\.4 修改分区名称
- 2\.5 查看分区详细信息
- 2\.6 删除分区
- 三、wipefs 工具:分区表清理工具
- 3\.1 查看磁盘签名
- 3\.2 清除磁盘分区表
- 四、parted 工具:MBR/GPT 通用分区工具
- 4\.1 基础交互命令
- 4\.2 管理 MBR 磁盘
- 创建 MBR 分区表
- 创建主分区
- 调整分区大小
- 删除分区
- 4\.3 管理 GPT 磁盘
- 创建 GPT 分区表
- 创建 GPT 分区
- 4\.4 非交互式操作(脚本化)
- 五、文件系统持久化挂载
- 5\.1 环境准备
- 5\.2 /etc/fstab 配置详解
- 5\.3 取消持久化
- 六、磁盘空间不足排查实战
- 6\.1 场景 1:大文件占用空间
- 6\.2 场景 2:文件已删除但空间未释放
- 6\.3 场景 3:inode 耗尽
- 七、Linux 软 RAID 技术详解
- 7\.1 主流 RAID 级别对比
- 7\.2 RAID0 配置实战
- 7\.3 RAID1 配置实战
- 7\.4 RAID5 配置实战
前言
在 Linux 运维工作中,硬盘分区管理是最基础也最核心的技能之一。随着大容量硬盘普及,传统 MBR 分区方案的局限性愈发明显,GPT 分区逐渐成为主流;同时 RAID 技术也为数据可靠性、存储性能提供了成熟的解决方案。
本文将从理论到实操,系统讲解 GPT 分区结构、gdisk/parted 分区工具、文件系统持久化挂载、磁盘空间问题排查,以及 mdadm 管理软 RAID 的完整流程,覆盖日常运维 90% 以上的磁盘管理场景。
一、GPT 分区方案详解
1.1 为什么选择 GPT
MBR(主引导记录)是传统分区方案,存在两个先天瓶颈:
容量限制:最大仅支持 2TiB 磁盘,无法适配大容量硬盘
分区数量限制:最多 4 个主分区,即便通过扩展分区拆分逻辑分区,总数也存在上限
GPT(全局唯一标识分区表)是 UEFI 固件标准下的新一代分区格式,彻底解决了 MBR 的局限:
最大支持 18ZiB 的磁盘 / 分区容量(使用 64 位存储扇区总数)
默认支持最多 128 个主分区,无需扩展分区概念
自带分区表冗余(头部 + 尾部各存一份),损坏后可恢复
内置 CRC 校验,可检测分区表完整性
1.2 GPT 分区表结构
GPT 分区表按 LBA(逻辑块地址)划分,核心分为三个区域:
LBA0:保护性 MBR
前 446 字节保留引导代码区域,兼容传统 BIOS 启动
分区表区域标记为
0xEE特殊类型,老版本磁盘工具识别后不会误修改分区,起到保护作用
LBA1:GPT 表头
记录分区表自身的位置、大小
记录备份 GPT 分区表的位置(磁盘尾部)
存储分区表 CRC 校验值,用于校验数据完整性
LBA2 ~ LBA33:分区条目区
共 32 个 LBA 存储分区记录,每个 LBA 存放 4 条分区记录
每条分区记录占 128 字节,默认共 128 个分区条目
每条记录用 64 位存储分区扇区总数,支持超大分区
注意:实际生产中分区数量不建议超过 120 个,部分文件系统工具可能存在兼容性问题。
二、gdisk 工具:GPT 分区专用管理工具
gdisk 是专门用于 GPT 分区的命令行工具,操作逻辑与 fdisk 类似,是管理大容量 GPT 磁盘的首选工具。
2.1 查看磁盘分区表
gdisk-l/dev/sdb如果磁盘当前是 MBR 格式,gdisk 会提示内存转换,仅用于查看不会修改磁盘。
2.2 MBR 转 GPT 分区表
警告:转换操作会清空原有分区表,数据将无法直接访问,操作前务必备份数据!
gdisk /dev/sdb进入交互模式后执行:
输入
o:创建空的 GPT 分区表输入
p:预览当前分区表状态输入
w:写入更改并退出输入
Y:确认危险操作
2.3 创建 GPT 分区
进入 gdisk 交互模式:
gdisk /dev/sdb操作步骤:
输入
n:新建分区分区编号:直接回车使用默认值(从 1 开始)
起始扇区:直接回车,默认从 2048 扇区开始(保证 4K 对齐)
结束扇区:输入
+2G表示创建 2GB 分区,支持 K/M/G/T/P 单位分区类型:直接回车默认
8300(Linux 文件系统)
常用分区类型代码:
| 代码 | 含义 |
|---|---|
| 8300 | Linux 普通文件系统 |
| 8200 | Linux 交换分区 |
| 8e00 | Linux LVM 物理卷 |
| ef00 | EFI 系统分区 |
| fd00 | Linux RAID |
创建完成后输入p查看分区,确认无误输入w保存。
2.4 修改分区名称
GPT 分区支持自定义分区名,便于管理:
输入
c选择分区号
输入新名称(如
data01)p查看效果
2.5 查看分区详细信息
输入
i选择分区号
可查看分区 GUID、唯一标识、起止扇区、属性标记、分区名称等完整信息。
2.6 删除分区
输入
d选择分区号
p确认后w保存
三、wipefs 工具:分区表清理工具
wipefs 用于查看、清除磁盘上的文件系统 / 分区表签名,是重置磁盘的常用工具。
3.1 查看磁盘签名
wipefs /dev/sdb3.2 清除磁盘分区表
警告:该操作会清除分区表元数据,数据将无法直接访问,谨慎操作。
# 清除未挂载磁盘的分区表wipefs-a/dev/sdb不建议使用
-f强制清除已挂载磁盘的分区表,会导致系统异常。
四、parted 工具:MBR/GPT 通用分区工具
parted 同时支持 MBR 和 GPT 两种分区方案,支持交互式和非交互式两种模式,适合脚本自动化分区。
注意:parted 的大部分操作会实时写入磁盘,无需额外保存,操作前务必确认磁盘。
4.1 基础交互命令
进入交互模式:
parted/dev/sdb常用基础命令:
help:查看帮助print:查看当前分区表unit MiB:设置显示单位为 MiB(推荐,避免进制混淆)quit:退出
4.2 管理 MBR 磁盘
创建 MBR 分区表
mklabel msdos# 输入 y 确认创建主分区
mkpart# 分区类型:primary# 文件系统类型:xfs# 起始位置:1# 结束位置:2049调整分区大小
# 将1号分区末尾调整到4097MiBresizepart14097删除分区
rm14.3 管理 GPT 磁盘
创建 GPT 分区表
mklabel gpt# 输入 y 确认创建 GPT 分区
mkpart# 分区名称:data01# 文件系统类型:xfs# 起始位置:1# 结束位置:2049扩容、删除操作与 MBR 模式完全一致。
4.4 非交互式操作(脚本化)
无需进入交互模式,单条命令完成操作,适合编写自动化脚本。
# 创建GPT分区表parted/dev/sdb mklabel gpt# 查看分区(指定单位为MiB)parted/dev/sdb unit MiB print# 创建分区parted/dev/sdb unit MiB mkpart data01 xfs12049# 扩容分区parted/dev/sdb unit MiB resizepart15121# 删除分区parted/dev/sdbrm1五、文件系统持久化挂载
分区创建后需要格式化文件系统并挂载才能使用,默认挂载重启后失效,需配置/etc/fstab实现开机自动挂载。
5.1 环境准备
# 创建GPT分区parted/dev/sdb mklabel gptparted/dev/sdb unit MiB mkpart data01 xfs12049# 格式化为xfs文件系统mkfs.xfs /dev/sdb1# 如磁盘已有文件系统,强制格式化mkfs.xfs-f/dev/sdb15.2 /etc/fstab 配置详解
fstab 每行由 6 个字段组成,用空格分隔:
| 字段序号 | 说明 |
|---|---|
| 第 1 字段 | 设备标识,推荐使用 UUID(稳定不随盘符变化) |
| 第 2 字段 | 挂载点目录,需提前创建 |
| 第 3 字段 | 文件系统类型,如 xfs、ext4、swap |
| 第 4 字段 | 挂载参数,默认defaults即可 |
| 第 5 字段 | dump 备份标记,0 表示不备份 |
| 第 6 字段 | fsck 检查顺序,xfs 设为 0;根分区 ext4 设为 1,其他 ext4 设为 2 |
操作步骤:
- 获取分区 UUID
blkid /dev/sdb1输出示例:
/dev/sdb1: UUID="f5c35f10-0274-45af-b044-73694989fe01" TYPE="xfs" PARTLABEL="data01" PARTUUID="432d7d79-1a08-4429-bf38-7ab1444a0ab9"- 创建挂载点
mkdir/data01- 编辑 fstab 文件
vim/etc/fstab末尾添加一行:
UUID=f5c35f10-0274-45af-b044-73694989fe01 /data01 xfs defaults 0 0- 验证挂载
# 读取fstab进行挂载mount/data01# 查看挂载状态df-h/data01配置完成后建议重启系统,验证自动挂载是否生效。
5.3 取消持久化
删除/etc/fstab中对应行,执行umount /data01卸载即可。
六、磁盘空间不足排查实战
生产环境中磁盘空间告警是高频问题,主要分为三类典型场景。
6.1 场景 1:大文件占用空间
现象:磁盘使用率接近 100%,整体容量被占满。
排查方法:
# 方法1:查找指定目录下大于100M的文件find/myapp-1-size+100M# 方法2:按目录大小排序,定位大目录du-s/myapp-1/*|sort-n|tail-5解决:确认文件无用后,使用rm删除即可释放空间。
6.2 场景 2:文件已删除但空间未释放
现象:执行 rm 删除大文件后,df 查看空间没有释放。
原因:文件被运行中的进程打开占用,删除后内核不会立即释放磁盘空间。
排查:
lsof|grepdelete|grep/myapp-1解决:
正常方式:终止占用进程
kill 进程号安全方式:先清空文件内容再删除
> bigfile && rm -f bigfile,避免进程异常
6.3 场景 3:inode 耗尽
现象:磁盘容量还有剩余,但无法创建新文件,提示设备上没有空间。
原因:大量小文件占满了 inode(每个文件占用一个 inode)。
排查:
df-i/myapp-2解决:
清理无用小文件释放 inode
合并大量小文件减少 inode 占用
拓展:彻底擦除硬盘数据可使用
dd if=/dev/zero of=/dev/sdb逻辑填充,或物理消磁。
七、Linux 软 RAID 技术详解
RAID(独立磁盘冗余阵列)通过多块磁盘组合,实现性能提升、数据冗余。Linux 下通过 mdadm 工具实现软 RAID,无需额外硬件卡。
7.1 主流 RAID 级别对比
| RAID 级别 | 最小磁盘数 | 容错能力 | 空间利用率 | 读取性能 | 写入性能 | 适用场景 |
|---|---|---|---|---|---|---|
| RAID0 | 2 | 无 | 100% | 很高 | 很高 | 视频剪辑、临时缓存,性能优先、数据可丢失 |
| RAID1 | 2 | 允许坏 1 块 | 50% | 高 | 低 | 系统盘、关键数据,可靠性优先 |
| RAID5 | 3 | 允许坏 1 块 | (N-1)/N | 较高 | 一般 | 文件服务器、中小型业务,均衡性价比 |
| RAID6 | 4 | 允许坏 2 块 | (N-2)/N | 较高 | 较低 | 大容量存储、长时间运行业务 |
| RAID10 | 4 | 每组允许坏 1 块 | 50% | 高 | 中 | 数据库、虚拟化平台,性能与可靠性兼顾 |
| RAID50 | 6 | 每组允许坏 1 块 | (N - 组数)/N | 高 | 中 | 大规模数据存储 |
| RAID60 | 8 | 每组允许坏 2 块 | (N-2 * 组数)/N | 高 | 中 | 超大规模存储,极高可靠性需求 |
7.2 RAID0 配置实战
RAID0 条带化,无冗余,读写性能最高。
# 安装工具yuminstall-ymdadm# 创建RAID0,2块磁盘mdadm--create/dev/md0--level0--raid-devices2/dev/sdb /dev/sdc# 查看状态cat/proc/mdstatmdadm--detail/dev/md0# 格式化挂载mkfs.xfs /dev/md0mkdir-p/raid/raid0mount/dev/md0 /raid/raid0# 删除RAIDumount/dev/md0mdadm--stop/dev/md0mdadm--zero-superblock /dev/sdb /dev/sdcRAID0 无法添加新成员盘,无法强制标记磁盘故障。
7.3 RAID1 配置实战
RAID1 镜像,完整数据冗余,容量减半。
# 创建RAID1mdadm--create/dev/md1--level1--raid-devices2/dev/sdb /dev/sdc# 提示时输入 yes 确认# 查看同步进度mdadm--detail/dev/md1|grepResync# 加热备盘mdadm--add/dev/md1 /dev/sdd# 模拟磁盘故障mdadm--fail/dev/md1 /dev/sdc# 热备盘会自动顶替并开始重建# 移除故障盘mdadm--remove/dev/md1 /dev/sdc# 删除RAIDumount/dev/md1mdadm--stop/dev/md1mdadm--zero-superblock /dev/sd{b..d}7.4 RAID5 配置实战
RAID5 分布式奇偶校验,性价比最高的冗余方案。
# 创建RAID5,4块数据盘mdadm--create/dev/md5--level5--raid-devices4/dev/sd{b..e}# 等待重建完成后格式化挂载mkfs.xfs /dev/md5mkdir/raid/raid5mount/dev/md5 /raid/raid5# 加热备盘mdadm--add/dev/md5 /dev/sdf# 模拟故障mdadm--fail/dev/md5 /dev/sdb# 热备盘自动顶替重建# RAID扩容:增加成员盘mdadm--add/dev/md5 /dev/sdgmdadm--grow/dev/md5 --raid-devices5# 等待reshape完成后,扩容文件系统xfs_growfs /raid/raid5# 删除RAIDumount/dev/md5mdadm--stop/dev/md5mdadm--zero-superblock /dev/sd{b..g}监控磁盘读写负载可使用
sar -dp 1查看 % util、读写扇区等指标。