Linux磁盘管理完全指南(分区、文件系统、挂载与LVM实战)
作者:着迷不白
前言
在 Linux 系统中,磁盘管理是每个运维人员和开发者的必修课。无论你是在本地虚拟机中练习,还是管理生产环境中的服务器,理解磁盘分区、文件系统创建、挂载、软硬链接以及 LVM 逻辑卷管理,都能让你在面对存储需求时游刃有余。
本文将基于 RHEL 9 环境,系统讲解以下内容:
- 磁盘设备命名规则
- 分区方案(MBR vs GPT)与分区工具(fdisk、parted)
- 文件系统创建(ext4、xfs)
- 临时挂载与永久挂载(/etc/fstab)
- 软链接与硬链接
- LVM 逻辑卷的创建与扩容
本文适合 Linux 初学者及有一定经验的系统管理员,建议动手实践每一个命令。
一、磁盘基础概念
1.1 块设备与文件系统
在 Linux 中,磁盘、U 盘等存储设备被称为块设备,可以使用 lsblk 命令查看:
[root@lab ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 100G 0 disk ├─sda1 8:1 0 512M 0 part /boot └─sda2 8:2 0 99.5G 0 part / sr0 11:0 1 9.8G 0 rom /run/media/root/RHEL-9-3-0-BaseOS-x86_64
文件系统 是存储数据的方式和组织结构。只有创建了文件系统,磁盘才能存储文件。
常见文件系统类型:
类型 | 说明 |
ext2/ext3/ext4 | Linux 传统本地文件系统 |
xfs | RHEL 7+ 默认文件系统,高性能 |
NTFS | Windows 主流文件系统 |
NFS / CIFS | 网络文件系统,用于共享 |
iso9660 | 光盘文件系统 |
1.2 磁盘设备命名规则
Linux 根据磁盘接口类型命名设备文件:
接口类型 | 设备名示例 |
IDE |
|
SCSI / SATA |
|
NVMe |
|
光盘 |
|
虚拟化(KVM) |
|
LVM 逻辑卷 |
|
二、分区方案与分区工具
2.1 为什么要分区?
- 隔离:系统盘和数据盘分离,避免系统故障影响数据
- 灵活管理:不同分区可使用不同文件系统
- 便于备份:单独分区可独立备份恢复
典型的分区结构:
/boot分区:存放引导文件/分区:根文件系统,存放系统文件
2.2 MBR vs GPT
特性 | MBR | GPT |
最大分区大小 | 2TB | 8ZB |
主分区数量 | 最多 4 个(或 3 主+1扩展) | 无限制(通常 128 个) |
分区表备份 | 仅磁盘头部 | 头部和尾部均有备份 |
兼容性 | 老设备兼容好 | 现代设备首选 |
建议:无特殊需求时,优先选择 GPT 分区方案。
2.3 分区工具
①parted– 强大且危险(即时生效)
交互式创建 MBR 分区:
[root@lab ~]# parted /dev/sdb (parted) mklabel msdos # 设置 MBR 方案 (parted) mkpart primary ext2 1MiB 1024MiB (parted) print (parted) quit
创建 GPT 分区:
(parted) mklabel gpt (parted) mkpart primary 1MiB 1024MiB
非交互式创建(适用于脚本):
# 警告:不要指定分区方案,直接创建分区 parted /dev/sdb mkpart primary ext2 1MiB 1024MiB
⚠️ parted 命令没有保存步骤,回车即生效,操作需谨慎!
②fdisk– 最常用,支持 GPT
# 查看分区表和方案 fdisk -l /dev/sdb # 进入交互式操作 fdisk /dev/sdb
交互式常用命令:
命令 | 作用 |
| 创建新分区 |
| 删除分区 |
| 打印分区表 |
| 保存并退出 |
| 不保存退出 |
| 创建 GPT 方案 |
| 创建 MBR 方案 |
| 修改分区类型标识 |
创建分区示例:
Command (m for help): n
Partition type: p primary (1 primary, 0 extended, 3 free)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-41943039, default 2048): # 直接回车默认
Last sector, +sectors or +size{K,M,G}: +1G
Command (m for help): w③ 内核分区表刷新
有时创建或删除分区后,lsblk 仍显示旧信息,需要刷新内核分区表:
# 安全方式(只刷新指定分区) partx -d /dev/sdb1 /dev/sdb # 或(有风险,建议生产环境慎用) partprobe /dev/sdb
三、文件系统创建
3.1 使用mkfs命令
# 创建 ext4 文件系统 mkfs.ext4 /dev/sdb1 # 或 mkfs -t ext4 /dev/sdb1 # 创建 xfs 文件系统 mkfs.xfs /dev/sdb2 mkfs -t xfs /dev/sdb2
3.2 文件系统结构:inode 与 block
- inode:存储文件元数据(权限、大小、时间戳、指向 block 的指针)
- block:实际存放文件数据,默认大小 4KB
- inode 数量决定文件系统最大文件数
# 查看文件系统 inode 使用情况 df -i
3.3 超级块(superblock)故障修复
如果挂载时出现 bad superblock 错误,可以使用 e2fsck 修复 ext 文件系统:
e2fsck /dev/sdb1
修复过程会提示修复问题,按 y 确认即可。此操作不会导致数据丢失。
四、文件系统挂载与卸载
4.1 临时挂载(mount)
# 通过设备路径挂载 mount -t ext4 /dev/sdb1 /mnt/ext4 # 通过 UUID 挂载 mount -U 6855bad0-c6ae-4693-b713-5c3cec8cab27 /mnt/ext4 # 通过卷标挂载(需先设置卷标) e2label /dev/sdb1 ext4-demo mount -L ext4-demo /mnt/ext4
查看 UUID 和文件系统类型:
blkid
4.2 卸载(umount)
umount /mnt/ext4 umount /dev/sdb1
如果提示 target is busy,说明有进程正在使用该挂载点:
# 查看占用进程 fuser -v /mnt/ext4 # 强制结束占用进程(谨慎) fuser -km /mnt/ext4
4.3 永久挂载(/etc/fstab)
临时挂载重启失效,如需开机自动挂载,需写入 /etc/fstab。
fstab 条目格式:
<文件系统> <挂载点> <类型> <选项> <dump> <fsck>
示例:
UUID=6855bad0-c6ae-4693-b713-5c3cec8cab27 /data ext4 defaults 0 0
常用选项说明:
选项 | 含义 |
| 默认(rw, suid, dev, exec, auto, nouser, async) |
| 只读挂载 |
| 不自动挂载(需手动 mount -a) |
挂载所有 fstab 条目:
mount -a
⚠️ 重要提示:若 /etc/fstab 配置错误,系统启动时会进入紧急模式(emergency mode)。常见错误包括:
- 文件系统路径或 UUID 写错
- 挂载点不存在(RHEL 7+ 会自动创建,但老版本会报错)
- 文件系统类型不匹配
- 挂载选项错误
进入紧急模式后,输入 root 密码,修复 /etc/fstab,然后执行 mount -a 验证。
五、查看文件系统信息
# 查看所有块设备 lsblk # 查看文件系统 UUID 和类型 blkid # 查看当前所有挂载点及挂载选项 mount # 查看磁盘使用情况 df -h df -Th # 带文件系统类型 df -i # 查看 inode 使用情况
六、软链接与硬链接
6.1 文件组成回顾
文件由两部分组成:
- inode:存储元数据(权限、大小、时间戳、指针)
- block:存储实际数据
目录文件的数据中,存储的是文件名与 inode 编号的映射关系。
6.2 软链接(符号链接,Symbolic Link)
软链接类似于 Windows 的快捷方式,指向源文件的路径。
# 创建软链接 ln -s /root/anaconda-ks.cfg /opt/ks.cfg # 查看(注意 lrwxrwxrwx 和 -> 箭头) ll /opt/ks.cfg lrwxrwxrwx. 1 root root 21 Jul 4 15:36 /opt/ks.cfg -> /root/anaconda-ks.cfg
特点:
- 可以跨文件系统
- 删除源文件,链接失效(悬空链接)
- 删除链接,源文件不受影响
- 链接文件的权限无关紧要,实际权限取决于源文件
- 修改链接或源文件内容,两者同步(因为指向同一数据)
6.3 硬链接(Hard Link)
硬链接本质上是同一个 inode 的多个文件名入口。
# 创建硬链接 ln /root/anaconda-ks.cfg /opt/ks.cfg # 查看 inode 编号(相同) ll -i /root/anaconda-ks.cfg /opt/ks.cfg 203531798 -rw-r--r--. 2 root root 23 Jul 4 15:51 /root/anaconda-ks.cfg 203531798 -rw-r--r--. 2 root root 23 Jul 4 15:51 /opt/ks.cfg
特点:
- 不能跨文件系统(不同文件系统 inode 编号不统一)
- 删除任一文件名,数据依然存在(硬链接数减 1)
- 所有硬链接共享同一 inode 和数据块
查找一个文件的所有硬链接:
find / -inum 203531798
七、LVM 逻辑卷管理
7.1 什么是 LVM?
LVM(Logical Volume Management)通过抽象层解决传统分区无法动态扩容的问题。
层次结构:
物理磁盘 → PV(物理卷) → VG(卷组) → LV(逻辑卷) → 文件系统
- PV:物理卷,将磁盘或分区初始化为 LVM 可管理的单元
- VG:卷组,将多个 PV 组成一个存储池
- LV:逻辑卷,从 VG 中划分出的逻辑分区,可创建文件系统
7.2 创建 LVM 实例
需求: 使用 /dev/sdb 和 /dev/sdc 创建 VG,再划分两个 LV(10G 和 20G),分别格式化为 ext4 和 xfs,挂载到 /data1 和 /data2。
步骤 1:创建 PV(物理卷)
pvcreate /dev/sdb /dev/sdc pvs # 查看 PV 简要信息 pvdisplay # 查看详细
步骤 2:创建 VG(卷组)
vgcreate vg01 /dev/sdb /dev/sdc vgs # 简要信息 vgdisplay # 详细信息
可使用 -s 指定 PE(物理扩展块)大小,如 vgcreate -s 8M vg01 /dev/sdb /dev/sdc
步骤 3:创建 LV(逻辑卷)
# 创建 10G 的 lv01 lvcreate -n lv01 -L 10G vg01 # 创建 20G 的 lv02 lvcreate -n lv02 -L 20G vg01 lvs # 查看 LV lvdisplay # 查看详细
LV 设备路径:
/dev/vg01/lv01/dev/mapper/vg01-lv01(两者等价)
步骤 4:格式化并挂载
mkfs.ext4 /dev/vg01/lv01 mkfs.xfs /dev/mapper/vg01-lv02 mkdir /data1 /data2 mount /dev/vg01/lv01 /data1 mount /dev/mapper/vg01-lv02 /data2 df -Th | grep data
7.3 LVM 扩容
LVM 最大的优势是可以在线扩容,无需卸载文件系统。
扩容前提:VG 中有剩余空间
# 查看 VG 剩余空间 vgs # 如果不足,可添加新磁盘或扩展 PV pvcreate /dev/sdd vgextend vg01 /dev/sdd
扩容 LV(以 ext4 为例)
# 1. 先扩展 LV lvextend -L +5G /dev/vg01/lv01 # 增加 5G # 或 lvextend -L 15G /dev/vg01/lv01 # 直接指定到 15G # 2. 扩展文件系统(ext4 用 resize2fs,xfs 用 xfs_growfs) resize2fs /dev/vg01/lv01 # ext4 在线扩容 # 对于 xfs(需挂载后执行) xfs_growfs /data2 # xfs 在线扩容
💡 xfs 文件系统扩容时,挂载点必须已挂载。
八、故障排查与注意事项
8.1 分区表不刷新
现象:创建分区后 lsblk 看不到。
解决:
partx -d /dev/sdb1 /dev/sdb # 安全刷新 # 或重启系统
8.2 超级块损坏
现象:挂载时报 bad superblock。
解决:
e2fsck /dev/sdb1 # 仅适用于 ext 系列
8.3 /etc/fstab 错误导致无法开机
进入紧急模式,输入 root 密码,修复后执行:
mount -a # 检查是否还有错误 # 修复后重启 reboot
8.4 LVM 相关注意事项
- 创建 PV 前,确保磁盘没有分区表或分区表已清除(可使用
wipefs -a /dev/sdb) - 删除 LV 前务必备份数据
- 扩容 XFS 文件系统时,必须先扩展 LV,再扩展文件系统,顺序不可颠倒
总结
本文系统地介绍了 Linux 磁盘管理的方方面面:
- 分区方案:MBR vs GPT,推荐 GPT
- 分区工具:
fdisk交互友好,parted适合脚本 - 文件系统创建:
mkfs.ext4/mkfs.xfs - 挂载:临时
mount,永久写入/etc/fstab - 软/硬链接:理解 inode 与 block 的关系
- LVM:动态扩容,提高存储管理灵活性
掌握这些技能,你就能从容应对各种存储场景——从基础分区到企业级 LVM 管理。建议在虚拟机中亲手操作一遍,加深理解。
本文基于 RHEL 9.3 环境编写,命令同样适用于 CentOS / Rocky Linux / AlmaLinux 等 RHEL 衍生版。
以上就是Linux磁盘管理完全指南(分区、文件系统、挂载与LVM实战)的详细内容,更多关于Linux磁盘管理指南的资料请关注脚本之家其它相关文章!
