Linux 硬盘分区与存储管理完全指南
一份涵盖 GPT 分区、RAID、LVM、交换空间等核心技术的系统管理员的学习内容
📌 目录
- GPT 分区方案
- 管理 GPT 分区的工具
- gdisk
- wipefs
- parted
- 文件系统持久化挂载
- 综合案例:文件系统空间不足
- RAID 存储技术
- RAID 级别详解
- 管理软 RAID
- LVM 逻辑卷管理
- 基本概念与创建
- 扩展与缩减
- 快照与 RAID 逻辑卷
- Linux 交换空间管理
1. GPT 分区方案
为什么需要 GPT?
- MBR 局限:最大支持2 TiB分区/磁盘,最多15个分区。
- GPT 优势:
- 使用 8 字节(64 位)存储扇区数,支持最大18 ZiB(264×512 Byte264×512 Byte)。
- 最多128个分区(实际建议不超过 120 个,否则可能无法格式化)。
- 冗余:在磁盘头部和尾部各保存一份分区表,具备 CRC32 校验,损坏时可自动恢复。
GPT 分区表结构(LBA 视角)
| LBA 范围 | 用途 |
|---|---|
| LBA 0 | 保护性 MBR:包含引导代码和特殊标识0xEE,防止旧工具误操作。 |
| LBA 1 | GPT 表头:记录分区表位置、大小、备份 GPT 位置及 CRC32 校验码。 |
| LBA 2–33 | 分区表条目:每个 LBA 可存 4 条记录,共 128 条,每条 128 字节,记录起始扇区(64 位)。 |
2. 管理 GPT 分区的工具
gdisk
gdisk是专门管理 GPT 分区表的工具,适用于 >2T 磁盘。
基本语法
bash
gdisk [ -l ] device常用操作
查看分区表
bash
gdisk -l /dev/sdb转换 MBR → GPT(⚠️ 会清除分区数据)
bash
gdisk /dev/sdb # 交互中输入 o(创建新的空 GPT 表) # 输入 w 保存退出创建分区
bash
gdisk /dev/sdb # 输入 n 新建分区 # 分区号、起始扇区(默认)、结束扇区(如 +2G) # 选择分区类型(输入 L 查看所有类型,默认 8300 为 Linux filesystem) # 输入 w 保存更改分区名称
bash
# 交互中键入 c,选择分区号,输入新名称(如 data01)查看分区详细信息
bash
# 交互中键入 i,选择分区号删除分区
bash
# 交互中键入 d,选择分区号,w 保存wipefs
用于查看和清除磁盘上的管理信息(分区表、文件系统签名等)。
bash
# 查看磁盘上的管理信息 wipefs /dev/sdb # 清除所有管理信息(⚠️ 数据将丢失) wipefs -a /dev/sdb # 强制清除(-f) wipefs -fa /dev/sdbparted
parted同时支持 MBR 和 GPT,可交互或脚本化操作。
交互式操作示例
bash
parted /dev/sdb (parted) help # 查看帮助 (parted) unit MiB # 设置单位为 MiB (parted) print # 查看当前分区表管理 MBR 磁盘
bash
(parted) mklabel msdos # 创建 MBR 分区表 (parted) mkpart primary xfs 1 2049 # 创建主分区 (parted) resizepart 1 4097 # 调整分区大小 (parted) rm 1 # 删除分区管理 GPT 磁盘
bash
(parted) mklabel gpt # 创建 GPT 分区表 (parted) mkpart data01 xfs 1 2049 # 分区名 data01 (parted) resizepart 1 5121 # 扩展分区 (parted) rm 1 # 删除分区非交互式(脚本)操作
bash
# 设置分区表 parted /dev/sdb mklabel gpt # 创建分区(自动确认) parted /dev/sdb unit MiB mkpart data01 xfs 1 2049 # 查看 parted /dev/sdb unit MiB print注意:
parted所做的更改立即生效,无需像gdisk那样单独执行w。
3. 文件系统持久化挂载
通过/etc/fstab实现开机自动挂载。
示例(使用 UUID):
bash
blkid /dev/sdb1 # 得到 UUID="f5c35f10-...-94989fe01" mkdir /data01 echo 'UUID="f5c35f10-...-94989fe01" /data01 xfs defaults 0 0' >> /etc/fstab mount /data01 # 立即挂载 df -h /data01 # 验证/etc/fstab 字段说明:
| 字段 | 说明 |
|---|---|
| 设备 | 可用 UUID 或设备路径 |
| 挂载点 | 必须预先创建 |
| 文件系统类型 | xfs, ext4 等 |
| 挂载选项 | defaults为常用组合 |
| dump | 是否备份(0 为否) |
| fsck 顺序 | 根文件系统设为 1,其他 ext4 设为 2,XFS 设为 0 |
取消持久化挂载只需删除/etc/fstab中的对应行。
4. 综合案例:文件系统空间不足
情况一:大文件占用空间
现象:df -h显示使用率 100%,但文件数不多。
解决:使用find或du定位大文件并删除。
bash
find /myapp-1/ -size +100M du -sh /myapp-1/* | sort -rh | head -5 rm -f /myapp-1/etc/bigfile情况二:删除文件后空间未释放
原因:文件被进程占用(rm后进程仍持有句柄)。
解决:使用lsof找出进程并终止。
bash
lsof | grep deleted | grep /myapp-1 kill -9 <PID>最佳实践:先清空文件内容再删除,避免句柄残留。
bash
> /path/to/bigfile rm /path/to/bigfile情况三:大量小文件占满 inode
现象:df -h显示空间充裕,但df -i显示 inode 使用率 100%。
解决:删除大量小文件或打包归档。
bash
rm -f /myapp-2/file-0* # 批量删除 # 或将小文件合并为一个大文件 cat /myapp-2/file-{00001..10000} > merged.file5. RAID 存储技术
RAID 级别详解
| 级别 | 最少磁盘 | 容错能力 | 空间利用率 | 读性能 | 写性能 | 适用场景 |
|---|---|---|---|---|---|---|
| RAID 0 | 2 | 无 | 100% | 高 | 高 | 视频编辑、临时数据 |
| RAID 1 | 2 | 单盘故障 | 50% | 高 | 中 | 关键数据、数据库日志 |
| RAID 5 | 3 | 单盘故障 | (n-1)/n | 中 | 低 | 文件服务器、中小型数据库 |
| RAID 6 | 4 | 双盘故障 | (n-2)/n | 中 | 低 | 大容量存储、归档系统 |
| RAID 10 | 4 | 多盘(镜像组) | 50% | 高 | 中 | 数据库、虚拟化环境 |
| RAID 50 | 6 | 多盘(每组) | (n-1)/n | 高 | 中 | 大规模数据存储 |
| RAID 60 | 8 | 多盘(每组双盘) | (n-2)/n | 高 | 中 | 大型数据库、数据分析 |
管理软 RAID(mdadm)
安装 mdadm
bash
yum install -y mdadm创建 RAID 0
bash
mdadm --create /dev/md0 --level 0 --raid-devices 2 /dev/sdb /dev/sdc mkfs.xfs /dev/md0 mkdir /raid/raid0 mount /dev/md0 /raid/raid0创建 RAID 1(带热备)
bash
mdadm --create /dev/md1 --level 1 --raid-devices 2 /dev/sdb /dev/sdc # 添加热备盘 mdadm --add /dev/md1 /dev/sdd # 模拟故障 mdadm --fail /dev/md1 /dev/sdc # 移除故障盘 mdadm --remove /dev/md1 /dev/sdc创建 RAID 5
bash
mdadm --create /dev/md5 --level 5 --raid-devices 4 /dev/sdb /dev/sdc /dev/sdd /dev/sde # 添加热备 mdadm --add /dev/md5 /dev/sdf # 模拟故障 mdadm --fail /dev/md5 /dev/sdb # 扩容(添加新成员) mdadm --add /dev/md5 /dev/sdb /dev/sdg mdadm --grow /dev/md5 --raid-devices 5 # 扩展文件系统(XFS) xfs_growfs /raid/raid5删除 RAID
bash
umount /dev/mdX mdadm --stop /dev/mdX mdadm --zero-superblock /dev/sd{b..g}常用查看命令
bash
cat /proc/mdstat # 概要信息 mdadm --detail /dev/mdX # 详细信息 sar -dp 1 # 监控磁盘 I/O6. LVM 逻辑卷管理
基本概念
- PV(Physical Volume):物理卷,由磁盘或分区创建。
- VG(Volume Group):卷组,由一个或多个 PV 组成。
- LV(Logical Volume):逻辑卷,从 VG 中划分,可创建文件系统。
创建流程
bash
# 1. 创建 PV pvcreate /dev/sdb /dev/sdc /dev/sdd # 2. 创建 VG vgcreate webapp /dev/sdb vgcreate dbapp /dev/sdc /dev/sdd # 3. 创建 LV lvcreate -n webapp01 -L 5G webapp lvcreate -n data01 -L 25G dbapp # 4. 创建文件系统并挂载 mkfs.xfs /dev/webapp/webapp01 mount /dev/webapp/webapp01 /usr/share/nginx/html扩展与缩减
扩展 VG
bash
vgextend webapp /dev/sdc /dev/sdd缩减 VG(需先移走数据)
bash
pvmove /dev/sdb # 将数据迁移到其他 PV vgreduce webapp /dev/sdb扩展 LV 与文件系统
XFS(只能扩展):
bash
lvextend -L +2G /dev/webapp/webapp01 xfs_growfs /mount/point # 或一步到位 lvextend -rL 20G /dev/webapp/webapp01EXT4(可扩可缩):
bash
# 扩展 lvextend -rL 30G /dev/webapp/webapp01 # 缩减(需卸载) umount /mount e2fsck -f /dev/webapp/webapp01 resize2fs /dev/webapp/webapp01 10G lvreduce -L 10G /dev/webapp/webapp01 mount /dev/webapp/webapp01 /mount快照与 RAID 逻辑卷
创建快照(用于备份或恢复):
bash
lvcreate -s -n webapp01-snap1 -L 10G /dev/webapp/webapp01 mount /dev/webapp/webapp01-snap1 /snap_mount创建 RAID1 逻辑卷:
bash
lvcreate --type raid1 -n webapp01 -L 15G webapp修复 RAID 逻辑卷(当 PV 故障时):
bash
vgreduce --removemissing webapp --force vgextend webapp /dev/sdd lvconvert --repair /dev/webapp/webapp01 pvscan7. Linux 交换空间管理
什么是 Swap?
Swap 是磁盘上的交换空间,当物理内存不足时,内核会将不常用的内存页移至 Swap,以释放 RAM。它也是 Hibernate(休眠)功能所必需的。
查看内存与 Swap
bash
free -m # 以 MiB 显示 swapon -s # 查看已激活的交换设备Swap 大小建议
| 物理内存 | 交换空间(无休眠) | 交换空间(有休眠) |
|---|---|---|
| ≤ 2 GiB | 2×RAM | 3×RAM |
| 2–8 GiB | 1×RAM | 2×RAM |
| 8–64 GiB | ≥ 4 GiB | 1.5×RAM |
| > 64 GiB | ≥ 4 GiB | 不建议休眠 |
创建与激活 Swap
使用分区:
bash
parted /dev/sdb mklabel gpt parted /dev/sdb unit MiB mkpart swap01 linux-swap 1 2049 mkswap /dev/sdb1 swapon /dev/sdb1设置优先级(数值越大优先级越高):
bash
swapon -p 10 /dev/sdb1持久化激活(添加到/etc/fstab):
text
UUID=2bf4e179-...-b278df4acd6 swap swap pri=4 0 0激活所有 /etc/fstab 中的 Swap:
bash
swapon -a swapoff -a # 全部停用📝 总结
- GPT解决了 MBR 的容量和分区数限制,并提供冗余保护。
- gdisk和parted是管理分区的主力工具,前者专精 GPT,后者全能。
- RAID通过组合磁盘实现性能、冗余或两者兼顾,软 RAID 使用
mdadm管理。 - LVM提供灵活的存储池化能力,支持在线扩展、快照和 RAID 集成。
- Swap是内存的补充,合理配置可提升系统稳定性。
掌握这些工具和概念,你将能够从容应对 Linux 生产环境中的存储管理需求。