开启辅助访问

超融合+云计算论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4501|回复: 10
收起左侧

[原理架构] Nutanix产品体系架构之—运行机制

[复制链接]
发表于 2015-8-30 22:50:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

如何工作

数据保护

目前,Nutanix 平台使用复制因子 (RF) 来确保节点或磁盘发生故障时数据的冗余和可用性。如“架构设计”部分所述,OpLog 充当一个临时区域,将传入的写入吸收到低延迟的 SSD 层。将数据写入本地 OpLog 时,在被主机确认 (Ack) 为成功写入之前,数据将会同步复制到另外的一个或两个 Nutanix CVM 的 OpLog 中(取决于 RF)。这将确保数据存在于至少两个独立的位置,且具有容错能力。所有节点均参与 OpLog 复制以避免出现任何“热节点”并确保扩展时的线性性能。

然后,将数据异步排出到隐式维持 RF 的盘区存储中。之后在节点或磁盘出现故障的情况下,会将数据在群集中的所有节点之间重新复制以维持 RF。

下面我们将展示此过程的逻辑表现形式的一个示例:

NDFS_OplogReplication.png


数据位置

作为一个融合的(计算+存储)平台,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 的一个示例:

ntnx-bible-how-it-works-02.png


可伸缩元数据

元数据是任何智能系统的核心,对文件系统或存储阵列而言甚至更为重要。就 NDFS 而言,一些关键结构对于它的成功至关重要:它必须时刻保持正确(又称“严格一致性”),它必须可伸缩,而且它必须能够大规模执行。如前面架构部分所述,NDFS 使用“环式”结构作为键值存储,键值存储将存储重要元数据及其他平台数据(如状态等)。为了确保元数据的可用性和冗余,在奇数节点(如3、5 等)之间使用 RF。

当元数据写入或更新时,写入或更新的行将被写入环中的一个节点,然后复制到 n 个对等节点中(其中 n 取决于群集大小)。大部分节点必须同意,然后才能提交任何内容,内容的提交是使用 paxos 算法强制执行的。这将确保所有作为平台一部分存储的数据和元数据的严格一致性。

下面我们将展示 4 节点群集的元数据插入/更新的一个示例:


ntnx-bible-how-it-works-03.png

扩展时的性能也是 NDFS 元数据的另一个重要结构。与传统的双控制器或“主”模型不同,每个 Nutanix 节点负责整个平台元数据的一个子集。这消除了传统上允许群集中所有节点为元数据提供服务并进行管理的瓶颈现象。通过一致性哈希方案来尽量减少修改群集大小时键的重新分配(又称“添加/移除节点”)

当群集扩展时(例如从 4 个扩展到 8 个节点),为了确保“块感知”和可靠性,这些节点将被插入整个环中的节点之间。

下面我们将展示元数据“环”及其如何伸缩的一个示例:

ntnx-bible-how-it-works-04.png


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

下面的示例将展示影子克隆的工作原理及其如何实现分布式缓存:

ntnx-bible-how-it-works-05.png


Elastic Dedupe Engine

弹性重复数据删除引擎是基于软件的 NDFS 功能,可以在容量 (HDD) 和性能(SSD/内存)层执行重复数据删除。在插入数据的过程中,会使用 SHA-1 哈希以 16K 的粒度为连续的数据流提取指纹。指纹只在插入数据时提取,之后则会永久性地存储到写入块的元数据中。这与传统方法相反,传统方法是利用后台扫描,需要重新读取数据,而 Nutanix 直接在插入时提取指纹。对于能够在容量层执行重复数据删除的重复数据,则不需要扫描或重新读取数据,实际上可以删除重复副本。  

注意:最初提取指纹时使用的是 4K 的粒度,但在测试之后,16K 在重复数据删除和降低元数据开销这两方面的综合性能最佳。完成重复数据删除的数据保存到缓存中时,则使用 4K。

下面的示例将展示弹性重复数据删除引擎伸缩和处理本地 VM I/O 请求的方式:

NDFS_EDE_OnDisk2.png

当数据 I/O 大小为 64K 或更大时,在插入数据时会提取指纹。SHA-1 计算利用 Intel 加速技术,这一过程仅产生非常小的 CPU 开销。如果在插入数据时没有完成指纹提取(例如 I/O 大小较小时),可以作为后台进程完成指纹提取。

弹性重复数据删除引擎不仅适用于容量磁盘层 (HDD),而且适用于性能层(SSD/内存)。在确定重复数据后,依据相同指纹的多个副本,后台进程将使用 NDFS MapReduce 框架(管理者)移除重复数据。对于正被读取的数据,数据会保存到 NDFS 内容缓存,这是一个多层/池缓存。对具有相同指纹的数据的任何后续请求都将直接从缓存中提取。有关内容缓存和池结构的详细信息,请参阅 I/O 路径概述中的“内容缓存”小节,或者单击此处。

