Linux 磁盘管理完全指南:分区、文件系统、挂载与 LVM 实战
前言在 Linux 系统中磁盘管理是每个运维人员和开发者的必修课。无论你是在本地虚拟机中练习还是管理生产环境中的服务器理解磁盘分区、文件系统创建、挂载、软硬链接以及 LVM 逻辑卷管理都能让你在面对存储需求时游刃有余。本文将基于 RHEL 9 环境系统讲解以下内容磁盘设备命名规则分区方案MBR vs GPT与分区工具fdisk、parted文件系统创建ext4、xfs临时挂载与永久挂载/etc/fstab软链接与硬链接LVM 逻辑卷的创建与扩容 本文适合 Linux 初学者及有一定经验的系统管理员建议动手实践每一个命令。一、磁盘基础概念1.1 块设备与文件系统在 Linux 中磁盘、U 盘等存储设备被称为块设备可以使用lsblk命令查看[rootlab ~]# 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/ext4Linux 传统本地文件系统xfsRHEL 7 默认文件系统高性能NTFSWindows 主流文件系统NFS / CIFS网络文件系统用于共享iso9660光盘文件系统1.2 磁盘设备命名规则Linux 根据磁盘接口类型命名设备文件接口类型设备名示例IDE/dev/hda,/dev/hdbSCSI / SATA/dev/sda,/dev/sdb1,/dev/sdc3NVMe/dev/nvme0n1,/dev/nvme0n1p1光盘/dev/sr0,/dev/sr1虚拟化KVM/dev/vda,/dev/vdbLVM 逻辑卷/dev/mapper/vg_name-lv_name二、分区方案与分区工具2.1 为什么要分区隔离系统盘和数据盘分离避免系统故障影响数据灵活管理不同分区可使用不同文件系统便于备份单独分区可独立备份恢复典型的分区结构/boot分区存放引导文件/分区根文件系统存放系统文件2.2 MBR vs GPT特性MBRGPT最大分区大小2TB8ZB主分区数量最多 4 个或 3 主1扩展无限制通常 128 个分区表备份仅磁盘头部头部和尾部均有备份兼容性老设备兼容好现代设备首选建议无特殊需求时优先选择GPT分区方案。2.3 分区工具①parted– 强大且危险即时生效交互式创建 MBR 分区[rootlab ~]# 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交互式常用命令命令作用n创建新分区d删除分区p打印分区表w保存并退出q不保存退出g创建 GPT 方案o创建 MBR 方案t修改分区类型标识创建分区示例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/sdb23.2 文件系统结构inode 与 blockinode存储文件元数据权限、大小、时间戳、指向 block 的指针block实际存放文件数据默认大小 4KBinode 数量决定文件系统最大文件数# 查看文件系统 inode 使用情况 df -i3.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 和文件系统类型blkid4.2 卸载umountumount /mnt/ext4 umount /dev/sdb1如果提示target is busy说明有进程正在使用该挂载点# 查看占用进程 fuser -v /mnt/ext4 # 强制结束占用进程谨慎 fuser -km /mnt/ext44.3 永久挂载/etc/fstab临时挂载重启失效如需开机自动挂载需写入/etc/fstab。fstab 条目格式文件系统 挂载点 类型 选项 dump fsck示例UUID6855bad0-c6ae-4693-b713-5c3cec8cab27 /data ext4 defaults 0 0常用选项说明选项含义defaults默认rw, suid, dev, exec, auto, nouser, asyncro只读挂载noauto不自动挂载需手动 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 什么是 LVMLVMLogical Volume Management通过抽象层解决传统分区无法动态扩容的问题。层次结构物理磁盘 → PV物理卷 → VG卷组 → LV逻辑卷 → 文件系统PV物理卷将磁盘或分区初始化为 LVM 可管理的单元VG卷组将多个 PV 组成一个存储池LV逻辑卷从 VG 中划分出的逻辑分区可创建文件系统7.2 创建 LVM 实例需求使用/dev/sdb和/dev/sdc创建 VG再划分两个 LV10G 和 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 data7.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 用 resize2fsxfs 用 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 # 检查是否还有错误 # 修复后重启 reboot8.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 衍生版。觉得有用欢迎收藏、转发让更多人受益