当前位置: 代码网 > 服务器>服务器>Linux > Linux磁盘管理完全指南(分区、文件系统、挂载与LVM实战)

Linux磁盘管理完全指南(分区、文件系统、挂载与LVM实战)

2026年07月16日 Linux 我要评论
前言在 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

/dev/hda, /dev/hdb

scsi / sata

/dev/sda, /dev/sdb1, /dev/sdc3

nvme

/dev/nvme0n1, /dev/nvme0n1p1

光盘

/dev/sr0, /dev/sr1

虚拟化(kvm)

/dev/vda, /dev/vdb

lvm 逻辑卷

/dev/mapper/vg_name-lv_name

二、分区方案与分区工具

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

交互式常用命令:

命令

作用

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/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

常用选项说明:

选项

含义

defaults

默认(rw, suid, dev, exec, auto, nouser, async)

ro

只读挂载

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 什么是 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磁盘管理指南的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com