下面的示例将展示展示弹性重复数据删除引擎如何与 NDFS I/O 路径进行交互:

ntnx-bible-how-it-works-07.png


网络和 I/O

Nutanix 平台没有利用任何底板来实现节点间通信,只依靠标准 10GbE 网络。专用私有网络上的虚拟机监控程序可以处理在 Nutanix 节点上运行的 VM 的所有存储 I/O。虚拟机监控程序处理 I/O 请求,然后将请求转发到本地 CVM 上的私有 IP。随后,CVM 将使用其外部 IP,通过公有 10GbE 网络对其他 Nutanix 节点执行远程复制。对于所有读取请求,大多数情况下都可以在本地完成,而不需要利用 10GbE 网络。

这意味着,利用公有 10GbE 网络的流量只有 NDFS 远程复制流量和 VM 网络 I/O。但是,如果 CVM 发生故障或数据位于远程位置,CVM 会将请求转发到群集中的其他 CVM。同时,群集范围内的任务(例如磁盘平衡)会在 10GbE 网络上临时生成 I/O。

下面的示例将展示 VM 的 I/O 路径如何与私有和公有 10GbE 网络进行交互:

ntnx-bible-how-it-works-08.png


CVM Autopathing

对于 NDFS,可靠性和灵活性即使不是最重要的部分,也是一个关键部分。作为一个分布式系统,NDFS 的作用是处理组件、服务和 CVM 故障。本节将介绍如何处理 CVM 故障(未来的更新中将介绍如何处理组件故障)。CVM 故障包括用户关闭 CVM 电源、CVM 滚动升级或可能导致 CVM 发生故障的任何事件。NDFS 有一个称为“自动寻路”的功能,当本地 CVM 不可用时,则由另一个 CVM 透明地处理 I/O。

虚拟机监控程序和 CVM 使用私有 192.168.5.0 网络在专用 vSwitch 上进行通信(前文已有详细说明)。这意味着,对于所有存储 I/O,这一过程发生在 CVM 的内部 IP 地址上 (192.168.5.2)。CVM 的外部 IP 地址用于远程复制和 CVM 通信。

下面的示例将展示此过程:

ntnx-bible-how-it-works-09.png

如果本地 CVM 发生故障,之前由本地 CVM 托管的本地 192.168.5.2 地址将不可用。NDFS 将自动检测到这一中断,并通过 10GbE 将这些 I/O 重定向到群集中的另一个 CVM。重新路由过程对主机上运行的虚拟机监控程序和 VM 都是透明的。这意味着,即使 CVM 电源已经关闭,VM 仍然能够继续为 NDFS 执行 I/O。NDFS 也能够自我修复,这意味着它将检测到 CVM 已经关闭电源,并将自动重新启动或开启本地 CVM 电源。一旦本地 CVM 恢复并可用,流量将无缝地回传并由本地 CVM 提供服务。

下面我们将展示故障 CVM 的这一过程的图形表示:

ntnx-bible-how-it-works-10.png


磁盘平衡

NDFS 采用极其动态的平台设计,可以处理各种工作负载,并且一个群集可以混合使用多种异类节点:计算密集型(3050 等)和存储密集型(60X0 等)。混合使用具有较大存储容量的节点时,必须确保数据均匀分布。

NDFS 拥有一个称为“磁盘平衡”的本机功能,该功能用于确保数据在整个群集中均匀分布。磁盘平衡控制节点对其本地存储容量的利用率,并与 NDFS ILM 集成。其目的是,一旦利用率达到一定阈值,就让节点之间的利用率保持均匀。

下面的示例将展示处于“不平衡”状态的混合群集 (3050 + 6050) :

ntnx-bible-how-it-works-11.png

磁盘平衡利用 NDFS 管理者框架,作为预定进程运行,并在超过阈值时运行(例如本地节点容量利用率 > n %)。如果数据不平衡,管理者将确定需要移动的数据,并将任务分布到群集中的各个节点。

如果节点类型是同类(例如 3050),利用率应特别均匀。但是,如果某个节点上运行的某些 VM 写入的数据多于其他节点,则每个节点的容量利用率会有所倾斜。在这种情况下,磁盘平衡会开始运行,并将该节点上的最冷数据移动到群集中的其他节点。

如果节点类型是异类(例如 3050 + 6020/50/70),或者某个节点用于“仅限存储”模式(不运行任何 VM),则可能需要移动数据。

