VSAN使用磁盘组这个概念,它是一个磁盘和闪存设备的容器。部署在某个磁盘组的特定(存储)设备上的虚拟机存储只能利用同一个磁盘组中的闪存设备的缓存能力。磁盘组可以被视为一个用闪存来提供性能并用磁盘或闪存来提供容量的存储设备的集合。对于磁盘组的配置有很多需要注意的地方,接下去我们将细细道来。后文中我们提到VSAN磁盘组时所说的缓存设备,指的是SSD、PCIe闪存设备和NVMe闪存设备;提到容量设备则指的是磁盘(SATA、SAS或NL-SAS)、SSD、PCIe闪存设备和NVMe闪存设备。
在VSAN 6.2版中,每台主机最多可以有5个磁盘组,为了持久存储虚拟机,每个磁盘组包含至少一个缓存设备和一个容量设备。VSAN同时支持混合配置和全闪存配置,但是写作本书时,单个VSAN群集不能同时配置混合配置和全闪存配置。每个磁盘组最多可以包含1个缓存设备和7个容量设备。这意味着VSAN数据存储的最大容量是7个容量设备乘以5个磁盘组乘以群集中的ESXi主机数再乘以每个容量设备的容量。看见没,这种方法具有相当强的可扩展性,可以打造一个规模非常大的分布式数据存储。
磁盘组使得vSphere管理员可以定义故障域,在全闪存配置的情况下还能定义去重/压缩域。第5章将介绍去重和压缩的工作原理。现在,只需要知道它们是基于每个磁盘组的即可,因为这个会影响主机以及主机中的磁盘组的设计。设计一个磁盘组有很多种不同的方法,其中最重要的因素就是VSAN群集是全闪存的还是混合配置的。不过,故障域的概念对这两者都适用。让我们首先来看看这一点。对于多个由一个缓存设备和几个存储设备组成的磁盘组来说,如果其中一个磁盘组的缓存设备出现故障,故障的范围仅限于那个特定磁盘组中的容量设备。如果是一个包含了很多个容量设备的非常大的磁盘组,一个缓存设备的故障就会影响很多台虚拟机,因为这会影响整个磁盘组。因此在设计磁盘组配置的时候,故障域是非常重要的考量因素。图3-20显示了2台VSAN主机,第一台包含2个磁盘组,每个磁盘组都具有一个缓存设备和3个容量设备。第2台VSAN主机有一个磁盘组,其中包含一个缓存设备和6个容量设备。对于第一台主机来说,当缓存设备出现故障的时候,不会影响主机上的另一个磁盘组,这意味着50%的容量和性能仍然是可用的。而第2台主机受到的影响则会大得多,当缓存设备出现故障时所有6个容量设备都不可用。这就是所谓的磁盘组可以用于定义故障域的意思。
大多数情况下出于故障域或是性能方面因素的考虑,结果都会是采用多个磁盘组而不是单个磁盘组。不过,这带来一个有趣的话题。在全闪存配置下可以在群集层面上启用提高空间利用效率的功能(去重和压缩)。尽管去重和压缩功能的启用是基于群集层面的,但其作用的范围却是基于磁盘组的。这意味着对于在全闪存群集中的一个容量设备上存储的任意给定的数据块,VSAN会判断在那个特定的磁盘组上是否已经存在一个完全相同的块,如果有,那么就无需再保存一次;如果没有,VSAN就会执行数据压缩并把它保存在磁盘组上一个新的块中。这也意味着在全闪存配置中,根据工作负载的情况,创建一个大的磁盘组而不是多个小磁盘组可能更有好处,因为去重在较大的磁盘组中更有效。不过这需要更加谨慎的考虑,因为当一个磁盘组启用了去重和压缩之后,那个磁盘组的任何一个设备(无论是缓存设备还是容量设备)出现故障,都会影响整个磁盘组。这是因为空间效率的元数据(metadata)是分布在磁盘组中所有的容量设备上的。不管怎样选择都取决于管理员在风险和收益之间进行的权衡。
从硬件角度设计VSAN环境的时候,必须认识到VSAN的性能高度依赖于缓存设备(闪存)。根据经验,VMware建议缓存容量对虚拟磁盘容量总数的比率要达到10%,这个比率是在不考虑“可允许的故障数”的前提下算出的。VMware也支持更低的比例,但是较大的比率能事实上改善虚拟机的性能,因为更多的I/O能被缓存。在VSAN环境中,SSD将用作虚拟机的读缓冲和写缓存。现在,知道在混合配置的VSAN群集中70%的缓存设备会被用于读缓冲而30%用于写缓存就已经足够了。在全闪存配置中,100%的缓存设备都会被用作写缓存,而且10%法则也是适用的。不过增加(缓存)大小不会带来更大的性能提升,因为所有的IO已经全部由缓存来提供了。10%这个数值是基于大多数工作数据集的比率是10%这样一个假设得出的。根据这个经验数据(仅仅是经验数据)来进行配置意味着运行在虚拟机中的应用程序的活动数据应该都位于闪存之中。例如,假设我们有100台虚拟机,每台虚拟机有100GB虚拟磁盘,预期平均使用率是50GB。此时,可计算得出下面的结论:10%×(100×50GB) = 500GB这个数字是闪存容量的总数,应该除以主机的数量。如果你有5台主机,那么这个例子中可以算出每台主机建议配置的闪存容量为100GB。
在过去几个版本发布以来,选择自动模式还是手动模式一直是个热议的话题。我们发现大多数情况下,客户都喜欢自己控制磁盘组的设备构成的选择,而手动模式才能实现这一点。不过某些情况下,客户倾向于让VSAN来进行磁盘管理,这是完全受支持的。如果在VSAN创建流程中选择了自动模式,VSAN会自动发现每台主机上的本地磁盘和本地SSD,并在群集的每台主机上创建磁盘组。注意,这些SSD和磁盘只有在完全空置且没有任何分区信息的情况下才会被VSAN声明(claim)。VSAN不会声明那些正在被使用或者过去曾被用过并携带有数据的磁盘。要让VSAN声明这些磁盘,它们必须先被清空。每一台具有有效存储的主机都会有一个含有本地磁盘和SSD的磁盘组。简单来说,磁盘组可以被当作是一个磁盘和SSD的容器。如前所述,每个磁盘组只能包含一个缓存设备和最多7个容量设备,不过因不同的ESXi主机而异,一台主机可能会有多个磁盘组。最后,当所有这些都完成后,VSAN数据存储就创建好了,它的大小就是集群中所有主机提供的所有这些容量设备的容量总和减去一些元数据开销(metadata overhead)。对于那些不提供存储给VSAN数据存储的VSAN群集中的主机来说,它们仍然可以访问VSAN数据存储。这是VSAN的一个非常有用的特性,因为这样VSAN群集不仅仅可以因为存储需求而横向扩展,也可以仅仅因为计算需求进行扩展。不过请注意,出于更好地负载均衡、可用性和整体性能的考虑,VMware建议群集中的主机都采用完全一样的配置。尽管自动模式会声明本地(local)磁盘,大多数带有SAS控制器的ESXi主机会把它们的硬盘认作远程(Remote),因此VSAN不会自动声明这些磁盘。在这种情况下,即使群集是配置成自动模式的,vSphere管理员仍将不得不手工创建磁盘组,在第2章中我们曾经解释过这一点。
前面我们提过,在创建VSAN群集的时候你可以选择手工添加磁盘。如果选择了这个选项,管理员就可以利用VSAN配置向导程序来手工选择多个缓存设备和多个容量设备。管理员可以为每个磁盘组选择1~7个容量设备和最多一个缓存设备。每当一台主机上的磁盘组创建完成,VSAN数据存储就会根据已经添加的容量设备增长容量。注意,用作缓存设备的SSD是不被计入VSAN数据存储的容量的。你可能会想这个手工选项什么时候才用得上呢?首先也是最主要的原因是,这是全闪存环境的必要条件,用来确保为缓存层和容量层选择正确的闪存类型。另一个可能的原因如下:当VSAN在构建磁盘组的时候,它总试图用一种前后一致的方式来进行。然而,因为使用的是很多种不同类型的服务器,尤其是那些使用SAS来连接磁盘的服务器,手工的方法或许比自动模式更重要。SAS通过唯一标识符来定义设备而不是用基于端口的方式。因此在第一台主机上插槽1中的磁盘可能加入了ESXi主机1的磁盘组1,而在ESXi主机2上第一个插槽里面的磁盘可能加入的却是磁盘组2。当不管因为什么原因需要更换磁盘的时候,最最重要的是把正确的磁盘移除并更换成一块新磁盘。正因为如此,vSphere管理员可能希望手工配置磁盘组,以便能轻松地对磁盘进行标识。而且我们发现,这正是大多数客户正在实践的做法,因为它让替换设备更轻松。当使用了全闪存配置且类似去重和压缩这类功能被启用时,所有磁盘必须同时被声明,而不能一个一个地被声明。
创建磁盘组的操作仅在群集创建时选择了手工模式后才需要进行。如果群集是以自动模式创建的,那么磁盘组就会自动帮你创建好,并且自动加入主机上所有可用的磁盘。创建一个磁盘组的方法非常简单,不过如前面所提过的,有一些限制条件需要注意:每个磁盘组最多只能有1个缓存设备每个磁盘组最多可以有7个容量设备如果一台主机含有7个以上的容量设备或者多于1个的缓存设备,那么可以创建多个磁盘组。要创建一个磁盘组,群集必须首先配置成手工模式,如图3-21所示。这个可以在VSAN配置过程中完成,不过也可以在VSAN配置完成后再变更成手动模式。
当群集处于手工模式,VSAN不会试图声明存储设备。下一步就是手工创建磁盘组。用vSphere Web Client导航到VSAN管理下面的Disk Management(磁盘管理)部分时,选择群集中的某一台主机,点击图标来创建一个新的磁盘组。这将会把主机上所有可用的磁盘(包括SSD和磁盘)显示出来,如图3-22所示。
此时vSphere管理员有很多可选项。如果愿意,管理员可以决定声明所有主机上的所有磁盘,或者他们可以一台一台地依次为每台主机创建磁盘组。如果磁盘是显示为not local(例如那些位于SAS控制器后面的磁盘),第一个选项会很有用。然而为了在更细的粒度上进行控制,管理员可能喜欢每次只为一台主机创建磁盘组。当你决定手工创建磁盘组时,vSphere Web Client提供了一个非常直白的用户界面(UI),你可以在这个用户界面中一次性选择容量设备和缓存设备,如图3-23所示。如果选择点击第一个图标(声明磁盘图标),可以一步就完成选择所有主机上的所有磁盘。如果点击的是第二个图标(创建磁盘组),那么就会一次仅对那一台主机上的磁盘进行操作。注意向导程序上方的指引文字。主机提供给VSAN的存储必须至少包括一个缓存设备和一个容量设备。现实中,一般来说容量设备的数量会比缓存设备多很多。关于VSAN的最大数值,让我们再重申一次:一个磁盘组仅能包括1个缓存设备但是可以有多达7个容量设备。一旦磁盘组创建完成,VSAN数据存储就创建好了。现在VSAN数据存储就可以用于部署虚拟机了。
VSAN数据存储的大小是由群集中的ESXi主机数、每台ESXi主机的容量设备数决定的。还有一些元数据开销需要考虑。例如,如果一台群集中的主机有7块2TB的磁盘,整个群集有8台主机,原始容量将有:7×2TB×8 = 112TB现在我们知道了如何计算有多少原始容量可用,那么如何获知我们能拥有多少有效容量呢?好吧,这取决于多个不同因素,不过这一切都始于硬件配置到底是全闪存还是混合配置。在创建VSAN群集时,取决于配置到底是全闪存还是混合配置,你会知道是否具有选项“去重和压缩”。去重和压缩对全闪存配置的容量来说扮演着非常重要的角色。注意这些数据服务对混合配置是不存在的。我们将在第5章深入探讨去重和压缩。
但是不仅仅是去重和压缩,我们还需要考虑虚拟机的副本数量,这是通过基于策略的管理构架来启用的。创建完磁盘组后,VSAN就配置完成了。VSAN数据存储一旦构建完成,它的很多数据存储功能就会在vCenter Server界面中显示出来。这些功能将会用于创建相应的虚拟机存储策略,并应用于部署在VSAN数据存储上的虚拟机及其关联的虚拟磁盘(VMDK)存储对象上。其功能包括条带宽度(stripe width)、允许的故障数(number of failures to tolerate)、强制置备(force provisioning)、已配置容量(provisioned capacity),以及复制机制(replication mechanism)是为性能优化还是为容量优化的。然而,在开始部署虚拟机之前,首先需要理解如何创建合适的虚拟机存储策略来满足虚拟机内运行着的应用的需求。虚拟机存储策略和VSAN的功能将在第4章中深入探讨。现在需要知道的是这些功能形成了虚拟机策略的需求。在需要进行虚拟机置备时,它们使vSphere管理员可以基于性能、可用性和数据服务来提出需求。下一章我们将讨论在VSAN语境下的虚拟机存储策略,以及如何正确地利用VSAN的功能来部署一台虚拟机。
相关资源:VMware Virtual SAN权威指南