4. vSphere存储对象与策略
在vSphere中,存储不再只是“挂一块盘”那么简单。ESXi主机面对的是多种形态的存储对象:块设备上的VMFS数据存储、文件级的NFS数据存储、细粒度绑定的vVol,以及由主机本地磁盘聚合而成的vSAN数据存储。它们最终都以“数据存储(Datastore)”的形式出现在清单里,供虚拟机放置虚拟磁盘、配置文件、快照和ISO。但不同存储对象在“谁管理容量、谁管理能力、谁执行策略”上分工不同,这正是存储策略(SPBM,Storage Policy Based Management)要解决的问题。
四类存储对象的本质差异
VMFS是VMware自有的集群文件系统,运行在块存储(FC、iSCSI、SAS)之上。多台ESXi可同时挂载同一VMFS卷,通过分布式锁保证并发安全,适合承载大量虚拟机并支持vMotion、HA等特性。它的容量单位是LUN/卷,管理员在卷级别划分空间,虚拟机磁盘以VMDK文件形式存在其中。
NFS数据存储走的是文件级协议,ESXi作为NFS客户端挂载NAS导出目录。它不需要集群文件系统,因为文件锁由NAS服务器统一管理。NFS的优点是部署简单、按文件增长、便于快照与备份集成;代价是性能与功能依赖NAS厂商,且部分高级特性(如硬件加速、VAAI原语)支持程度不一。
vVol(Virtual Volumes)把存储管理的粒度从LUN/卷下沉到单个虚拟磁盘。每个VMDK对应存储阵列上的一个虚拟卷(Virtual Volume),策略直接绑定到虚拟磁盘,阵列据此提供对应的服务质量、快照、复制能力。vVol需要阵列支持VASA Provider,由它把阵列能力上报给vCenter,实现“策略即配置”。
vSAN数据存储是软件定义的分布式存储,把每台ESXi主机的本地磁盘(SSD/HDD/NVMe)聚合成一个共享数据存储。数据以对象形式分布,通过存储策略控制副本数、纠删码、故障域、闪存读缓存等。vSAN不需要外部共享存储,是超融合架构的核心。
SPBM:把“需求”翻译成“放置”
存储策略是一组声明式的能力要求。管理员在vCenter中定义策略,例如“3副本、故障域为主机、精简置备、快照保留7天”,然后把它绑定到虚拟机或虚拟磁盘。SPBM负责把这份声明翻译成具体存储对象上的配置:对vSAN,它决定对象副本数与故障域;对vVol,它把策略传给VASA Provider,由阵列执行;对VMFS/NFS,它主要影响置备类型与部分数据服务,能力范围受底层存储限制。
策略的落地依赖“能力发现”。vSAN通过自身能力模型直接暴露可用策略项;vVol依赖阵列的VASA Provider上报支持的能力;VMFS/NFS则通过VAAI/VASA等接口暴露有限能力。因此,同一份策略在不同存储对象上可能“部分合规”或“不合规”。合规性检查会持续评估每个虚拟磁盘,一旦发现不满足,vCenter会给出告警,并允许通过迁移或重新应用策略来修复。
容量与合规性的实际判断
容量规划不能只看“剩余空间”。以vSAN为例,若策略要求“3副本、故障域为主机”,则每1GB可用数据实际消耗约3GB原始容量(不含纠删码与开销)。假设一个vSAN集群有6台主机,每台提供2TB缓存层与8TB容量层,总原始容量48TB;采用3副本策略时,可用的有效容量约为16TB,再扣除元数据与预留,实际可放置的虚拟机磁盘总量会更低。若改用“2副本+纠删码(4+2)”,有效容量可提升到约24TB,但需要更多主机参与故障域,且写放大与重建开销上升。
合规性判断则要区分“策略合规”与“运行合规”。策略合规指虚拟磁盘的配置满足策略声明;运行合规指在故障、扩容、迁移后仍能维持策略。例如,某虚拟机绑定“2副本、故障域为主机”策略,当一台主机进入维护模式时,vSAN会触发组件重建,若集群剩余主机不足以满足故障域要求,合规状态会变为“不合规”,此时需要先扩容或调整策略,再继续维护。
策略驱动的协同机制
策略驱动的存储协同,本质是让“业务需求”通过策略自动映射到“存储能力”。管理员不再手工为每台虚拟机选择LUN或调整阵列参数,而是声明需求,由SPBM与存储对象协同完成放置、置备与合规检查。VMFS/NFS适合传统块与文件场景,策略主要约束置备与数据服务;vVol把策略粒度下沉到单盘,适合需要阵列级QoS与快照的场景;vSAN把策略与分布式对象绑定,适合超融合与弹性扩展。理解四类对象的差异,才能在设计阶段选对存储形态,并在运行阶段用合规性检查持续验证策略是否真正落地。
示例:为虚拟机磁盘绑定 vSAN 策略(PowerCLI 片段)
$policy = New-SpbmStoragePolicy -Name "CoreDB-3Rep" `
-AnyOfRuleSets (New-SpbmRuleSet -AllOfRules @(
New-SpbmRule -Capability "VSAN.hostFailuresToTolerate" -Value 2,
New-SpbmRule -Capability "VSAN.replicaPreference" -Value "3 replicas",
New-SpbmRule -Capability "VSAN.forceProvisioning" -Value $false
))
Set-SpbmEntityConfiguration -StoragePolicy $policy -Entity $vm -Disk "Hard disk 1"
上述片段中,hostFailuresToTolerate=2 对应“允许2台主机故障”,即3副本;forceProvisioning=false 表示按策略正常置备。执行后可通过 Get-SpbmEntityConfiguration 查看合规状态,若返回 Compliant=True,说明该磁盘已按策略放置;若为 False,则需检查集群主机数、故障域设置或剩余容量是否满足要求。
总结来看,vSphere存储对象与策略的关系可以概括为:对象决定“能力边界”,策略决定“需求表达”,合规性检查决定“是否持续满足”。设计时先明确业务对容量、性能、可用性与数据服务的需求,再选择能覆盖这些需求的存储对象,最后用策略把需求固化下来,并通过合规性检查形成闭环。