WSFC里面的文件服务器群集,文件始终是一份,数据始终存放在群集磁盘中,通过群集来维持文件服务器这项服务始终持续可用,在2012之前同一时间WSFC只能有一台节点对外提供文件服务,2012开始群集引入SOFS,同一时间多个节点都可以对外提供服务,但是注意,数据仍然是一份,2012是根据服务器连接随机决定访问到的节点,2012R2开始根据share目录来决定随机访问到的节点,即是说,数据还是一份,只不过后来多个节点同时对外提供服务,但都是访问的不同节点。

相比较而言,WSFC文件服务器群集是一种高可用架构,DFSR则是一种复制架构,同一份数据会被复制到多个成员服务器上,然后用户通过DFSN的一个逻辑名称去访问复制目标,后台由DFSR机制去驱动数据复制

每种方案都有自己的利弊,用户在实际环境使用时可以根据需要选择适用于自己的方案

DFS:适用于存放文件,应用,图片,等小文件,DFS复制不适用于复制打开后不会关闭的文件,例如VM,SQL文件,DFS复制最好是结果集文件,不建议频繁增删改的目录进行DFS复制,DFS复制通过DFS特有机制实现,管理员需要熟悉DFS复制原理,通过DFS可以针对复制时间进行控制,可以和AD集成控制不同站点子网客户端定位不同DFSR服务器,当侦测到一台DFSR成员服务器宕机,DFS可以自动完成切换,复制期间所有DFSR成员服务器都可以读写。

WSFC 传统文件服务器群集:简称TFSC(Traditional file server cluster),不同于DFS,如果将文件共享部署为TFSC架构,那么同一时间将只有一台节点对外提供服务,另外节点待命,当对外提供服务节点宕机,其它节点完成故障转移,TFSC支持和BranchCache整合,利用缓存提高用户对文件的访问速度,如果用户比较熟悉WSFC,那么可以考虑使用WSFC架构来为运营文件服务器群集,文件集中存放在共享存储,如有必要可以针对共享存储进行统一备份,不需要再单独学习其它功能。理论上来说传统文件服务器群集支持存放文件,应用,图片,大文件,数据库文件,虚拟机磁盘文件,ISO等,但是针对于数据库文件,虚拟机磁盘文件最佳还是建议存放至SOFS目录,因为可以结合SMB witness,DNS轮询等技术实现所有节点的AA架构,再配合SMB多通道,RDMA技术,性能更好,故障转移时间更短,TFSC只能做到AP架构。

WSFC 横向扩展文件服务器群集:简称SOFS(Scale-Out File Server),它最大的优势就是可以实现所有节点的AA模式,同一时间所有节点都可以对外提供服务,这样带来的好处就是故障转移时间更短,仅是一个重定向服务器的过程,对于存放虚拟机,数据库文件,性能更好,它的劣势就是对于信息工作者的文件,例如文档,图片等小文件并不适用于,这类文件在SOFS上面性能会缓慢,有时还会出现问题,因为SOFS不支持文件服务器的任何缓存,SOFS目前为止还是专门为虚拟机,数据库文件设计。

从归档的角度来说不论是SOFS还是TFSC都可以存放虚拟机磁盘文件,数据库文件,但是从正在使用的角度来说,假如是正在使用的虚拟机或数据库,则还是SOFS更加实用,因为SOFS底层是CSV,TFSC底层直接是群集磁盘,当发生故障转移时TFSC需要经过卸载挂载磁盘过程,SOFS底层是CSV,因此故障时间要短很多。

存储复制:Windows Server 2016新增技术,DFS复制是文件目录级别,存储复制是分区级别,DFS只支持复制关闭的文件,存储复制无此限制,DFS是分布式的,各个节点都可以读取,存储复制备站点暂时不可以读取,DFS可以提供统一对外名称,名称访问与复制功能分离,存储复制不提供统一对外名称,DFS主要用于复制关闭的文件,信息工作者文件,存储复制主要用于Hyper-V,SQL,文件服务器,大文件,私有云场景,存储复制可以在单机场景下帮我们保证分区级别的数据复制,也可以在群集场景下和WSFC整合,帮助我们跨站点的复制群集磁盘,保证计算+存储的双重高可用。

具体大家可以根据自身的场景选择合适的方案

上面我们说了一下WSFC和DFS以及最新的存储复制,所适用的不同场景,接下来我们再看WSFC和DFS的契合点

WSFC和DFS有关系的地方有三点

  1. DFS独立根命名空间群集角色

  2. DFS复制群集,通过DFS群集向外面成员服务器复制

  3. 文件共享见证

