WSFC与DFS
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有关系的地方有三点
DFS独立根命名空间群集角色
DFS复制群集,通过DFS群集向外面成员服务器复制
文件共享见证
之前老王曾经有篇文章和大家提到过DFS的一些基础知识,故不再做过多赘述,简单来说DFS命名空间有两种,一种是域命名空间,这种架构,当用户访问的时候会通过域控制器查询命名空间服务器,根据算法挑选一台节点进行访问,当一台域命名空间服务器宕机,自动切换至其它节点,另外一种是独立根命名空间,这种架构就是我们不把命名空间数据写入域数据库中,可以选择单机或群集,用户每次查询DFS路径时,由单机或群集来提供服务器路径,单机就是仅一台机器提供空间服务,群集就是我们在群集中创建一个独立根命名空间的角色,然后通过AP架构,同一时间只有一台节点提供命名空间查询,该节点宕机后切换至其它节点,由于根保留在群集中因此它具有高可用性。此外,存储在群集上的文件共享上的任何数据也是高度可用的,在此实现中使用DFS的价值在于名称空间和链接高度可用,但缺点在于故障转移切换时间对比域命名空间架构略长。
除了直接在群集中部署共享和DFS独立根命名空间角色外,我们也可以部署域命名空间架构,但是添加已经部署在群集里面的文件共享作为目标,这样既保证了文件共享的高可用,也利用域命名空间提供的快速切换。
DFS复制群集,国内比较冷门的一个场景,从Server 2008R2开始引入,其大概意思是在群集节点上面配置DFS复制目标,让群集作为复制组成员,将TFSC里面的共享复制到远程的单机DFS,或远程DFS群集,远程单机不知道我这面是单机或是群集,只知道来自这个群集计算机给我发送复制 或 我需要向它提供复制,但其实背后是经过群集引擎协调,当其中一个群集节点宕机,远程DFS依然可以和群集计算机复制,只不过已经切换到另外一个节点提供复制服务。
操作步骤如下
为每个群集节点安装文件服务器,DFS管理工具
为群集配置TFSC角色,向导将自动配置DFS复制服务以实现高可用性
输入客户端访问点,远程DFS将通过此名称连接群集DFS,
选择群集DFS要使用的群集共享磁盘
在TFSC主节点开启DFS管理工具
创建DFS复制组,选择复制模型,来源目标,复制策略
应用场景
中心收集:各个分支机构汇总数据复制到总部,总部目标是群集架构,数据存放总部共享磁盘统一备份
灾难恢复:核心业务除了在总部机构通过群集实现高可用,将文件服务器设计成群集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的更多相关文章
- BZOJ 3083: 遥远的国度 [树链剖分 DFS序 LCA]
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 1280 MBSubmit: 3127 Solved: 795[Submit][Status][Discu ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- POJ_2386 Lake Counting (dfs 错了一个负号找了一上午)
来之不易的2017第一发ac http://poj.org/problem?id=2386 Lake Counting Time Limit: 1000MS Memory Limit: 65536 ...
- 深度优先搜索(DFS)
[算法入门] 郭志伟@SYSU:raphealguo(at)qq.com 2012/05/12 1.前言 深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法.它的思想是从一 ...
- 【BZOJ-3779】重组病毒 LinkCutTree + 线段树 + DFS序
3779: 重组病毒 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 224 Solved: 95[Submit][Status][Discuss] ...
- 【BZOJ-1146】网络管理Network DFS序 + 带修主席树
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3495 Solved: 1032[Submi ...
随机推荐
- 1062 Talent and Virtue (25分)(水)
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- flask from_object和from_pyfile的区别
flask from_object和from_pyfile的区别 from_object接受的是一个模块对象,需求导入 from_pyfile接受的是一个文件名的字符串,文件可以不是py文件也可以是 ...
- Adb adb push (remote write failed: No space left on device)
修改完成程序后, mm 后, 准备要push 进到公司测试手机里面的.之前还真的没有遇到过这个问题,查了一下, 应该是手机没空间了的 sudo adb root sudo adb remount su ...
- Python——详解__str__, __repr__和__format__
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第10篇文章,我们来聊聊Python当中的类. 打印实例 我们先从类和对象当中最简单的打印输出开始讲起,打印一个实例 ...
- 操作文件-取出一个60s内log日志中ip访问次数超过100次的ip
import timea=0while True: d={} f = open(r"/Users/**juan/Downloads/access.log",encoding=&qu ...
- ThinkPHP3.2.3发送微信模板消息
一.开通模板消息功能 所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限:需要选择公众账号服务所处的2个行业,每月可 ...
- AJ学IOS 之小知识之_xcode插件的删除方法_自动提示图片插件KSImageNamed有时不灵_分类或宏之类不能自动提示,
AJ分享,必须精品 一:解决解决自动提示图片插件KSImageNamed有时不灵_分类或宏之类不能自动提示 其实,插件神马的我们自己也能写,并没有想象中的那么难,不过目前我们还是先解决当前问题 在做微 ...
- 玩转控件:Fucking ERP之流程图
前言 首先,跟守护在作者公众号和私信作者催更的朋友们道个歉.疫情的原因,公司从年初到现在一直处于996+的高压模式,导致公众号更新频率较低.而且作者每更新一篇原创公众号,既要对自己沉淀知识负责,也要对 ...
- Cucumber(4)——jenkins的集成
目录 回顾 必备知识 集成方法 回顾 在上几节中,关于cucumber的知识我已经全部的介绍完了,但是近期,jenkins大行其道,在工作上面能为我们节省大量的时间. 所以在本节中,我会介绍cucum ...
- js拼接onclick方法字符串参数解决方法
onclick = contentmap("'+useridarr[i]+'")