Linux存储管理实战_从GPT分区到LVM逻辑卷缩减
Linux 存储管理实战:从 GPT 分区到 LVM 逻辑卷缩减
课堂笔记整理 | 涵盖 GPT 分区、RAID 存储、LVM 逻辑卷管理及文件系统扩缩容
目录
一、GPT 分区管理
1.1 GPT 分区方案
GPT(GUID Partition Table)是运行在 UEFI 固件系统上硬盘分区表的标准。
| 特性 | MBR | GPT |
|---|---|---|
| 最大容量 | 2 TiB | 18 ZiB |
| 最大分区数 | 15 | 128 |
| 分区表冗余 | 无 | 有 |
GPT 分区表结构:
- LBA0:保护性 MBR,存放第一阶段启动引导程序,标识
0xEE表示 GPT 格式 - LBA1:GPT 表头记录,记录分区表位置、大小、CRC32 校验码及备份位置
- LBA2-33:记录分区信息,每 LBA 提供 4 组分区记录,默认共 128 组
⚠️ 注意:虽然 GPT 最大支持 128 个分区,但实际超过第 120 个可能出现无法格式化的情况。
1.2 gdisk 工具
gdisk 用于管理 GPT 分区方案的磁盘,主要用于超过 2T 的磁盘。
基本语法:
gdisk [ -l ] device
常用操作流程:
# 查看分区表
gdisk -l /dev/sdb
# 交互式管理
gdisk /dev/sdb
交互命令:
| 命令 | 功能 |
|---|---|
o |
创建新的空 GPT 分区表 |
n |
添加新分区 |
d |
删除分区 |
c |
更改分区名称 |
i |
显示分区详细信息 |
p |
打印分区表 |
w |
保存并退出 |
q |
不保存退出 |
创建分区示例:
gdisk /dev/sdb
# n → 回车(分区号) → 回车(起始扇区) → +2G(大小) → 回车(默认8300)
# c → 1 → data01 (修改分区名)
# p (查看)
# w → Y (保存)
1.3 wipefs 工具
用于查看和清除磁盘管理信息。
# 查看磁盘管理信息
wipefs /dev/sdb
# 清除未挂载磁盘的分区表
wipefs -a /dev/sdb
# 强制清除(谨慎使用)
wipefs -fa /dev/sdb
⚠️ 数据无价,操作需谨慎,最好提前备份。
1.4 parted 工具
parted 既可以管理 MBR 分区,也可以管理 GPT 分区,支持交互式和非交互式操作。
交互式操作:
parted /dev/sdb
# 常用命令
(parted) help # 查看帮助
(parted) print # 查看分区表
(parted) unit MiB # 设置单位为 MiB
(parted) mklabel msdos # 设置 MBR 分区表
(parted) mklabel gpt # 设置 GPT 分区表
(parted) mkpart # 创建分区
(parted) resizepart # 调整分区大小
(parted) rm # 删除分区
非交互式操作(推荐用于脚本):
# 设置 MBR 分区表
parted -s /dev/sdb mklabel msdos
# 创建主分区(MBR)
parted -s /dev/sdb unit MiB mkpart primary 1 2049
# 设置 GPT 分区表
parted -s /dev/sdb mklabel gpt
# 创建分区(GPT,带名称)
parted -s /dev/sdb unit MiB mkpart data01 xfs 1 2049
# 扩展分区
parted -s /dev/sdb unit MiB resizepart 1 5121
# 删除分区
parted -s /dev/sdb rm 1
# 查看分区表
parted -s /dev/sdb unit MiB print
二、文件系统持久化挂载
环境准备
parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb unit MiB mkpart data01 xfs 1 2049
mkfs.xfs /dev/sdb1
/etc/fstab 配置
/etc/fstab 每行包含六个字段:
| 字段 | 说明 |
|---|---|
| 1 | 设备(UUID 或设备路径) |
| 2 | 挂载点 |
| 3 | 文件系统类型(xfs/ext4) |
| 4 | 挂载选项(defaults) |
| 5 | dump 备份标记 |
| 6 | fsck 检查顺序(XFS 设为 0) |
配置示例:
# 获取 UUID
blkid /dev/sdb1
# 编辑 /etc/fstab
vim /etc/fstab
# 添加:UUID="xxx" /data01 xfs defaults 0 0
# 立即挂载
mount /data01
# 或
mount /dev/sdb1
取消持久化挂载
删除 /etc/fstab 中对应条目即可。
三、综合案例:文件系统空间不足
情况1:大量大文件占用空间
# 查找大于 100M 的文件
find /myapp-1/ -size +100M
# 或按目录统计
du -sh /myapp-1/* | sort -n | tail -5
# 删除大文件
rm -f /myapp-1/etc/bigfile
情况2:删除文件后空间未释放
原因:被删除的文件仍有进程在使用。
# 查找被删除但仍被占用的文件
lsof | grep delete | grep /myapp-1
# 终止对应进程
kill <PID>
# 重新查看空间
df -h /myapp-1/
💡 建议:清理大文件时,先使用重定向清空文件内容,再删除文件。
情况3:大量小文件耗尽 inode
原因:文件系统中 inode 使用完了。
# 查看 inode 使用情况
df -i /myapp-2
# 删除大量小文件
rm -f /myapp-2/file-0*
# 或合并为小文件
cat /myapp-2/file-{00001..10000} > file-00001
四、Linux RAID 存储技术
4.1 RAID 技术概述
RAID(Redundant Array of Independent Disks)独立磁盘冗余阵列,将多个磁盘有机组合,以较低成本获得与大容量磁盘相当的容量、性能和可靠性。
实现方式:
| 类型 | 特点 | 成本 |
|---|---|---|
| 软 RAID | 由操作系统和 CPU 完成 | 低 |
| 硬 RAID | 专用 RAID 控制芯片,不占用 CPU | 高 |
| 软硬混合 RAID | 有 RAID 控制芯片,但无 I/O 处理芯片 | 中 |
4.2 RAID 级别详解
| RAID级别 | 最小磁盘数 | 容错能力 | 磁盘空间开销 | 读取速度 | 写入速度 |
|---|---|---|---|---|---|
| RAID 0 | 2 | 无 | 0% | 高 | 高 |
| RAID 1 | 2 | 单个磁盘 | 50% | 高 | 低 |
| RAID 5 | 3 | 单个磁盘 | 1 / N | 中 | 低 |
| RAID 6 | 4 | 两个磁盘 | 2 / N | 中 | 低 |
| RAID 10 | 4 | 多个磁盘 | 50% | 高 | 中 |
| RAID 50 | 6 | 多个磁盘 | 1 / N | 高 | 中 |
| RAID 60 | 8 | 多个磁盘 | 50% | 高 | 中 |
RAID 0(条带化)
- 原理:数据条带化分散存储,无冗余
- 优点:高性能、成本效益好
- 缺点:无冗余,一块盘坏全部数据丢失
- 适用:视频编辑、大型数据库、实时流媒体
RAID 1(镜像)
- 原理:数据完全复制到多个磁盘
- 优点:数据冗余、高可用性、读取性能提升
- 缺点:成本高、写入性能略低
- 适用:关键数据存储、数据库服务器、文件服务器
RAID 5(分布式校验)
- 原理:数据条带化 + 分布式奇偶校验
- 优点:性能增强、数据冗余、成本效益好
- 缺点:写入性能受限、重构期间有数据完整性风险
- 适用:文件服务器、数据库服务器、小型企业环境
RAID 6(双重校验)
- 原理:数据条带化 + 双重奇偶校验
- 优点:更高级别冗余,允许两块盘同时故障
- 缺点:写入性能更低、成本更高
- 适用:大容量存储、长时间运行应用、虚拟化环境
RAID 10(镜像+条带)
- 原理:RAID 1 + RAID 0 的组合
- 优点:高性能、数据冗余、可靠性高、故障恢复快
- 缺点:成本高、空间利用率低(50%)
- 适用:数据库服务器、虚拟化环境、关键业务应用
4.3 管理软 RAID
Linux 使用 mdadm 实用程序创建和管理软件 RAID。
管理 RAID 0
# 创建 RAID0(2块盘)
mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sd{b,c}
# 查看 RAID 状态
cat /proc/mdstat
mdadm --detail /dev/md0
# 格式化挂载
mkfs.xfs /dev/md0
mkdir -p /raid/raid0
mount /dev/md0 /raid/raid0
# 删除 RAID
umount /dev/md0
mdadm --stop /dev/md0
mdadm --zero-superblock /dev/sd{b,c}
⚠️ RAID 0 不能增加新成员盘,也不能强制故障成员盘。
管理 RAID 1
# 创建 RAID1
mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sd{b,c}
# 输入 yes 确认
# 等待同步完成(查看进度)
watch -n 1 cat /proc/mdstat
# 格式化挂载
mkfs.xfs /dev/md1
mkdir /raid/raid1
mount /dev/md1 /raid/raid1
# 增加热备盘
mdadm --add /dev/md1 /dev/sdd
# 模拟故障
mdadm --fail /dev/md1 /dev/sdc
# 查看状态(sdd 会自动顶替并重建)
mdadm --detail /dev/md1
# 移除故障盘
mdadm --remove /dev/md1 /dev/sdc
# 删除 RAID
umount /dev/md1
mdadm --stop /dev/md1
mdadm --zero-superblock /dev/sd{b..d}
管理 RAID 5
# 创建 RAID5(4块活动盘,3块数据+1块校验)
mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sd{b..e}
# 等待构建完成
watch -n 1 cat /proc/mdstat
# 格式化挂载
mkfs.xfs /dev/md5
mkdir /raid/raid5
mount /dev/md5 /raid/raid5
# 增加热备盘
mdadm --add /dev/md5 /dev/sdf
# 模拟故障
mdadm --fail /dev/md5 /dev/sdb
# 移除故障盘
mdadm --remove /dev/md5 /dev/sdb
# RAID5 扩容(从4块扩到5块)
mdadm --add /dev/md5 /dev/sdb /dev/sdg
mdadm --grow /dev/md5 --raid-devices 5
# 等待 reshape 完成
watch -n 1 cat /proc/mdstat
# 扩容文件系统
xfs_growfs /raid/raid5
# 删除 RAID
umount /dev/md5
mdadm --stop /dev/md5
mdadm --zero-superblock /dev/sd{b..g}
# 重构 RAID(stop 后、zero-superblock 前)
mdadm --assemble /dev/md5 /dev/sd{b..g}
⚠️ RAID 5 只能在正常状态下扩容,降级及重构时不允许扩容。
五、Linux 逻辑卷管理(LVM)
5.1 LVM 基本概念
LVM(Logical Volume Manager)将若干个磁盘或分区连接为一个整块的卷组,形成存储池。
| 概念 | 英文 | 说明 |
|---|---|---|
| 物理卷 | PV (Physical Volume) | LVM 的基本存储逻辑块,通过块设备创建 |
| 卷组 | VG (Volume Group) | 逻辑的存储空间,由一个或多个 PV 组成 |
| 逻辑卷 | LV (Logical Volume) | 从 VG 中创建的逻辑空间,可类比为硬盘分区 |
| 物理扩展 | PE (Physical Extend) | PV 的最小存储单元,默认 4 MiB |
| 逻辑扩展 | LE (Logical Extend) | LV 的最小存储单元,通常一个 LE 对应一个 PE |
LVM 优点:
- 灵活扩展和缩减文件系统空间
- 文件系统可跨多个硬盘,适合超大容量
- 支持镜像卷,保证数据冗余
- 支持快照,保留某一时刻数据
管理流程:
物理卷(PV) → 卷组(VG) → 逻辑卷(LV) → 文件系统
5.2 创建物理卷、卷组、逻辑卷
创建物理卷
# 创建单个 PV
pvcreate /dev/sdb
# 创建多个 PV
pvcreate /dev/sd{c,d}
# 查看
pvs
pvdisplay /dev/sdb
创建卷组
# 创建包含单个 PV 的 VG
vgcreate webapp /dev/sdb
# 创建包含多个 PV 的 VG
vgcreate dbapp /dev/sd{c,d}
# 查看
vgs
vgdisplay dbapp
创建逻辑卷
# 在 webapp 中创建 5G 的逻辑卷
lvcreate -n webapp01 -L 5G webapp
# 在 dbapp 中创建跨硬盘的 25G 逻辑卷
lvcreate -n data01 -L 25G dbapp
# 查看
lvs
lvdisplay /dev/dbapp/data01
逻辑卷设备名格式:
/dev/vgname/lvname/dev/mapper/vgname-lvname/dev/dm-N
创建文件系统
mkfs.xfs /dev/webapp/webapp01
mkdir -p /usr/share/nginx/html
mount /dev/webapp/webapp01 /usr/share/nginx/html
清理
umount /dev/webapp/webapp01
lvremove /dev/webapp/webapp01 /dev/dbapp/data01
vgremove webapp dbapp
pvremove /dev/sd{b..d}
5.3 扩展和缩减卷组
扩展卷组
# 添加新 PV 到 VG
vgextend webapp /dev/sd{c,d}
缩减卷组
# 查看 PV 使用状态
pvs
# 将数据从 /dev/sdb 移动到其他 PV
pvmove /dev/sdb
# 或指定目标
pvmove /dev/sdb /dev/sdd
# 确认空闲后从 VG 中移除
vgreduce webapp /dev/sdb
⚠️ 删除 PV 前确保该 PV 不在使用中,否则报错
Physical volume still in use。
5.4 扩展和缩减逻辑卷
扩展逻辑卷
# 增加 2G
lvextend -L +2G /dev/webapp/webapp01
# 直接设置为 15G
lvextend -L 15G /dev/webapp/webapp01
# 查看
lvs /dev/webapp/webapp01
缩减逻辑卷
lvreduce -L -2G /dev/webapp/webapp01
# 或
lvreduce -L 10G /dev/webapp/webapp01
# 输入 y 确认
5.5 扩展和缩减文件系统
扩展 XFS 文件系统
XFS 只支持扩展,不支持缩减。
# 方法1:分两步
lvextend -L 15G /dev/webapp/webapp01
xfs_growfs /usr/share/nginx/html
# 方法2:一步完成(-r 自动扩展文件系统)
lvextend -rL 20G /dev/webapp/webapp01
扩展 EXT4 文件系统
EXT4 支持扩展和缩减。
# 扩展逻辑卷
lvextend -L 25G /dev/webapp/webapp01
# 扩展文件系统
resize2fs /dev/webapp/webapp01
# 或一步完成
lvextend -rL 30G /dev/webapp/webapp01
缩减 EXT4 文件系统
注意事项:
- 不支持在线缩减,必须卸载后缩减
- 缩减后的容量不能小于当前已用容量
缩减流程:
- 卸载文件系统
e2fsck检测文件系统resize2fs缩减文件系统lvreduce缩减逻辑卷- 重新挂载验证
# 第一步:卸载
umount /usr/share/nginx/html
# 第二步:检测文件系统
e2fsck -f /dev/webapp/webapp01
# 第三步:缩减文件系统到 10G
resize2fs /dev/webapp/webapp01 10G
# 第四步:缩减逻辑卷到 10G
lvreduce -L 10G /dev/webapp/webapp01
# 输入 y 确认
# 第五步:重新挂载验证
mount /dev/webapp/webapp01 /usr/share/nginx/html
df -h /usr/share/nginx/html
💡 补充说明:如果文件系统构建在磁盘分区上(非 LVM),扩展和缩减文件系统容量的操作相同。
总结
| 操作 | XFS | EXT4 |
|---|---|---|
| 扩展文件系统 | ✅ xfs_growfs |
✅ resize2fs |
| 缩减文件系统 | ❌ 不支持 | ✅ resize2fs |
| 在线扩展 | ✅ 支持 | ✅ 支持 |
| 在线缩减 | — | ❌ 必须卸载 |
通过 LVM,我们可以灵活地管理存储空间,实现跨硬盘的文件系统、动态扩缩容、数据冗余和快照备份,大大提升了 Linux 存储管理的灵活性和可靠性。
本文整理自 Linux 存储管理课堂笔记,涵盖 GPT 分区、RAID 技术、LVM 逻辑卷管理及文件系统扩缩容等核心内容。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)