随着Windows Server 2008 R2的发布,微软的Hyper-V虚拟化平台获得了大量必须的功能。微软增加了Hyper-V的功能,让其成为用于生产虚拟化的可行选择。Hyper-V R2在主机磁盘资源方面有许多的新功能,尤其是用于Windows故障转移集群上的高可用性虚拟机所使用的功能。
在本文中,TechTarget中国的特约虚拟化专家Greg Shields将介绍Hyper-V R2在集群共享卷(CSV)的新功能,允许多台虚拟机存储在单个逻辑单元号(LUN)上。
Hyper-V的磁盘局限
你可能听到一些关于Hyper-V R1磁盘限制的抱怨。在这一版Hyper-V里,集群的配置被强行安装在单个虚拟机所连接的LUN上。环境里的每台虚拟机都需要创建一个独立的LUN。
不为人所知的是这其实不是Hyper-V的问题。这些最初的磁盘问题实际上是基于与Windows Server 2008 RTM里的Windows故障转移集群服务器相关的限制。我在一篇文章中讨论过这个问题:使用集群共享卷提升虚拟主机资源利用率。
想想传统的NT文件系统(NTFS)以及故障转移集群如何使用磁盘资源。在最新版本的Failover Clustering里,集群里的每个节点都能感知是否拥有虚拟磁盘资源。不管里面的文件和文件夹,整个磁盘资源位于集群资源管理的边界。
这存在问题,因为依赖于某个集群节点的单个虚拟机也是集群资源。因此集群资源的故障转移需要其独立的磁盘资源也同时发生转移。在同个LUN上的多个虚拟机,在一台虚拟机进行故障转移时会牵涉到其他所有虚拟机。
为了克服这个问题,微软在Hyper-V R2里添加了Cluster Shared Volumes(集群共享卷,即CSV)。这个新功能给Hyper-V带来了集群感知,能在单个LUN上存储多个虚拟机。
不过关于这个新功能的设置仍然有一些混淆。就算升级到Windows Server 2008 R2,你会发现设置的过程包括大量的不明显的步骤。下面是配置并启用CSV的步骤:
创建一个集群。CSV专用于Windows故障转移集群。如果你的环境没有为Hyper-V虚拟机使用高可用性,这些步骤都没用。就算用Hyper-V R1,虚拟机没有高可用性就没有相同的磁盘限制。因此,在单个服务器情况下,你能在磁盘里安装你想要的那么多虚拟机。
启用CSV。创建好集群,在Cluster Failover Manager控制台启用CSV功能。如果你环境使用的是System Center Virtual Machine Manager,也可以这样做。点击右边窗口的集群名称,以在中间框弹出集群属性窗口。在这里选择“Enable Cluster Shared Volumes”。请注意,选择后就不能返回。
为CSV激活磁盘。这是启用CSV过程中最容易混淆的地方。当启用CSV功能,一个新的节点将出现在Failover Cluster Management控制台。这个节点标作“Cluster Shared Volumes”,为哪个磁盘应该使用CSV功能激活提供了地方。注意,任何由CSV激活的磁盘必须是空的。这个控制台不允许激活包含虚拟机的磁盘资源。
迁移虚拟机到CSV磁盘。创建好卷后,虚拟机能迁移到由CSV激活的磁盘。通过Hyper-V里的手动导入和导出功能迁移,或者,如果环境使用的是Virtual Machine Manager 2008 R2,自动重新配置或存储迁移更容易。当迁移虚拟机时,为了高可用性激活它们。
启动CSV并使用后,磁盘存储的位置将更改。虚拟机默认的磁盘存储位置在c:ClusterStorage里的各种子文件夹里变更。这个位置在Hyper-V主机的系统驱动上,但这不是虚拟机磁盘文件的真实位置。
CSV使用存储在集群里的每台服务器根驱动的信息,以确定磁盘资源上文件的所有权,并作为集群共享存储里的实际数据。由于CSV将安装这个文件夹到集群里每台服务器的根驱动上,微软需要每台服务器上的根驱动是相同的。对多数环境来说这不是问题,因为大多数仍然使用c: drive作为根驱动。
尽管有这些新功能,你应该仍然考虑Cluster Shared Volumes。与来自第三方的其他文件系统相比,CSV的集群感知的有限的。因此,你会发现在Hyper-V R2添加了对诸如Sanbolic公司的Melio FS或者Veritas Volume Manager的第三方集群文件系统的支持。这些第三方系统提供了比微软更大的对于集群感知的支持。