Ubuntu 运维系列 | 第 5 天:文件系统与磁盘管理——分区、挂载、LVM 与 RAID 实战

磁盘是服务器存储数据的根基。业务跑起来之后,几乎每一位运维都会遇到「磁盘满了」「新硬盘怎么加」「逻辑卷空间不够怎么办」这类问题。今天我们从文件系统与磁盘管理的底层概念讲起,逐步上手分区、格式化、挂载,再到生产环境中最常用的 LVM 与 RAID,帮你建立一套完整的存储管理能力。

Ubuntu 运维 第5天

一、文件系统与磁盘的核心概念

在 Linux 中,一切皆文件,磁盘设备同样以文件形式暴露在 /dev 目录下。常见的设备命名规则如下:

  • /dev/sda:第一块 SATA / SCSI 磁盘。
  • /dev/sda1:第一块磁盘的第一个分区。
  • /dev/nvme0n1:第一块 NVMe 固态硬盘。
  • /dev/vda:KVM 虚拟机中常见的第一块虚拟磁盘。

拿到一块新磁盘后,我们需要完成「分区 → 格式化(创建文件系统)→ 挂载」三步,它才能被系统使用。分区决定磁盘如何被切分,格式化决定数据如何组织,挂载则把这块空间接入到目录树中,让我们能像访问普通目录一样读写数据。

Ubuntu 默认使用 ext4 文件系统,它是 ext 家族的最新稳定成员,具备日志、支持大文件与在线扩容等特性。除此之外,XFS 在服务器领域也很常见,尤其适合大文件与高并发场景。查看当前系统已经挂载的文件系统,可以用 lsblkdf -h

二、分区与格式化实战

查看当前系统磁盘与分区情况:

# 以树状结构查看块设备
lsblk

# 查看磁盘容量与挂载点
df -h

# 查看磁盘分区表详情
sudo fdisk -l

假设我们新增了一块 /dev/sdb,现在要给它创建分区。这里演示用 fdisk 交互式分区:

sudo fdisk /dev/sdb
# 依次输入:
#   n  -> 新建分区
#   p  -> 主分区
#   1  -> 分区号
#   (回车)-> 默认起始扇区
#   (回车)-> 默认结束扇区(使用全部空间)
#   w  -> 写入分区表并退出

分区创建完成后,需要格式化并创建文件系统。这里选择 ext4:

# 格式化分区为 ext4 文件系统
sudo mkfs.ext4 /dev/sdb1

如果是分区工具提示需要重新读取分区表,可以执行 sudo partprobe 让内核重新扫描分区信息,避免报「找不到设备」。

三、挂载与开机自动挂载

格式化完成后,把分区挂载到某个目录:

# 创建挂载点
sudo mkdir -p /data

# 挂载分区
sudo mount /dev/sdb1 /data

# 验证挂载结果
df -h /data

mount 命令的挂载在重启后会失效,需要写入 /etc/fstab 才能开机自动挂载。先通过 blkid 获取分区的 UUID(比设备名更稳定,设备名可能因顺序变化而改变):

sudo blkid /dev/sdb1

拿到 UUID 后,编辑 /etc/fstab 追加一行:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /data  ext4  defaults  0  2

这行配置的含义依次是:设备(用 UUID 标识)、挂载点、文件系统类型、挂载选项、dump 备份标志、开机自检顺序。保存后可以用 sudo mount -a 立即测试配置是否正确;如果能正常挂载且不报错,说明重启后也会自动生效。

四、LVM 逻辑卷管理实战

固定分区有个明显痛点:一旦空间不足,扩容需要备份数据、重新分区,风险高且麻烦。LVM(Logical Volume Manager,逻辑卷管理器)通过在物理磁盘与文件系统之间增加一层抽象,实现了动态扩容、缩容和跨盘管理,是生产环境的标准配置。

LVM 的核心概念有三层:PV(物理卷)、VG(卷组)、LV(逻辑卷)。物理卷对应底层磁盘分区,多个物理卷组成卷组,逻辑卷则从卷组中划出,供文件系统使用。下面演示完整的 LVM 配置流程:

# 1. 创建物理卷
sudo pvcreate /dev/sdb1 /dev/sdc1

