以前部署集群需要的共享存储条件非常高,老一代用SCSI,还有昂贵的FC SAN,后来有了iSCSI用IP SAN的方式瞬间把共享存储的门栏降低了,实验环境甚至要求不高的生产环境很容易的部署iscsi存储。
Windows server操作系统很早就开始支持作为iscsi目标服务器。如果需要性能好一点选择不是太差的raid卡,多加几块硬盘,再加上万兆以太网卡,万兆交换机目前来说也不是很难实现。如果正好有万兆的带光纤口交换机,可以上以太网光纤网卡,甚至可以选择性能更好的IB光纤网卡(SMB直通),RDMA技术在两个或者多个计算机进行通讯的时候使用DMA, 从一个主机的内存直接访问另一个主机的内存。这些配件淘宝二手都比较便宜。
SMB3.0是SMB最新版本,提供了许多新功能,如:SMB透明故障转移,SMB多通道叠加,SMB直连(SMB Direct)等。SMB3.0能够在以太网上实现不错的文件访问速度,从而能匹敌DAS的性能。因而在Windows网络环境中,SMB可以作为替代iSCSI的另一个选择。
上面简单的介绍了几种共享存储的方式,相关知识点网络上都有,部署安装教程也很多。最近在研究hyper-v over SMB ,下面简单讲一下个人在部署当中碰到的问题。
我们知道hyper-v虚拟机可以存储在本地磁盘,但为了能够实现高可用性,需要把数据存储在共享存储上面,下图可以看出SAN和hyper-v over SMB之间的本质区别
双节点SMB故障转移集群共享需要部署Windows文件服务器角色,单节点只需设置共享文件夹即可,之前一直不明白这个文件服务器是如何使用的,上图windows file server node是2个Windows文件服务器节点,这2个Windows节点也要组成集群,可以和上面hyper-v server node在一个集群,也可以独立建一个集群,文件服务器角色本身也是需要接共享存储才能使用可以是DAS,FC SAN 。
这里可能有个疑问,既然是共享存储为什么不直接使用上图左边SAN这种方式,这里讲一下文件服务器角色的好处
Hyper-V over SMB是微软特有的存储解决方案有几个好处:
节约成本,重用旧有资产,使用便宜硬件。如果无需实现文件服务器的高可用性,那么任何一台连接的存储设备的PC都可以充当Hyper-V集群的共享存储的提供者,文件服务器的存储可以采用任何形式的存储模式(DAS、NAS和SAN,),因而甚至可以是PC中的本地磁盘。如果实现文件服务器的高可用性,文件服务器故障转移集群本身也需要共享存储,因而文件服务器集群要么采用SAN,要么采用共享SAS连接JBOD,FC SAN所需要交换机非常昂贵,或者你的SAN没有那么多的物理接口给多个hyper-v主机使用,那么SMB共享也不是不错的选择。推荐如下图所示通过共享SAS连接JBOD,JBOD比传统的RAID存储阵列便宜,它没有控制器,没有RAID的高可用性,但配合Windows Server存储空间特性,可以在文件服务器集群中实现高可用性和扩展性。
扩展性。文件服务器集群的节点可扩展。另外存储空间可扩展,如下图各个文件服务器节点可连接2个以上JBOD,配合存储空间特性实现大容量虚拟磁盘(存储空间特性需要微软验证的JBOD才支持,可以在此查阅通过验证的JBOD产品)。
兼容性。多一层文件服务器或文件服务器集群,上层应用只需访问文件服务器而无需知道底层存储的实现细节,因而可以兼容不同型号的产品。如下图两个JBOD可以来自不同厂家。
其他好处,Hyper-V和其他微软产品的完美配合以及微软的产品简单易用。
另外一个问题,在设置SMB共享文件夹的时候权限问题困扰了我好久,搜索了很多教程都没有重点提出这个问题,如果使用默认权限的话虚拟机是可以启动,但是无法做热迁移,就是把虚拟机从一个节点迁移到另外一个节点,会报错提示权限问题,无论是设置委派还是添加域管理员权限都不能实现迁移,最后添加了一个Everyone完全控制权限就成功了,但是这样肯定不符合安全设置,除非存储的网络是物理隔离的,但还是不建议这样操作,有时间再研究一下这个权限问题。
----------------更新------------------
在测试环境中创建双节点文件服务器角色运行成功,在我自己的生产环境中创建角色运行失败,一直没有找到原因,下面是错误日志(SMB是我的文件服务器角色名称,HYVM是群集名称)
在以下过程中,群集网络名称资源“SMB”无法在域“hx.x”中创建关联的计算机对象: Resource online。
相关错误代码文字为:
无法完成此功能。
请与域管理员合作以确保:
- 群集标识“HYVM”相同的容器中创建的。
- 尚未达到计算机对象配额。
- 如果存在现有的计算机对象,请使用“Active Directory 用户和计算机”工具验证群集标识“HYVM$”是否具有该计算机对象的“完全控制”权限。
由于我在生产环境AD域当中创建了一个HY的组织单位OU,把所有集群主机、集群名称计算机对象都移动到了HY下面,导致创建SMB文件服务器角色的时候因为没有权限失败,默认加入到域的计算机对象是在Computers这个OU下面。创建文件服务器角色需要集群名称计算机对象HYVM有 “创建计算机对象” 的权限(HYVM所在的OU),下面是权限设置方法:
在AD用户和计算机里面打开高级功能
打开HY属性安全选项卡,选择高级
点击添加角色
在弹出的页面当中选择主体,对象类型勾选计算机,查询HYVM集群名称
勾选创建计算机对象
设置完权限之后再次创建文件服务器角色就成功运行了,在HY下面多了一个文件服务器角色名称的计算机。也可以把HYVM移回到Computer 创建完角色之后再移动到其他OU。