下面的示例将展示运行磁盘平衡后处于“平衡”状态的混合群集:

ntnx-bible-how-it-works-12.png

在有些情况下,客户可能需要以“仅限存储”状态运行某些节点,CVM 只在主要用于批量存储容量的节点上运行。

下面的示例将展示混合群集中的仅限存储节点,磁盘平衡将数据从活动 VM 节点移动到该节点:

ntnx-bible-how-it-works-13.png


软件定义的控制器架构

如上所述(可能有无数次),Nutanix 平台是基于软件的解决方案,以“捆绑式的软件+硬件设备”进行销售。控制器 VM 是绝大多数 Nutanix 软件和逻辑所在的地方,它的设计初衷是一个可扩展的且可插拔的体系架构。

通过软件定义且不依赖任何硬件卸载或构造的一个重要优势在于可扩展性。与任何产品生命周期一样,它经常会推出改进功能和新功能。由于不依赖任何自定义 ASIC/FPGA 或硬件功能,Nutanix 可以通过简单的软件更新来开发并部署这些新功能。这意味着,通过升级 Nutanix 软件的当前版本,即可部署新功能(如重复数据删除)。这样还可以在传统硬件型号上部署较新的功能。

例如,在早期的硬件平台(例如 2400)上,运行一个使用旧版 Nutanix 软件的工作负载。当前运行的软件版本不提供重复数据删除功能,而此功能对工作负载大有益处。为了获得这些功能,您在工作负载运行过程中对 Nutanix 软件版本执行滚动升级,现在便拥有了重复数据删除功能。整个过程就是这样简单。

与添加功能类似,在 NDFS 中创建新“适配器”或接口是另一个重要功能。当产品首次发货时,它只支持来自虚拟机监控程序的 I/O 使用 iSCSI,而现在则包括 NFS 和 SMB。未来将能够为各种工作负载和虚拟机监控程序(HDFS 等)创建新适配器。同样,通过软件更新即可完成部署。

这与几乎所有传统基础架构相反,因为通常必须升级硬件或购买软件,才能获得“最前沿最优秀”的功能。Nutanix 则不同,因为所有功能都在软件中部署,它们可以在任何硬件平台、任何虚拟机监控程序上运行,并且通过简单的软件升级即可完成部署。

下面我们将展示软件定义的控制器框架的逻辑表现形式:

ntnx-bible-how-it-works-14.png


存储分层与优先级

上文中的“磁盘平衡”一节讨论了 Nutanix 群集中的所有节点之间如何共用存储容量,以及如何使用 ILM 将热数据保存到本地。类似的概念适用于磁盘分层,其中群集的 SSD 和 HDD 层属于群集范围,NDFS ILM 负责触发数据移动事件。

对于本地节点上运行的 VM 生成的所有 I/O,本地节点的 SSD 层始终是优先级最高的层,但是群集的所有 SSD 资源可用于群集内的所有节点。SSD 层将始终提供最高性能,它也是混合阵列需要管理的一个重要事项。

可以按照以下原则在较高级别上划分层优先级:

ntnx-bible-how-it-works-15.png

特定类型的资源(例如 SSD、HDD 等)实现共用,形成群集范围内的存储层。这意味着,群集内的任何节点都可以利用整个层容量,无论是否位于本地。

下面我们将展示共用分层的一个高级示例:

ntnx-bible-how-it-works-16.png

一个常见的问题是,如果本地节点的 SSD 满了将会出现什么情况?正如“磁盘平衡”一节所述,一个重要概念是尽量让磁盘层内的设备利用率保持均匀。如果某个本地节点的 SSD 利用率很高,磁盘平衡将开始起作用,将本地 SSD 上的最冷数据移动到群集中的其他 SSD。这样可以释放本地 SSD 上的空间,以便让本地节点写入到本地 SSD,而不是通过网络。值得一提的是,所有 CVM 和 SSD 都可用于此远程 I/O,以消除任何潜在的瓶颈,并修复通过网络执行 I/O 的某些问题。

ntnx-bible-how-it-works-17.png

另一种情况是,当整体层利用率超过特定阈值 [curator_tier_usage_ilm_threshold_percent (Default=75)] 时,NDFS ILM 将开始起作用并作为管理者工作的一部分,将数据从 SSD 层向下迁移到 HDD 层。这将使利用率保持在上述阈值范围内,或者释放以下数量的空间 [curator_tier_free_up_percent_by_ilm (Default=15)],取两者中较大者。需要向下迁移的数据使用最后一次访问时间进行选择。