之前老王曾经有篇文章和大家提到过DFS的一些基础知识,故不再做过多赘述,简单来说DFS命名空间有两种,一种是域命名空间,这种架构,当用户访问的时候会通过域控制器查询命名空间服务器,根据算法挑选一台节点进行访问,当一台域命名空间服务器宕机,自动切换至其它节点,另外一种是独立根命名空间,这种架构就是我们不把命名空间数据写入域数据库中,可以选择单机或群集,用户每次查询DFS路径时,由单机或群集来提供服务器路径,单机就是仅一台机器提供空间服务,群集就是我们在群集中创建一个独立根命名空间的角色,然后通过AP架构,同一时间只有一台节点提供命名空间查询,该节点宕机后切换至其它节点,由于根保留在群集中因此它具有高可用性。此外,存储在群集上的文件共享上的任何数据也是高度可用的,在此实现中使用DFS的价值在于名称空间和链接高度可用,但缺点在于故障转移切换时间对比域命名空间架构略长。

除了直接在群集中部署共享和DFS独立根命名空间角色外,我们也可以部署域命名空间架构,但是添加已经部署在群集里面的文件共享作为目标,这样既保证了文件共享的高可用,也利用域命名空间提供的快速切换。

DFS复制群集,国内比较冷门的一个场景,从Server 2008R2开始引入,其大概意思是在群集节点上面配置DFS复制目标,让群集作为复制组成员,将TFSC里面的共享复制到远程的单机DFS,或远程DFS群集,远程单机不知道我这面是单机或是群集,只知道来自这个群集计算机给我发送复制 或 我需要向它提供复制,但其实背后是经过群集引擎协调,当其中一个群集节点宕机,远程DFS依然可以和群集计算机复制,只不过已经切换到另外一个节点提供复制服务。

操作步骤如下

  1. 为每个群集节点安装文件服务器,DFS管理工具

  2. 为群集配置TFSC角色,向导将自动配置DFS复制服务以实现高可用性

  3. 输入客户端访问点,远程DFS将通过此名称连接群集DFS,

  4. 选择群集DFS要使用的群集共享磁盘

  5. 在TFSC主节点开启DFS管理工具

  6. 创建DFS复制组,选择复制模型,来源目标,复制策略

实作步骤:https://blogs.technet.microsoft.com/filecab/2009/06/29/deploying-dfs-replication-on-a-windows-failover-cluster-part-iii/

应用场景

  1. 中心收集:各个分支机构汇总数据复制到总部,总部目标是群集架构,数据存放总部共享磁盘统一备份

  2. 灾难恢复:核心业务除了在总部机构通过群集实现高可用,将文件服务器设计成群集DFS目标,并且复制一份数据到远程DFS

文件共享见证,老王之前看到一些国内博客在WSFC上面使用DFS复制来提供文件共享见证,看起来高可用,但其实这不是被推荐的做法

弊病体现在跨站点群集最明显,以下图为例,当前SiteA SiteB两个站点各自两个节点,站点间通过Server 2016存储复制实现存储HA,每个站点内部有两台DFS复制服务器,两个站点DFS目标服务器组成复制组进行复制,提供的复制路径作为群集文件共享见证。

这样运作看起来没问题,但一旦发生网络分区的情况,就会遇上脑裂,我的意思是指SiteA与SiteB站点网络上失去链接,两个站点各自都拥有到各自站点DFS目标见证的资格,因此两站点内的群集分区都会以为自己是可用的,每个站点都将正常执行SQL客户端连接和编写/更新数据库,当网络恢复正常,存储开始复制的时候,一个非常可能的结果是,一方写的所有内容现在都消失了,强制仲裁启动后,被强制启动的一方所更新的内容将完全盖过另外一方。

因此对于文件共享见证来说,在多站点的情况下,在每个站点放置DFS复制服务器是很危险的事情,极有可能会导致群集脑裂,到时候就不好玩了,因此群集文件共享见证,DFS非常有讲究,为了避免脑裂,可以选择仅部署DFSN不配置DFS复制,或在一个第三方站点部署DFS复制,当两个站点发生灾难的时候,谁能联系上第三个站点的DFS复制路径谁就能获得启动群集。

即便是在单站点数据中心内,如果要使用DFS复制作为群集文件共享见证,也一定要确保不会发生网络分区的情况,不会出现网络不通了但部分群集节点可以联系到一台DFS节点,部分节点可以联系到另外一台DFS节点的情况,否则在这段时间内其中一方产生的数据,会在下次网络恢复时被消失。

在WSFC 2008R2 - 2016中我们可以为群集指定经过复制或未经过复制的DFS路径作为文件共享见证,WSFC 2019开始配置文件共享见证时将进行IsAlive检测,一旦检测到是DFS路径,则直接报错,DFS路径在WSFC 2019中被直接禁止作为见证,WSFC 2019中可以选的见证架构:TSFC共享,单机共享,磁盘见证,云见证,具体大家可以根据自身环境,以及需要见证来完成的事情来选择合适的见证架构。

在WSFC2019之前,只要设计得当,仍然可以使用DFS路径作为文件共享见证,WSFC 2019之前微软只是说不推荐这样做,很大程度上会发生脑裂,但老王认为设计得当仍是可行的,因为文件共享见证里面仅用于存放群集数据库配置log,记载着当前那个节点的群集数据库paxos标记为最新,这个数据WSFC 2008之后是可以实时从各个节点捞的,节点更新群集数据之后会自动更新log至文件共享见证,即便共享里面log不是最新,也可以随时从节点上获取最新的配置数据 。

转载于:https://blog.51cto.com/wzde2012/2165660

WSFC与DFS的更多相关文章

  1. BZOJ 3083: 遥远的国度 [树链剖分 DFS序 LCA]

    3083: 遥远的国度 Time Limit: 10 Sec  Memory Limit: 1280 MBSubmit: 3127  Solved: 795[Submit][Status][Discu ...

  2. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  3. BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1352  Solved: 780[Submit][Stat ...

  4. 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

    图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...

  5. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  6. POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)

    来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS   Memory Limit: 65536 ...

  7. 深度优先搜索(DFS)

    [算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...

  8. 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序

    3779: 重组病毒 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 224  Solved: 95[Submit][Status][Discuss] ...

  9. 【BZOJ-1146】网络管理Network DFS序 + 带修主席树

    1146: [CTSC2008]网络管理Network Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 3495  Solved: 1032[Submi ...

随机推荐

  1. Jenkins Pipeline 持续集成

    Jenkins Pipeline 持续集成 Pipeline Script 执行流程 在使用Pipeline之前请确保Jenkins是2.x版本以上,并且安装了Pipeline插件. Jenkins提 ...

  2. Java第十天,多态

    多态 一.多态的定义: 一个对象拥有多种形态,这就是对象的多态性.也就是说多态针对的是对象.多态的前提是接口和继承(C++中实行多继承,不存在接口). 二.多态在代码中的形式: 父类 对象名 = ne ...

  3. python 入门 之 Json 序列化

    开发网站,离不了Json 但是一般情况,不支持python的其它对象,怎么办? 有办法:Json 序列化!!! 总体来说,需要序列化的数据类型为 字典,类,嵌套类. 下面是我做的一个demo,都包含了 ...

  4. Android 6.0及以上版本如何实现从图库中选取图片和拍照功能

    XML 代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr ...

  5. Linux 磁盘管理篇,目录管理(一)

    目录:     当我们在linux的ext2档案建立一个目录时,ext2会分配一个inode与至少一块Block给该目录,其中inode记录该目录在相关属性,并指向分配到在那块Block,而block ...

  6. 学习《深入应用c++11》1

    C++11 让程序更简洁.更优雅 可调用对象 是一个函数指针 是一个具有operator()成员函数的类对象(仿函数) 是一个可被装换为函数指针的类对象 是一个类的成员(函数)指针 void func ...

  7. MODIS系列之NDVI(MOD13Q1)四:MRT单次及批次处理数据

    前言: 本篇文章的出发点是因为之前接触过相关研究,困囧于该系列资料匮乏,想做一个系列.个人道行太浅,不足之处还请见谅.愿与诸君共勉. 数据准备: MODIS数据产品MOD13Q1—以2010年河南省3 ...

  8. Dijkstra学习总结

    啥叫堆 可以看一下这个 https://www.cnblogs.com/xiugeng/p/9645972.html#_label0普通Dijkstra可以看一下 https://blog.csdn. ...

  9. cmake添加版本号

    vVersion.cmake文件内容如下: #vversion.cmake #vDateTime string(TIMESTAMP vDateTime "%Y%m%d-%H%M%S" ...

  10. [转] Roguelike开发建议

    该文所述的Roguelike为典型的Roguelike游戏,而非带着Roguelike元素的游戏. 以下内容为他在今年Roguelike开发者大会上的发言文字版. 引言 几年前召开的首届Rogueli ...