Nutanix超融合平台架构介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nutanix超融合体系架构之:运行机制
数据保护
目前,Nutanix 平台使用复制因子(RF) 来确保节点或磁盘发生故障时数据的冗余和可用性。如“架构设计”部分所述,OpLog 充当一个临时区域,将传入的写入吸收到低延迟的SSD 层。将数据写入本地OpLog 时,在被主机确认(Ack) 为成功写入之前,数据将会同步复制到另外的一个或两个Nutanix CVM 的OpLog 中(取决于RF)。这将确保数据存在于至少两个独立的位置,且具有容错能力。所有节点均参与OpLog 复制以避免出现任何“热节点”并确保扩展时的线性性能。
然后,将数据异步排出到隐式维持RF 的盘区存储中。之后在节点或磁盘出现故障的情况下,会将数据在群集中的所有节点之间重新复制以维持RF。
下面我们将展示此过程的逻辑表现形式的一个示例:
数据位置
作为一个融合的(计算+存储)平台,I/O 和数据位置对与Nutanix 有关的群集和VM 性能至关重要。如前面I/O 路径中所述,所有读取/写入IO 均由本地控制器VM (CVM) 提
供服务,本地控制器VM 位于邻近常规VM 的每个虚拟机监控程序中。在CVM 的控制下,VM 的数据将在本地由CVM 提供服务并且位于本地磁盘中。当VM 从一个虚拟机监控程序节点移动到另一个时(或发生HA 事件时),最新迁移的VM 的数据将由现在的本地CVM 提供服务。在读取旧数据(存储在现在的远程节点/CVM 上)时,I/O 将由本地CVM 转发到远程CVM。所有写入I/O 将立即在本地出现。NDFS 会检测到I/O 从另一节点出现,并在后台将数据迁移到本地,现在将允许在本地为所有读取I/O 提供服务。为了不泛洪网络,只在读取时迁移数据。
下面我们将展示数据在虚拟机监控程序的节点之间移动时如何“跟随”VM 的一个示例:
可伸缩元数据
元数据是任何智能系统的核心,对文件系统或存储阵列而言甚至更为重要。就NDFS 而言,一些关键结构对于它的成功至关重要:它必须时刻保持正确(又称“严格一致性”),它必须可伸缩,而且它必须能够大规模执行。如前面架构部分所述,NDFS 使用“环式”结构作为键值存储,键值存储将存储重要元数据及其他平台数据(如状态等)。为了确保元数据的可用性和冗余,在奇数节点(如3、5 等)之间使用RF。
当元数据写入或更新时,写入或更新的行将被写入环中的一个节点,然后复制到n 个对等节点中(其中n 取决于群集大小)。大部分节点必须同意,然后才能提交任何内容,内容
的提交是使用paxos 算法强制执行的。这将确保所有作为平台一部分存储的数据和元数据的严格一致性。
下面我们将展示4 节点群集的元数据插入/更新的一个示例:
扩展时的性能也是NDFS 元数据的另一个重要结构。与传统的双控制器或“主”模型不同,每个Nutanix 节点负责整个平台元数据的一个子集。这消除了传统上允许群集中所有节点为元数据提供服务并进行管理的瓶颈现象。通过一致性哈希方案来尽量减少修改群集大小时键的重新分配(又称“添加/移除节点”)
当群集扩展时(例如从4 个扩展到8 个节点),为了确保“块感知”和可靠性,这些节点将被插入整个环中的节点之间。
下面我们将展示元数据“环”及其如何伸缩的一个示例:
Shadow Clones
Nutanix 分布式文件系统有一个称为“影子克隆”的功能,它支持“多读取者”场景下特定虚拟磁盘或VM 数据的分布式缓存。有关该功能的一个典型例子是,在VDI 部署期间,许多“链接克隆”会将读取请求转发到中心主VM 或“基准VM”。在VMware View 中,这被称为副本磁盘,通过所有链接的克隆读取,而在XenDesktop 中,这被称为MCS 主VM。这在任何可能有多个读取者的场景(如部署服务器、存储库等)中也会起作用。
数据或I/O 本地化是实现最高VM 性能的重要因素,也是NDFS 的关键结构。借助影子克隆,NDFS 将监控vDisk 访问趋势,这与监控数据本地化类似。但是,如果两个以上远程CVM(以及本地CVM)发出请求,并且所有请求都是读取I/O,则vDisk 将标记为不可变。一旦磁盘标记为不可变,则可通过每个向磁盘发出请求的CVM 在本地缓存vDisk (也称基准vDisk 的影子克隆)。
如此一来,每个节点上的VM 即可在本地读取基准VM 的vDisk。对于VDI 而言,这意味着副本磁盘可以通过每个节点进行缓存,所有针对基准的读取请求可以在本地获得服务。注意:为了不泛洪网络并有效利用缓存,只在读取时迁移数据。如果基准VM 已修改,将会放弃影子克隆并重新开始这一过程。影子克隆默认为禁用状态(在3.5 版及之前版本中),
可以使用以下NCLI 命令启用/禁用:ncli cluster edit-params
enable-shadow-clones=true
下面的示例将展示影子克隆的工作原理及其如何实现分布式缓存:
Elastic Dedupe Engine
弹性重复数据删除引擎是基于软件的NDFS 功能,可以在容量(HDD) 和性能(SSD/内存)层执行重复数据删除。在插入数据的过程中,会使用SHA-1 哈希以16K 的粒度为连续的数据流提取指纹。指纹只在插入数据时提取,之后则会永久性地存储到写入块的元数据中。这与传统方法相反,传统方法是利用后台扫描,需要重新读取数据,而Nutanix 直接在插入时提取指纹。对于能够在容量层执行重复数据删除的重复数据,则不需要扫描或重新读取数据,实际上可以删除重复副本。
注意:最初提取指纹时使用的是4K 的粒度,但在测试之后,16K 在重复数据删除和降低元数据开销这两方面的综合性能最佳。完成重复数据删除的数据保存到缓存中时,则使用4K。
下面的示例将展示弹性重复数据删除引擎伸缩和处理本地VM I/O 请求的方式:
当数据I/O 大小为64K 或更大时,在插入数据时会提取指纹。SHA-1 计算利用Intel 加速技术,这一过程仅产生非常小的CPU 开销。如果在插入数据时没有完成指纹提取(例如I/O 大小较小时),可以作为后台进程完成指纹提取。
弹性重复数据删除引擎不仅适用于容量磁盘层(HDD),而且适用于性能层(SSD/内存)。在确定重复数据后,依据相同指纹的多个副本,后台进程将使用NDFS MapReduce 框架(管理者)移除重复数据。对于正被读取的数据,数据会保存到NDFS 内容缓存,这是一个多层/池缓存。对具有相同指纹的数据的任何后续请求都将直接从缓存中提取。有关内容缓存和池结构的详细信息,请参阅I/O 路径概述中的“内容缓存”小节,或者单击此处。下面的示例将展示展示弹性重复数据删除引擎如何与NDFS I/O 路径进行交互: