目录
传统的共享存储
- 通过
隔离的存储网络
使得不同的ESXi主机
访问独立的存储设备
。 - 需要前期投入较高的资金单独采购存储、网络
- 可以单独规划
巨帧
,使得MTU变大,网络利用率变高 - 需要专门设置存储管理员(如果划分细致)
vSAN存储
- 利用
本机的空余磁盘
,作成共享存储 - 5.5
必须一个SSD
,其他没有要求;6.0开始可以支持全闪(同时支持高级功能如去重、压缩)- 8.0前叫做Original Storage Architecture OSA。
- 8.0 叫做Express Storage Architecture ESA。
- 每台机器可以最多包含5个磁盘组。每个磁盘组都得有一个SSD
- 假如5个磁盘组,每个磁盘组最多7块硬盘可用,至少需要32G内存可用
- 与vSphere集成,可以直接在vCenter上管理与使用
- 必须是一整块的空闲磁盘,而不是部分空闲
OSA的系统要求
- vSAN集群的主机,硬件/磁盘配置/ESXi软件版本 需要一致。
- VMWare HCL 硬件兼容性列表
- 每个磁盘组必须一个SSD作为缓存,其余磁盘作为容量层。缓存不计入可用容量
- 对于混合架构(SSD+HDD),至少1Gb网络;全闪架构,至少10Gb网络
- 建议网络层面单独隔离,开启巨帧
vSAN安装
- 配置VMKernel端口,启用vSAN服务
IP设置提前规划
- vSAN流量配置上联链路冗余Bond
- 虚拟交换机与物理交换机同时配置巨帧
略
-
新建启用vSAN的集群
-
添加ESXi主机进入集群
-
申明磁盘组(大小)
-
配置完成,退出维护模式
-
创建集群管理主机vCLS(大于3台ESXi会创建3个vCLS)
vSAN集群的容量只会显示容量层而不会显示缓存层
vSAN集群
- 可以支持3~64台主机,不需要每台主机都贡献磁盘
- 现网一般最低都是4,保证可用
vSAN skyline health
- 提供vSAN整体健康度检查,包括硬件和配置层面
- 发生故障时,提供错误分析和解决建议。
vSAN与HA
- vSAN必须在启用HA之前配置。
- 未启用vSAN的HA集群用
管理网络
传输心跳; - 启用vSAN的HA集群用
vSAN网络
传输心跳;
- 未启用vSAN的HA集群用
- 先停止HA,配置好vSAN再启用HA
磁盘组
- OSA要求每个磁盘组至少一块SSD作为缓存层,至多7块SSD/HHD作为容量层;
- 每个ESXi主机最多5个磁盘组;
- 5个8盘磁盘组,内存最少32G;
- 容量层全闪时,支持压缩、去重;
混合磁盘架构
- 缓存层中70%空间用于read,30%用于write;
- write到达缓存层直接返回写确认;
- 缓存层至少是容量层的10%,缓存层大小增加可以提高read命中率
write-through(透写): 所有的写操作直接写往主存,同时也写在缓存cache中,写主存成功后返回写成功 。
write-back(回写): 写操作先缓存在cache中,直接返回写成功。稍后才会统一将缓存写到主存中去。
全闪磁盘架构
- 缓存层所有空间用于写缓存
- 写缓存中的数据趋于稳定后,写入容量层。
- 降低写放大(WA)
- 提高磁盘寿命
- 容量层选择容量大的SSD,缓存层选择寿命大的SSD
vSAN对象
- vSAN是一种逻辑的、基于对象的块存储架构
- VMDK,基于文件夹的存储,文件夹内有不同的文件
-对象本身不存放数据,相当于指针
,指向组件
- VMDK,基于文件夹的存储,文件夹内有不同的文件
对象 | 描述 |
---|---|
虚拟机Home Namespace | 虚拟机对象存放的根容器,例如VMDK、VMX等对象。 |
虚拟机交换对象 | 虚拟机开机时被创建,其大小等于配置的内存减去预留。 |
虚拟机磁盘对象 | 虚拟机的vmdk对象。 |
快照增量对象 | 快照后的差异磁盘对象。 |
内存快照对象(.vmem) | 快照后对内存的状态保存对象。 |
vSAN内部架构
假如VM需要请求创建磁盘:
-
在vCenter上下发指令。通过
vpxd
进行下发,- vpxd:vCenter的一个daemon
-
vpxd
将该指令下发到ESXi主机的vpxa
进程- vpxa: 专门从vCenter获取指令的进程
-
vpxa
将指令传输给hostd
进程- hostd:ESXi的核心进程
-
hostd
接收到创建磁盘的指令,会调用一些需要的进程如OSFSd/DISKLIB
- OSFSd: Object Storage File System Daemon
- DISKLIB: 访问磁盘需要的Library库
-
OSFSd/DISKLIB
将指令传输到CLOM
中- CLOM: Cluster Level Object Manager,根据策略来定义写的磁盘文件最终怎么存储
-
CLOM
通过询问CMMDS
进程 获取信息,判断对象组件写哪- CMMDS:Cluster Monitoring MemberShip and Directory Service,拥有集群中所有与vSAN相关信息的集合数据库,如对象存放、调用空间等。
- 为了保证不同ESXi的CMMDS数据库内容一致,vSAN集群会选举出唯一的Master,其他则作为一台backup和多台Agent。只有Master可以读写,其他只能读;Backup作为Master Down后的接管角色
-
CMMDS
的同步依赖于RDT
-
RDT: Reliable Datagram Transport
shell# ESXi CLI # 两条效果一样的 ~] esxicli vsan cluster list ~] esxicli vsan cluster get ... Local Node State: Agent/Master/Backup ...
-
-
CLOM
将具体操作的指令发送给DOM
- DOM:分布式对象管理
- DOM Client:接受CLOM发来的读写IO的要求,转发IO请求给Owner
- DOM Owner:真实对对象拥有读写访问权写的角色。vSAN中创建每一个对象,都会选择一个DOM作为它的Owner。对对象的操作只能通过DOM Owner进行传递。
- 如果对象就在本机,Owner会把这个IO读写请求转发给DOM Component Manager。
- 如果DOM Owner和组件所在物理位置不一致,通过
RDT
转发给对应的DOM Component Manager。
- DOM Component Manager:负责管理组件所在主机上的一个对象。组件物理存放在那个ESXi。
- DOM:分布式对象管理
-
DOM Component Manager
会将指令传输给LSOM
- LSOM: Log Structured Object Manager 负责日志对象分区的读写操作。负责最终的IO请求写入的一个角色,也负责读写的缓存管理。
-
LSOM
调用PSA
,将IO请求转换成磁盘能接受的指令- PSA: Pluggable Storage Architecture 可插拔存储架构。vSAN控制物理磁盘组最后的角色。PSA将IO落入磁盘上。