简介
分布式存储DSF(Distributed Storage Fabric)是一个分布式的存储架构,并可以像集中存储一样
呈现给Hypervisor,然而所有的I/O是在本地处理以提供更高的性能。Nutanix集群中的存储按层次结
构组织为几个组件,这些组件允许管理数据存储和性能特征。Nutanix集群包含存储池、存储容器和
虚拟磁盘组件,用于跨硬件(磁盘类型)层组织存储。通过Web控制台可以监视集群中的存储使用情况,
并且可以通过Web控制台创建存储池、存储容器以及卷组。
每个节点中的CVMs来自集群内的互连网络,集群中的每个节点都可以访问来自共享SSD、HDD和云资源
的数据。CVM允许在集群范围内对以vm为中心的软件定义的服务进行操作:快照、克隆、高可用性、灾
难恢复、重复数据删除、压缩、纠删码、存储优化等等。hypervisor (AHV、ESXi、Hyper-V)和DSF
使用行业标准协议NFS、iSCSI和SMB3进行通信。
下图展示了Nutanix节点如何构成DSF的一个例子:
存储组件
Nutanix集群中的存储组织为以下组件:
● 存储池(Storage Pool)
一个存储池是一组物理存储设备,包括集群内所有节点的PCIe SSD、SSD和HDD。存储池可以跨多个
Nutanix节点并且随着集群的扩展而扩展。在大部分情况下,建议单个集群配置一个存储池。可以使
用以下命令进行查看:
ncli sp ls
● 存储容器(Storage Container)
存储容器从逻辑上划分存储池,并包含一组虚拟机或者文件(即虚拟磁盘)。一些配置项(例如 RF)
是在容器层实现的,然后应用在单个虚拟机文件层面。 容器和Datastore是一一对应的(在NFS、SMB
场景中)。可以使用以下命令查看:
ncli ctr ls
● 虚拟磁盘文件(vDisk)
一个虚拟磁盘文件(vDisk)是DSF上任意一个大于512KB的文件(包括VMDK和虚拟机硬盘)。vDisk由
extent组成,它被分组并保存在磁盘上作为extend group。任何超过512KB的文件都是一个vDisk,
包括VMDK文件和VM硬盘。可以使用以下命令查看:
ncli vidsk ls
● 逻辑连续数据块(Extent)
一个Extent是逻辑上连续的1MB大小的数据块,它由n个连续的block组成(block 大小取决于不同操作
系统)。Extent的读写修改是基于更小的子块(也称为slice)以保证可粒度和有效性。当一个extent
的slice被读入cache时,可以根据被读取/cache的数据量大小被修剪。
● 物理连续数据块(Extent Group)
一个Extent Group是物理上连续存储的1MB或者4MB大小的数据块。它以文件的形式由CVM管理并保存在
磁盘上。Extent被动态分布在多个Extent组中,提供数据跨节点和磁盘的条带功能用来提高IO性能。
下图说明这些不同结构分类和各个文件系统之间的对应关系。
● Volume Groups(卷组)
卷组是逻辑上相关的虚拟磁盘(或卷)的集合。卷组附加到共享卷组中的磁盘的一个或多个VM或其他
iSCSI启动器。可以将卷组作为头等实体来管理:您可以将磁盘添加到卷组,将它们附加到一个或多
个VM当中,将它们包含在灾难恢复策略中,并执行其他管理任务。您还可以将卷组从其当前VM分离
出来,并将其附加到正在运行同一应用程序实例的另一个VM。
● Datastores/SMB Shares
数据存储是VM操作所需文件的逻辑容器。Nutanix在将存储卷作为数据存储挂载到vSphere中时,通
过同时支持iSCSI和NFS协议提供了选择。NFS与iSCSI相比具有许多性能和可伸缩性优势,是推荐的
数据存储类型。在Hyper-V环境中,存储容器被挂载为SMB共享。
● 结构分类和文件系统之间的对应关系如下图
创建Storage Pool
1、在创建集群时会自动创建存储池。并不需要有多个存储池,Nutanix建议使用单个存储池来保存
群集中的所有存储。此配置支持大多数用例,允许集群动态优化资源分布,如容量和IOPS。将磁盘
隔离到单独的存储池提供了虚拟机之间的物理隔离,但如果磁盘未被积极使用,也可能导致这些资
源的不平衡。
2、如下图,左侧为创建集群时自动创建的存储池,这个存储池会包含集群中的所有SSD/HDD,如果需
要使用新添加的硬盘再创建新的存储池,点击右上角的”+存储池”按钮进行创建。
3、另外,当有新的节点加入集群或集群添加了新硬盘以后,可以点击Storage Pool,然后点击
“Update”,将新硬盘加到存储池中。
创建Storage Container
1、创建存储容器之前,先确认群集已配置为与NTP服务器同步时间,并且集群中所有CVM上的时间已
同步且为当前时间。如果CVM上的时间早于当前时间,群集服务可能无法启动。从管理程序查看时,
存储容器中的文件也可能比当前时间提前时间戳。
2、如下图,集群创建时会默认创建存储容器,建议根据需求创建新的存储容器,比如创建一个专门
存储ISO映像文件的容器,按VM类型或业务分类创建不同的容器来存放虚拟机。
3、创建新的存储容器,填写名称,如果有多个存储池,选择一个存储池,高级选项中可以设置存储
容器的容量限制和保留容量,以及可以选择启用压缩,消重以及纠删码等功能。同时还可以设置文件
系统白名单,如果不设置,则默认使用集群的全局白名单设置。
4、根据Hypervisor的类型,集群以不同的方式处理存储容器。
● Hyper-V: 主机以SMB共享的形式访问存储容器
● vSphere: 主机将存储容器挂载为NFS数据存储。这需要访问vSphere api。确保拥有访问api的适当
vSphere许可。
● AHV: Nutanix VM管理脚本创建并管理每个虚拟磁盘,将其作为存储容器上的iSCSI目标。
5、如果CVM没有配置足够的内存,则不会创建存储容器。CVM内存分配需求的不同取决于所使用的模型
和特性。
6、NutanixManagementShare存储容器是内置存储容器用于Nutanix群集,此存储容器用于Nutanix
Files和Self-Server Portal(SSP)功能的文件存储,功能升级和其他功能操作。确保正确操作这些功
能,不要删除此存储容器。Nutanix还建议即使不使用这些功能,也不要删除此存储容器。此存储容器
不可用于存储对于vdisk,包括nutanix卷。
创建Volume Group
1、卷组是虚拟磁盘(vdisk)的集合。每个卷组都由一个名称和UUID标识。每个vDisk都有一个UUID和
一个SCSI索引,用于指定卷组中磁盘的顺序。
2、可以通过两种方法启用对卷组的访问,第一种是通过Nutanix Volumes以iSCSI方式访问卷组,第
二种是直接将选择分配给虚拟机。第二种方式仅在AHV中可用。可以使用Prism的Web控制台、Nutanix
REST API或nCLI或aCLI命令创建一个卷组,并将其作为SCSI磁盘附加到一个或多个VM上。
3、通过使用Prism web控制台将卷组附加到VM后,vDisk将作为SCSI设备出现在客户操作系统中。AOS
透明地处理VM上的负载平衡和路径弹性。直接附加的卷组支持CVM故障转移并且不影响VM迁移。
4、卷组与虚拟机VM必须位于同一个集群中,不支持SCSI-3持久性保留(SCSI PR)。卷组的管理独立于
它们所附加的vm。可以配置一个直接附加的卷组,以供单个VM(独占访问)或多个VM(共享访问)访问。
5、在存储页面点击”+卷组”按钮创建一个卷组”vg1”,这里我们添加两个新磁盘,并直接挂载到两个
Windows虚拟机VM。我们通过这个vg1来创建Windows Failover Cluster。
6、确认Windows Failover Cluster可以正常配置。
7、如果”启用外部客户端访问”,并添加Initiator的地址,则可以将VG给集群外部的虚拟机或物理主
机使用。
8、如下图,我们将VG映射给VMware ESXi主机。