2. vSphere存储架构基础
在 vSphere 环境中,ESXi 主机并不直接把物理磁盘“交给”虚拟机使用,而是通过一套分层存储栈把底层设备抽象成可被集群共享、调度和保护的数据存储(Datastore)。理解这套栈的层次、协议差异、命名规则与路径选择逻辑,是后续做存储协同设计(多路径、队列深度、IOPS 分配、故障切换)的技术底座。本节先建立“从物理设备到虚拟机磁盘”的完整映射关系。
一、ESXi 存储栈的分层结构
ESXi 存储栈自下而上大致分为四层:物理设备层(SAS/SATA/NVMe 盘、FC HBA、iSCSI NIC、NVMe-oF NIC)、协议与传输层(SCSI over FC、iSCSI、NFS、NVMe-oF)、存储抽象层(PSA/ NMP 多路径、VASA、VMFS 或 NFS 客户端)、数据存储与虚拟机层(VMFS/NFS/vSAN 数据存储、VMDK、快照、精简置备)。
其中 PSA(Pluggable Storage Architecture) 是可插拔存储架构,负责把“设备—路径—卷”三者关联起来;NMP(Native Multipathing Plugin) 是默认多路径插件,配合 SATP(存储阵列类型插件)和 PSP(路径选择插件)决定 I/O 走哪条路径。这一层是后续路径管理、故障切换和负载均衡的核心。
二、五类主流存储协议对比
ESXi 支持多种协议接入,它们在封装方式、共享能力和适用场景上差异明显:
| 协议 | 传输方式 | 数据存储形式 | 典型场景 |
|---|---|---|---|
| SCSI(FC/SAS) | 块级,FC 光纤或直连 SAS | VMFS | 低延迟核心数据库、传统 SAN |
| iSCSI | 块级,TCP/IP 封装 SCSI | VMFS | 成本敏感、以太网统一承载 |
| NFS | 文件级,NAS 服务器导出 | NFS 数据存储 | 简单共享、模板与 ISO 库 |
| vSAN | 分布式对象,本地盘聚合 | vSAN 数据存储 | 超融合、软件定义存储 |
| NVMe-oF | 块级,RDMA/FC-NVMe 承载 | VMFS on NVMe | 极低延迟、高性能数据库 |
块级协议(SCSI、iSCSI、NVMe-oF)向 ESXi 呈现的是 LUN,需要 VMFS 文件系统格式化后才能存放 VMDK;文件级协议(NFS)由 NAS 直接提供目录,ESXi 挂载后即可使用;vSAN 则是把主机本地盘组成分布式对象存储,再以数据存储形式暴露。选择哪种协议,取决于延迟要求、共享范围、运维复杂度和预算。
三、设备命名与路径管理
ESXi 对存储设备有稳定的命名规则,排障时必须能读懂:
- naa.xxxx:SCSI 设备唯一标识,来自 LUN 的 NAA(Network Address Authority)ID,是识别同一 LUN 的关键。
- eui.xxxx:NVMe 设备命名空间标识。
- vmhbaX:主机总线适配器编号,如 vmhba64 为 iSCSI 软件适配器,vmhba1 为 FC HBA。
- vmhbaX:C0:T0:L0:控制器/目标/ LUN 三元组,表示一条具体路径。
同一 LUN 通过多条物理路径到达时,会出现多个 vmhbaX:Cx:Tx:Lx 条目,但 naa 标识相同。PSA 通过 SATP 识别阵列类型,再由 PSP 决定路径策略:VMW_PSP_FIXED(固定路径,仅主路径工作)、VMW_PSP_RR(轮询,多路径均衡)、VMW_PSP_MRU(最近使用)。生产环境通常对支持 ALUA 的阵列使用 RR,并设置 IOPS 阈值(如 1000)避免路径抖动。
esxcli storage nmp path list,观察 State 是否为 active,以及 Is Active 与 Is Standby 的分布是否符合预期。四、数据存储类型与容量规划要点
VMFS 是集群文件系统,允许多台 ESXi 同时读写同一 LUN,适合承载虚拟机;NFS 数据存储由 NAS 管理文件锁,部署简单;vSAN 数据存储则通过存储策略(SPBM)定义冗余与性能等级。规划时需关注:块大小与 VMDK 大小上限、精简置备与厚置备的取舍、快照对空间的影响,以及单数据存储承载的虚拟机数量上限。
下面这张图把“物理设备 → 协议 → PSA/NMP → 数据存储 → 虚拟机”的映射关系与关键命名对象放在一起,便于对照理解:
五、从命名到路径的排障思路
当虚拟机出现存储延迟或路径告警时,可按以下顺序定位:先用 esxcli storage core device list 确认设备是否被识别、naa 是否一致;再用 esxcli storage nmp path list 查看路径状态与 PSP 策略;若发现某条路径长期处于 dead 或 standby 异常,检查交换机 zoning、iSCSI 端口绑定或阵列 ALUA 配置。最后用 esxcli storage core device stats get -d naa.xxx 观察读写延迟与队列深度,判断是路径问题还是后端阵列瓶颈。
掌握以上内容后,后续做存储协同设计时,才能准确判断:某类业务该用块存储还是文件存储、多路径策略如何设置、队列深度与 IOPS 上限如何分配,以及故障切换时数据存储和虚拟机将如何表现。