# 2. 创建卷组,命名为 vgdata
sudo vgcreate vgdata /dev/sdb1 /dev/sdc1

# 3. 创建逻辑卷,分配 100G 空间,命名为 lvdata
sudo lvcreate -L 100G -n lvdata vgdata

# 4. 格式化逻辑卷
sudo mkfs.ext4 /dev/vgdata/lvdata

# 5. 挂载
sudo mkdir -p /data
sudo mount /dev/vgdata/lvdata /data

当逻辑卷空间不足时,LVM 的在线扩容能力就体现出来了:先扩展逻辑卷,再扩展文件系统,全程无需卸载、无需停机。

# 卷组有剩余空间时,直接扩容逻辑卷(增加 20G)
sudo lvextend -L +20G /dev/vgdata/lvdata

# 让 ext4 文件系统在线扩展以使用新空间
sudo resize2fs /dev/vgdata/lvdata

如果卷组空间也用完了,可以加入新的物理卷扩充卷组,再继续扩容逻辑卷。LVM 让「加磁盘」这件事从危险操作变成了几分钟就能完成的常规任务。

五、RAID 磁盘阵列概述

RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)通过组合多块磁盘来提升性能或可靠性。常见的级别有:

  • RAID 0:条带化,读写性能翻倍,但无冗余,坏一块盘数据全丢。
  • RAID 1:镜像,两块盘互为备份,可靠性高,容量利用率只有 50%。
  • RAID 5:至少 3 块盘,数据与校验信息分散存储,允许坏一块盘,兼顾容量与性能。
  • RAID 10:先镜像再条带,兼顾性能与冗余,至少 4 块盘,常用于数据库。

现代 Ubuntu 更推荐使用 mdadm 来管理软件 RAID。下面是一个 RAID 1 的最小示例:

# 安装 mdadm
sudo apt install -y mdadm

# 创建 RAID 1,使用 /dev/sdb 和 /dev/sdc
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 格式化并挂载
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/raid

需要注意的是,生产环境中软件 RAID 与 LVM 常配合使用,但涉及数据安全,务必在测试环境反复演练后再上生产。此外,无论是 LVM 还是 RAID,都不能替代备份——它们解决的是「可用性」,真正的「数据不丢」还要靠备份策略(本系列第 17 天会专门讲备份)。

六、常见问题

问题一:mkfs 提示分区不存在怎么办?

通常是内核还没识别到新分区表,先执行 sudo partprobe 让内核重新扫描;如果设备是虚拟化环境的热插拔盘,也可以尝试 lsblk 确认设备名是否正确。

问题二:/etc/fstab 写错了导致系统无法启动。

开机时挂载失败会进入 emergency 模式。此时用 root 进入修复,检查并修正 /etc/fstab 中的 UUID 或路径,必要时注释掉出错的那一行,重启即可恢复。这也是为什么强烈建议用 UUID 而不是设备名。

问题三:df -hdu -sh 显示的磁盘占用不一致。

很可能是某个进程还在占用已删除的文件(文件句柄未释放),空间其实没真正释放。可以用 lsof +L1 找到被删除但未释放的文件,重启对应进程即可回收空间。

问题四:逻辑卷扩容后 df -h 容量没变化。

扩容逻辑卷后还要扩展文件系统:ext4 用 resize2fs,XFS 用 xfs_growfs,漏掉这一步文件系统不会自动感知新空间。

总结

今天我们把 Ubuntu 文件系统与磁盘管理的完整链路走了一遍:从 /dev 下的设备识别,到 fdisk 分区、mkfs 格式化、mount 挂载,再到生产环境核心的 LVM 逻辑卷与 RAID 磁盘阵列。掌握这些之后,你就能从容应对「加硬盘、扩空间、建冗余」这三大类最常见的存储需求。建议你在测试机上亲自动手,把一块空盘从裸盘一路做到 LVM 逻辑卷,并演练一次在线扩容,这套手感会在日后的运维工作中反复派上用场。

下期预告:第 6 天我们将进入「软件包管理——APT、Snap、dpkg 与源码编译安装」,学会用各种方式安装、升级、卸载软件,并理解 Ubuntu 软件生态的管理逻辑。

微信二维码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容