上两期分别是:
---Begin---
5.3 vSAN 软件组件
本节将简要介绍组成分布式软件层的一些软件组件。
这些信息大多数都不会在vSphere管理员的日常工作中用到。由于只要动几下鼠标就可完成所有的安装配置,vSAN将纷繁复杂藏于极简的实施背后。
不过,就像前面的介绍中曾提过的,你可能会时不时地在vSphere用户界面中或是在VMkernel日志中看见关于这些组件的消息,我们觉得还是有必要把这些幕后的主要组件提一下,给你一些关于这些组件是如何运作的背景知识。而且,当你开始使用RVC(第10章会介绍)时,大量输出中都会提到这些软件组件,这是为什么我们要在这里简要介绍它们的另一个原因。
vSAN架构由4个主要组件组成(如图5-8所示),后面我们会进一步详细探讨。
[x1]
图 5-8vSAN的软件组件
5.3.1组件管理
vSAN的本地日志结构化对象管理器(Local Log Structured Object Manager, LSOM)作用于物理磁盘层面。vSAN是靠LSOM来给虚拟机存储对象组件提供存储空间的(位于ESXi主机的本地磁盘上),并且还包括给这些对象提供读缓冲(仅混合配置)和写缓存(混合配置和全闪存配置)。说起组件这个术语,我们指的是组成RAID-0的条带组件或组成RAID-1的副本组件,它也可能是RAID-5或RAID-6配置中的数据块或校验块。因此,LSOM是作用于ESXi主机的磁盘、固态硬盘或闪存设备上的。
关于LSOM的另一种表述是:它负责为vSAN群集提供存储的一致性。这句话内在的意思是它存储着组成虚拟机存储对象的组件、所有的配置信息以及虚拟机存储策略。
LSOM负责上报设备层的事件,如设备的健康状态等。如果设备发生临时性偶发错误时,LSOM也负责重试出错的I/O操作。
LSOM还能辅助进行对象的恢复。每次ESXi主机启动时,LSOM会进行SSD日志恢复,这会引发一次对所有日志的读取来保证内存状态是最新的和正确的。这意味着加入vSAN群集的ESXi主机比未加入vSAN群集的ESXi主机在重新启动时要花更多的时间。
5.3.2 对象的数据路径
分布式对象管理器 (DistributedObject Manager, DOM) 给建立在本地(LSOM)组件之上的对象提供分布式的数据访问路径。DOM负责将分布在vSAN群集中多台ESXi主机上的本地组件创建成可靠的、可容错的虚拟机存储对象,这是通过向存储对象实施分布式RAID类型来实现的。
DOM还负责处理各种不同类型的故障,例如设备I/O故障和无法联系主机的问题。当发生了意外的主机故障后进行恢复时,DOM必须重新同步每个对象的所有组件。组件每隔一段时间就发布一次bytesToSync值来报告同步操作的进行状况。恢复操作正在发生的时候,可以通过vSphere Web客户端的用户界面观察到。
5.3.3对象的归属
本章中我们时不时会提起对象属主(object owner),让我们再更详细地表述一下什么是对象属主。对于群集中的每一个存储对象,vSAN都会为其选出一个属主。属主可以被视为是存储机头,它负责协调(在vSAN范围内)谁可以对这个对象进行I/O操作。属主基本上是这么一个实体,它要通过处理每一次事务(修改对象的数据/元数据的操作)来保证分布式对象的数据一致性。
作为类比,考虑一下NFS配置中的NFS服务器和NFS客户端的概念。只有特定的客户端可以成功与服务器通信。在这个例子中,vSAN存储对象的属主可以比作NFS服务器,它决定了哪些客户端可以进行I/O操作而哪些不可以。对象属主概念中的最后一部分是组件管理器,它可以被视为LSOM的网络前端(换而言之,vSAN中的一个存储对象是如何被访问的)。
对象属主通过与组件管理器通信来找到RAID树上的叶子(即存储对象的组件)。通常情况下只有一个客户端访问对象,然而在vMotion操作时,多个客户端可能会访问同一个对象。绝大多数情况下,对象属主和客户端位于vSAN群集的同一个节点上。
5.3.4 对象的放置与迁移
群集级别对象管理器(Cluster LevelObject Manager, CLOM)负责保证对象的配置与其策略所匹配(也就是说,请求的条带宽度已被实施或者已经置备了足够数量的镜像/副本来满足虚拟机的可用性要求)。CLOM是这样运作的:它接受分配给对象的策略,然后进行大量不同的探索来找到现在群集中可满足策略要求的配置。于此同时,它还保持着vSAN中所有节点之间资源利用的平衡。
然后DOM实施由CLOM给予的配置。CLOM在群集的不同ESXi主机之间分发组件。CLOM试图形成某种程度上的平衡,不过某些主机比其他主机具有更多组件的情况并不少见,例如已用容量/预留容量或已用的闪存读取缓存/预留的缓存比其他主机更多。
vSAN群集上的每个节点都运行着CLOM的一个实例,名为clomd。CLOM的每个实例都对本主机上DOM支配的对象的配置和策略合规性负责,因此它需要和CMMDS(Cluster Monitoring, Membership, and Directory Service,群集监控、成员和目录服务)通信来获取归属转移的情况。CLOM只和本机的实体通信,它不使用网络。
5.3.5 群集监控、成员和目录服务
CMMDS(ClusterMonitoring, Membership, and Directory Service,群集监控、成员和目录服务)的目的是发现、建立和维护群集的相互联网的节点成员。它管理着物理群集资源清单例如主机、设备、网络以及存储对象元数据信息(如策略、分布式RAID配置等等),并把它们存放在内存数据库中。对象元数据还总是会保存一份在磁盘上。它还对节点和网络路径的故障发现负责。
其他组件通过浏览目录和订阅更新来学习群集拓扑和对象配置的变化。例如,DOM可以利用目录的内容来决定哪个节点来存储对象的组件以及决定可到达节点的路径。
注意,CMMDS仅当主机之间的组播网络连接时才会构建一个群集(并选举出主控)。
CMMDS用来选举对象的“属主”。如前所述,对象的属主会对特定对象进行所有的RAID操作。
5.3.6 主机角色(主控、备用和代理)
当vSAN群集形成时,你可能会注意到vSAN群集中的每台ESXi主机都具有一个特定的角色(这可以通过esxcli命令行来看到)。这些角色仅用于vSAN群集服务。群集服务(CMMDS)负责维护一个最新的目录,包括磁盘、磁盘组和vSAN群集中每台ESXi主机上的对象。这和管理群集中对象或对象的I/O操作完全无关,仅仅是允许群集中的节点可以追踪到其他节点。群集服务是基于主控(包括备用)和代理的,所有的节点都会将更新发送给主控,主控然后把这些更新通过顺序可靠的vSAN特定的组播协议重新分发给代理。这就是为什么vSAN网络必须具有处理组播流量的能力的原因(前面的章节中提到过的)。
角色是在群集发现过程中赋予的,这个过程也是vSAN群集中的ESXi主机选举主控的时候。vSphere管理员对于群集成员会获得何种角色没有控制权。
一个常见的问题是为啥需要备用角色?这是因为如果当前主控角色的ESXi主机发生了灾难性的故障而没有备用的话,所有ESXi主机必须根据新选举出来的主控重新刷新自己全部目录内容使之与新的主控保持一致。这意味着群集中的所有节点可能都需要把从自己的角度所获知的群集的目录内容发送给主控。如果有备用的话,就不需要把这些信息在网络上重新传输一次了,并且可以加速新主控节点的选举过程。
就vSAN延伸群集来说,vSAN 6.1中新增了一种配置,允许vSAN群集中的节点在地理上分布在不同的站点——主控节点将位于某一个站点,而备份节点位于另一个站点。
重点是对于一个用户或vSphere管理员来说,被选举成为主控角色的ESXi节点并没有特别的功能或其他显而易见的不同之处。因为主控是自动选举出来的,就算它发生了故障,由于这个节点和其他节点没有功能上的区别,因此在主控节点上的进行操作还是在其他节点上进行完全无所谓。
5.3.7可靠数据报传输
可靠数据报传输(ReliableDatagram Transport, RDT)是vSAN的内部通信机制。它使用TCP作为传输层,并根据需要创建或删除TCP连接(套接字)。
RDT是构建在vSAN群集服务之上的,群集服务使用心跳来决定链路状态。如果发现了链路故障,RDT就会中断这条路径上的连接并另选一条健康的路径。
当需要对一个vSAN对象进行操作时,DOM使用RDT来与vSAN对象的属主对话。因为RDT承诺可靠交付,其使用者可以在路径或节点故障时依靠它来重新发起请求,这可能会导致对象归属的变化并变更通往对象属主的新的路径。CMMDS(通过心跳和监控功能)和RDT负责处理超时(timeout)和路径故障。
[x1]
LSOM:本地日志结构对象管理器
CMMDS:群集成员监控和目录服务
DOM:分布式对象管理
---End
微信公众号-乐生活与爱IT 将连载vSAN架构细节的系列文章,本篇是
vSAN架构细节系列之三。上两期分别是: