Skip to content

在日常生产运维与微服务部署中,存储管理是每位工程师都无法回避的底层核心课题。无论是刚采购的云硬盘如何挂载识别、微服务业务目录背后的存储路径,还是在排查服务器设备时看到的诸如 vdc、dm-0、appvg-lvdata 等名字,其本质都指向了同一个核心基石:Linux 存储栈的分层堆叠设计。

Linux 的存储并不是一块铁板,而是一个高度模块化、层层抽象的精密体系。本文聚焦于 Linux 存储的核心基石,系统拆解宏观存储层次模型、物理块设备命名规则,以及 LVM 逻辑卷管理的底层协作机制。

一、Linux 存储体系的宏观四层架构 ​

理解 Linux 存储最直观的模型,就是将它视作“物流货运系统”:

  1. 业务与文件系统层(货品与包装): 业务程序并不关心底层到底是用哪块硬盘存储的,它只需要向操作系统指定的目录路径(如 /app/data)写入文件。文件系统(ext4 或 xfs)负责维护目录树、权限以及文件的元数据(inode)。
  2. 逻辑卷管理层 LVM(标准集装箱与调度池): 位于文件系统与真实硬盘之间的一层虚拟抽象。它屏蔽了物理硬盘容量固定的局限,允许运维人员像自由切割蛋糕一样,随时对上层暴露的分区进行按需缩扩容。
  3. 物理块设备层(拉运货物的卡车底盘): 真正提供数据持久化能力的物理硬件或云厂商虚拟磁盘,在 Linux 中统一抽象为块设备节点(位于 /dev 目录下)。

二、物理块设备识别与 Linux 设备命名体系 ​

执行 lsblk 或查看 /proc/partitions 时,各种各样的设备名称往往容易让人混淆。Linux 内核根据硬件驱动类型与总线协议,制定了严格的命名规范:

1. 核心设备前缀划分 ​

设备命名格式背后硬件驱动类型典型应用环境性能与技术特点
/dev/sd[a-z]SCSI / SATA / SAS / USB传统机房物理服务器、本地工控机Linux 将绝大多数通用外设接口设备均抽象为 SCSI 设备命名。
/dev/vd[a-z]VirtIO 块设备驱动各大公有云(阿里云、腾讯云、AWS)与 OpenStack/KVM 虚机云原生半虚拟化技术。Guest OS 与 Host 宿主机直接通过共享内存通信,跳过了硬件指令模拟,IO 效率远高于模拟的 sdX。
/dev/nvme[0-9]n[0-9]NVMe 协议(PCIe 直通)高性能计算实例、核心数据库裸金属服务器绕过传统 SATA 控制器瓶颈,直通 CPU 的 PCIe 通道,具备数十万级高 IOPS 与超低微秒级延迟。
/dev/dm-[0-9]Device Mapper 虚拟映射设备LVM 逻辑卷、软件 RAID、LUKS 加密盘内核驱动生成的虚拟中间设备别名(系统通常会在 /dev/mapper/ 下创建更易读的软链接)。

2. 字母与数字后缀解析 ​

  • 盘符字母从 a 开始递增:
    • vda / sda:通常代表主机的第 1 块硬盘(系统盘),安装着 Linux 根操作系统;
    • vdb:第 2 块盘,常见于 Swap 分区或临时数据盘;
    • vdc:第 3 块盘,企业中经常被采购作为核心业务专用盘。
  • 物理分区编号:
    • 紧跟数字代表物理分区(如 vda1 代表 vda 上的第 1 个主分区;nvme0n1p1 代表第 0 号 NVMe 控制器的第 1 个命名空间的第 1 个物理分区)。

三、LVM 逻辑卷管理核心机制 ​

如果直接将物理分区格式化挂载给业务,一旦业务增长空间耗尽,将面临极为繁琐的停机换盘、迁移数据的恶梦。LVM(Logical Volume Manager)正是为了彻底破解“静态分区痛点”而生。

  • PV(Physical Volume,物理卷): 底层基石。将普通的硬盘(如 /dev/vdc)通过命令标记为可被 LVM 识别管理的最小物理实体,内部会被划分成数以万计的最小存储单元 PE(Physical Extent,默认大小为 4MB)。
  • VG(Volume Group,卷组): 共享资源池。一个 VG 可以将一块或数十块 PV 拼接融合在一起,形成一个巨大的无边界存储池(例如把两块 100GB 的盘融合为一个 200GB 的 appvg)。
  • LV(Logical Volume,逻辑卷): 按需分配的分区。从 VG 存储池里取出一定数量的 PE 拼装成一个虚拟磁盘(如切出 50GB 命名为 lvdata)。它可以像普通硬盘一样被格式化、打上文件系统并挂载到业务路径(如 /app/data)。

基于 VitePress 构建 · 遵循 CC BY-NC-SA 4.0 许可协议