如果 SSD 层利用率为 95%,则 SSD 层中 20% 的数据将移动到 HDD 层 (95% –> 75%)。但是,如果利用率为 80%,按照最少的层释放数量,只有 15% 的数据会移动到 HDD 层。

ntnx-bible-how-it-works-18.png

NDFS ILM 将持续监控 I/O 模式并按需要(向下/向上)迁移数据,同时还会将最热数据保存在本地,而不论其在哪一层。


可用性域

可用性域(也称节点/块/机架感知)是分布式系统在确定组件和数据位置时所遵循的一个关键结构。NDFS 当前具有节点和块感知功能,但随着群集大小不断增加,将增加机架感知功能。Nutanix 用“块”指代包含一个、两个或四个服务器“节点”的机架。注意:要激活块感知,必须使用 3 个块。

例如,3450 是一个具有 4 个节点的块。跨多个块分布角色或数据的原因在于,当一个块发生故障或需要维护时,系统可以不间断地继续运行。注意:在块中,冗余 PSU 和风扇是唯一共享的组件。

感知可以分为几个关键领域:

  • Data (The VM data)
  • Metadata (Cassandra)
  • 配置数据 (Zookeeper)

数据

借助 NDFS,数据副本将写入到群集中的其他块,以确保在某个块发生故障时或计划停机时间,数据仍然可用。这同样适用于 RF2 和 RF3 场景以及块故障。

可以与“节点感知”做一个简单比较,在节点感知中,副本需要复制到另一个节点,从而在节点发生故障时提供保护。块感知在块发生中断时提供数据可用性保证,进一步加强了保护。

下面我们将展示副本位置在有 3 个块的部署中有何作用:

NDFS_BlockAwareness_DataNorm.png

如果块发生故障,块感知将保持运行,重新复制的块将复制到群集中的其他块:

NDFS_BlockAwareness_DataFail2.png

Metadata

Nutanix 利用经过大量修改的 Cassandra 平台存储元数据和其他必要信息。Cassandra 利用环式结构并复制到环中的 n 个对等位置,以确保数据一致性和可用性。

下面的示例将展示包含 12 个节点的群集的 Cassandra 环:

  NDFS_CassandraRing_12Node3.png

Cassandra 对等复制在整个环中以顺时针方向遍历各个节点。借助块感知功能,对等节点分布于各个块中,以确保同一个块上不会有两个对等节点。

下面我们将展示一个节点布局示例,将上述环转换为基于块的布局:

  NDFS_CassandraRing_BlockLayout_Write2.png

借助这种块感知特性,如果块发生故障,仍然至少有两个数据副本(适用于元数据 RF3 - 在更大群集中可以使用 RF5)。

配置数据

Nutanix 利用 Zookeeper 存储用于群集的必要配置数据。这一角色也以块感知方式分布,以在块发生故障时确保可用性。

下面我们将展示以块感知方式分布的 3 个 Zookeeper 节点的布局示例:

  NDFS_Zookeeper_BlockLayout.png

如果块中断,Zookeeper 节点的意义也就消失了,Zookeeper 的角色将转换到群集中的另一个节点,如下所示:

NDFS_Zookeeper_BlockLayout_Fail.png

本帖被以下淘专辑推荐:

欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复

使用道具 举报

发表于 2016-1-18 11:18:50 | 显示全部楼层
谢谢分享:D
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复

使用道具 举报

发表于 2016-1-24 20:13:27 | 显示全部楼层
学些新知识,掌握新技能
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复 支持 反对

使用道具 举报

发表于 2016-4-7 12:50:09 | 显示全部楼层
Thanks
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复

使用道具 举报

发表于 2016-7-18 22:22:29 | 显示全部楼层
谢谢分享,学习中
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复 支持 反对

使用道具 举报

发表于 2016-11-24 16:42:14 | 显示全部楼层
谢谢分享!内容我喜欢!
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复 支持 反对

使用道具 举报

发表于 2018-5-18 16:00:31 | 显示全部楼层
谢谢楼主分享
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复 支持 反对

使用道具 举报

发表于 2018-5-22 15:02:12 | 显示全部楼层
感谢楼主的分享
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复 支持 反对

使用道具 举报

发表于 2019-3-16 21:49:38 | 显示全部楼层
thank you!!!!!
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复

使用道具 举报

发表于 2019-3-16 22:03:13 | 显示全部楼层
thank you !!!!!!
欢迎来到 【nutanix.club】最大的中文超融合&云计算社区 请记住我们的网址 www.nutanix.club [这是默认签名,更换签名点这里!]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部快速回复上一主题下一主题返回列表微信扫一