扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作为微软BOIS(分公司基础结构解决方案)体系中的一个重要基础服务,微软在R2中对DFS(分布式文件系统)进行了重新设计。在R2中,分布式文件系统(DFS)提供简化的具有容错和负载均衡能力的文件访问和WAN优化复制,它包括以下两种独立的技术:
DFS命名空间。即过去的分布式文件系统,允许管理员对位于不同服务器上的共享文件夹进行分组并将其作为虚拟文件夹树(称为命名空间)提供给用户。命名空间可以提供很多好处,包括提高数据的可用性、负载共享和简化数据迁移等。
DFS复制。DFS复制的前身为文件复制服务(FRS),它是一个基于状态的新型多主复制引擎,支持复制计划和带宽限制。DFS复制使用一种称为远程差分压缩(RDC)的新压缩算法。 RDC是一种线上差分协议,可用于在带宽受限的网络上有效地更新文件;RDC检测文件中数据的插入、删除和重新排列,因此能够在文件更新时仅复制增量(更改)。
DFS命名空间
利用DFS命名空间技术,你可以将位于不同服务器上的共享文件夹透明地连接到一个或多个命名空间上,从而将这些文件夹组合在一起,从而提高数据可用性及实现负载均衡等。这个过程对于客户端而言是透明的,当客户端访问DFS命名空间时,看起来和普通的共享文件夹一致,用户无需知道具体的服务器名称或存放数据的共享文件夹即可进行浏览。
和过去的分布式文件系统相比,R2中的DFS命名空间中主要具有以下更新:
目标优先级。客户端访问DFS命名空间时,将接收包含与命名空间根路径或文件夹关联的目标列表的引用,这些目标按照命名空间或文件夹当前的排序方法列出,你也可以调整特定目标的优先级。
客户端故障回复。DFS命名空间中的客户端故障转移是在一个文件夹目标(通常是首选的本地服务器)发生故障或从命名空间中删除之后,客户端尝试访问引用中另一台服务器的过程。在故障转移之后,客户端访问的可能是非优化的文件夹目标,例如相对客户端的站点链接成本较高的目标。在首选的本地服务器恢复之后,如果客户端没有配置故障回复,客户端将继续使用故障转移到的服务器,直到重启客户端或清除客户端的引用缓存;如果客户端配置了故障回复,并且客户端安装了相应的客户端故障回复更新程序,那么在该服务器恢复之后,客户端将故障回复到首选的本地服务器。注意:只有所有新的文件访问均将故障回复到本地服务器,当前打开的文件仍然从故障转移到的服务器进行访问,直到该文件关闭。
更佳的委派管理权限功能。在DFS命名空间中可以很容易的对创建基于域的命名空间或管理各个独立命名空间和基于域的命名空间进行管理委派。
重新构建命名空间的能力。使用DFS 管理管理单元可以很容易重命名或移动DFS命名空间中的文件夹,你可以通过重新构建命名空间来纠正错误或在业务需要改变或添加新文件夹到命名空间,还可以使用命令行工具Dfscmd.exe移动命名空间文件夹。
DFS命名空间的路径与共享文件夹的通用命名约定(UNC)路径类似,DFS命名空间中主要具有以下元素:
命名空间服务器。即原来的根服务器。命名空间服务器承载命名空间,它可以是独立服务器、成员服务器或域控制器。可以在服务器上承载的命名空间数由命名空间服务器上运行的操作系统决定:运行windowsServer 2003 R2标准版、windowsServer 2003 Web Edition、windowsServer 2003标准版(可以通过安装KB903651中的更新程序使其支持承载多个命名空间)和任何版本的 Windows 2000 Server的服务器可以承载单个命名空间;而运行Windows Server2003 R2企业版、Windows Server 2003 R2 Datacenter Edition、Windows Server2003企业版和Windows Server 2003 Datacenter Edition的服务器可以承载多个命名空间。
命名空间。即原来的根路径,命名空间是命名空间的起点。例如某个命名空间路径为\\winsvr.org\public,那么public即为命名空间名称。
文件夹。即原来的链接,文件夹是DFS命名空间的主要元素,用于帮助建立命名空间的层次结构,它可以包含文件夹目标;当客户端浏览DFS命名空间中包含目标的文件夹时,客户端将收到透明地将客户端重定向到一个文件夹目标的引用。例如某个命名空间路径为\\winsvr.org\public\profiles,那么 profiles即为文件夹名称。
文件夹目标。即原来的链接目标,文件夹目标是某个具体的共享文件夹或其他命名空间的UNC路径。当客户端浏览包含目标的文件夹时,客户端其实浏览的是对应的文件夹目标。你可以通过指定多个文件夹目标来提高文件夹的冗余性,如果其中一个文件夹目标不可用,客户端将根据获得的目标优先级来尝试访问其他可用目标。
命名空间客户端。运行以下版本操作系统的客户端可以访问命名空间:
windowsServer 2003 R2
windowsServer 2003
windowsStorage Server 2003
windows预安装环境 (windowsPE)(只能访问独立命名空间)
windows2000 Server
windows2000 Professional
windowsNT Server 4.0 Service Pack 6a
windowsNT Workstation 4.0 Service Pack 6a
但是只有操作系统为windowsServer 2003 SP1和windowsXP SP2并且安装KB898900中的客户端故障回复更新程序后的客户端才支持故障回复特性。
DFS命名空间具有两种类型,分别是基于域的命名空间和独立命名空间,它们之间具有以下区别:
特性 |
基于域的命名空间 |
独立命名空间 |
命名空间路径 |
\\DNSDomainName\RootName \\NetBIOSDomainName\RootName |
\\ServerName\RootName |
命名空间信息存储位置 |
活动目录,同时会在每个命名空间服务器的内存中进行缓存 |
|
驱动器文件分区格式要求 |
NTFS |
NTFS |
命名空间服务器 |
每个命名空间服务器必须是配置了命名空间的域中的成员服务器或域控制器。 |
可以是独立服务器、成员服务器或域控制器 |
创建和删除命名空间所需要的组成员关系 |
DFS管理员必须是Domain Admins组成员或者具有对活动目录中DFS容器的委派管理权限。 |
DFS管理员必须是本地服务器上的本地管理员组成员 |
管理命名空间所需要的组成员关系 |
DFS管理员必须是每个命名空间服务器上的本地管理员组成员 |
DFS管理员必须是本地服务器上的本地管理员组成员 |
命名空间大小限制 |
微软建议保持活动目录中所存储的DFS对象大小在5 MB以内( 包含目标的文件夹数量不超过5000个) |
微软建议独立命名空间 中包含目标的文件夹数量不超过50,000个。 |
确保命名空间可用性所支持的方法 |
使用多个命名空间服务器承载命名空间(命名空间服务器必须处于相同的域) |
在服务器群集上创建独立命名空间 |
对使用DFS复制复制文件夹目标的支持 |
支持 |
支持 |
当客户端访问命名空间根路径或命名空间中包含文件夹目标的文件夹时,客户端从域控制器或命名空间服务器获取引用。引用是域控制器或命名空间服务器返回给客户端的文件夹目标的排序列表。客户端收到引用之后,将尝试访问列表中的第一个目标;如果该目标不可用,客户端将尝试访问下一个目标。
客户端会对获得的引用进行缓存,对于命名空间默认的缓存时间是300秒(5分钟),而对于文件夹默认的缓存时间是1800秒(30分钟)。通常情况下无需修改缓存时间配置,但是如果命名空间中的文件夹目标变更频繁,那么你应该考虑减少缓存时间;但是减少缓存时间会增加域控制器和命名空间服务器的负载并且增加网络访问流量。
未运行windowsXP SP2或windowsServer 2003 SP1的客户端将在每次使用缓存引用访问文件或文件夹时,更新引用的缓存持续时间值,因此可以无限地使用该缓存引用,直到清除客户端的引用缓存或重新启动客户端为止。这样导致了命名空间中的文件夹目标虽然已经更新,但是客户端持续使用旧的文件夹目标的情况。因此在windowsXP SP2和Windows Server 2003 SP1中,微软对此行为进行了更新,当客户端使用缓存引用访问目标时,缓存持续时间并不更新,而是让缓存引用在到达缓存持续时间值之后过期,当再次访问时向域控制器或命名空间服务器获取新的引用,从而可以更快地发现对命名空间和命名空间文件夹的更改。
R2中的分布式文件系统提供了目标优先级特性。当域控制器或命名空间服务器返回引用给客户端时,将按照一定的排序方法对文件夹目标进行排序。客户端首先尝试访问最顶部的文件夹目标,如果不可用则按照从上到下的顺序尝试对其他文件夹目标进行访问。
在R2中提供的排序方法有以下三种:
随机顺序。使用此方法时返回给客户端的文件夹目标按照以下顺序进行排序:
与客户端位于相同活动目录站点的目标按照随机顺序列在引用的顶部;
然后,客户端站点之外的目标按照随机顺序列出;
如果没有位于相同站点的文件夹目标,则将所有目标按照随机顺序列出;
最低成本。默认选项,使用此方法时返回给客户端的文件夹目标按照以下顺序进行排序:
与客户端处于相同站点的目标按照随机顺序列在引用的顶部。
然后,客户端站点之外的目标按照最低成本到最高成本的顺序列出。成本相同的引用组合在一起,每个组中的目标按照随机顺序列出。
排除客户端站点之外的目标。使用此方法时, 返回给客户端的引用中只包含与客户端位于相同站点的文件夹目标。这些位于相同站点的文件夹目标按照随机顺序列出。如果没有位于相同站点的目标, 那么将不会返回引用给客户端,因此客户端无法访问命名空间的该部分。
除此之外,你还可以针对某个文件夹目标设置其优先级,你可以设置某个文件夹目标的优先级为:
所有目标中的第一项。作为引用的目标列表中的第一个列出;
所有目标中的最后一项。作为引用的目标列表中的最后一个列出;
同等成本中的第一个。在同等成本的目标中作为第一个列出;
同等成本中的最后一个。在同等成本的目标中作为最后一个列出;
需要注意的是,即使排序方法设置为排除客户端站点之外的目标,目标优先级设置为所有目标中的第一项或所有目标中的最后一项的目标仍会在引用中列出。
DFS复制
虽然都是属于分布式文件系统中的技术,但是从技术角度上来说,DFS复制和DFS命名空间是完全独立的,只是通过DFS复制可以让DFS命名空间更好的工作。DFS复制的前身是windows2000 Server中引入的文件复制服务(FRS),它是一个基于状态的新型多主机复制引擎,支持复制计划和带宽限制。DFS复制使用一种称为远程差分压缩(RDC)的新的压缩算法,它是一种线上差分的客户端/服务器协议,可用于在有限带宽网络上有效地更新文件。RDC检测文件中数据的插入、删除和重新排列,因此能够在文件更新时仅复制增量(更改)。
DFS复制使用许多复杂的进程来保持多个服务器上的数据同步,它主要具有以下特性:
DFS复制是一个多主机复制引擎,在一个成员上进行的任何更改均将复制到复制组的所有其他成员上;
DFS 复制通过监视更新序列号(USN)日志来检测卷上的更改 ;DFS复制仅在文件关闭后复制更改,因此不推荐使用DFS复制来复制数据库或其他可能会长时间打开的文件;
DFS 复制使用版本矢量交换协议来确定需要同步的文件,该协议通过网络为每个文件发送不到1KB的数据,用于同步发送成员和接收成员上与已更改文件关联的元数据;
文件更改后,只会复制已更改的文件块,而不会复制整个文件,DFS复制通过RDC协议来确定已更改的文件块。默认情况下,RDC适用于任何大于64 KB的文件类型;
DFS复制可以自我修复,可以自动从USN日志覆盖、USN日志丢失或DFS复制数据库丢失中恢复;
DFS复制使用WMI提供程序为获取配置和监视来自DFS复制服务的信息提供接口;
在发送或接收文件之前,DFS复制使用暂存文件夹来暂存文件。如果在复制过程中发生冲突,对于冲突的文件(即在多个服务器上同时更新的文件),DFS复制使用最后写入者优先的冲突解决方式;对于冲突的名称,DFS复制使用最早创建者优先的冲突解决方式。冲突中被丢弃的文件和文件夹将移至一个称为冲突和已删除文件夹的文件夹。
在DFS复制中,主要使用复制组、已复制文件夹和复制拓朴这三个重要组件。复制组由一组称为成员的服务器组成,这些成员参与一个或多个已复制文件夹的复制;已复制文件夹是在每个成员上保持同步的文件夹,当每个已复制文件夹中的数据发生更改时,将通过复制组成员之间的连接复制更改。所有成员之间的连接构成复制拓扑。
你可以在一个复制组中创建多个已复制文件夹,复制组的拓扑、计划和带宽限制将应用到所有的已复制文件夹;另外每个已复制文件夹都可以对需要进行复制的文件和子文件夹进行筛选,从而只复制不满足筛选条件的文件和子文件夹。
存储在每个成员上的已复制文件夹可以位于成员的不同的卷上,并且已复制文件夹不必是共享文件夹也不必是命名空间的一部分。
另外,DFS复制具有以下要求和限制:
活动目录架构必须更新为包含新的DFS复制对象。你可以通过在架构操作主机上运行adprep.exe /forestprep来更新架构,Adprep.exe命令行工具R2安装CD上的Cmpnents\R2\Adprep文件夹中提供。
参与DFS复制的服务器必须运行windowsServer 2003 R2,并且必须在每个将参与复制的服务器上安装DFS复制服务和DFS管理管理单元;
复制组中的成员服务器必须位于相同的林中;
已复制文件夹必须存储在NTFS卷上;一个驱动器卷最多可以包含8百万个已复制文件夹;一个服务器最多可以包含1TB的已复制文件。
一个复制组最多可以包含256个成员,每个服务器最多可以是256个复制组的成员;
每个复制组最多可以包含256个已复制文件夹;
每个服务器最多可以具有256个连接(例如128个传入连接和128个传出连接);
在每个服务器上,复制组数乘以已复制文件夹数再乘以连接数,结果必须等于或小于1024;
在DFS复制中,具有以下两种复制组类型:
数据分布,即多用途复制组。此类型可以设置两个或多个服务器之间的复制,用于文档、软件及其他数据的发布等,然后可以利用DFS命名空间将客户端的访问分布到不同的服务器;
数据收集。此类型只能在两个服务器(例如分支服务器和中心服务器)之间设置双向复制,你可以设置将分支服务器上的数据复制到中心服务器上,然后通过备份软件来执行备份。
需要注意的是,使用DFS复制收集数据不能取代执行常规备份。如果你只想实现单向复制,例如只想实现分支服务器到中心服务器的数据复制,那么可以在设置复制组之后禁用中心服务器到分支服务器的连接。
安装分布式文件系统
安装分布式文件系统组件的过程非常简单,选择控制面板中的添加或删除程序,然后单击添加/删除 windows组件,然后勾选分布式文件系统(在分布式文件系统中包含有DFS复制服务、DFS复制诊断和配置工具、DFS管理三个子组件,你可以根据需要来选择),然后点击下一步,最后单击完成即可。你需要在每一台具有相应功能的服务器上安装对应的组件。
创建DFS命名空间
在此我以创建一个基于域的名为\\winsvr.org\public\profiles的命名空间路径(我将使用此命名空间路径来保存用户的配置文件)为例,给大家介绍一下创建DFS命名空间的过程。
在DFS管理管理控制台中右击命名空间,选择新建命名空间,在弹出的新建命名空间向导页,输入将要承载此命名空间的命名空间服务器名称,输入后点击下一步;
在命名空间名称和设置页,输入命名空间的名称,在此我输入public,然后点击编辑设置按钮编辑此命名空间根路径的设置,
在弹出的编辑设置对话框上,首先选择共享文件夹的本地路径,在此我接受默认路径,然后在共享文件夹权限列表中接受默认的所有用户都具有只读权限,这将设置此文件夹的共享权限为Everyone 读取,点击确定,然后点击下一步;
在命名空间类型页,接受默认的基于域的命名空间,点击下一步;
在复查设置并创建命名空间页,检查过去的设置,然后点击创建,
此时DFS管理开始命名空间的创建,成功完成后在确认页点击关闭。
添加命名空间服务器
现在我们为刚创建的DFS命名空间添加一个命名空间服务器,展开命名空间,右击刚创建的\\winsvr.org\public,选择添加命名空间服务器,
在弹出的添加命名空间服务器对话框,输入需要承载此命名空间的服务器名称,然后点击编辑设置按钮;
在弹出的编辑设置对话框上,我接受和第一台命名空间服务器一样的默认设置,点击确定;
配置命名空间属性
右击\\winsvr.org\public,选择属性即可配置它的属性,如下图所示:
首先在常规标签,你可以修改此命名空间的描述,以及查看此命名空间所占用的活动目录存储空间大小,微软建议将每个命名空间所占用的存储空间限制在5MB以内。
在引用标签,你可以设置:
缓存持续时间:客户端缓存此命名空间引用的时间,默认为300秒 ;
排序方法:返回给客户端的引用中对文件夹目标进行排序的方法;
客户端故障回复到首选目标:是否启用故障回复特性,只有windowsServer 2003 SP1和windowsXP SP2在安装KB898900中的客户端故障回复更新程序后才支持故障回复特性。
在高级标签,你可以配置基于域的命名空间服务器轮询域控制器的方式。为了让基于域的命名空间元数据在命名空间服务器之间保持一致,命名空间服务器需要定期轮询活动目录获取最新的命名空间数据,你可以选择以下两种轮询方式之一:
优化一致性
默认选项,在此模式下,DFS服务尝试使基于域的命名空间在所有命名空间服务器上保持高度一致,它通过以下两种方式来实现这种一致性:
对于基于域的命名空间而言,所有修改必须通过作为PDC模拟主机的域控制器进行。当某个命名空间服务器通过PDC模拟主机修改命名空间元数据后,会通知其他承载此命名空间的命名空间服务器,而其他命名空间服务器则联系PDC模拟主机获取命名空间元数据的最新版本。
默认情况下,运行windowsServer 2003和windows2000 Server的命名空间服务器每小时轮询PDC模拟主机一次。并且服务器启动或DFS服务启动时,轮询PDC模拟主机。
如果承载命名空间的命名空间服务器多于16个或命名空间经常更改,此模式可能会加重PDC模拟主机的负载,因此微软推荐在承载命名空间的命名空间服务器多于16个时采用优化扩展性模式。
优化扩展性
在此模式下,即使命名空间发生更改,命名空间服务器也不会向其他命名空间服务器发送更改通知消息;命名空间服务器也不会每个小时轮询PDC模拟主机一次,而是每个小时轮询最接近的域控制器一次,以发现对命名空间的更新。
优化扩展性模式减少了命名空间服务器到PDC模拟主机的网络通信量,命名空间服务器仍然通过PDC模拟主机来更新命名空间元数据,但是在更新后的命名空间元数据复制到其他命名空间服务器最接近的域控制器之前,其他命名空间服务器不会发现这些更改。因此在这种模式下,不同的客户端可能会从不同的命名空间服务器得到不一致的命名空间视图。
另外,你还可以右击对应的命名空间服务器,然后在其属性中设置目标优先级。
创建文件夹并创建复制组
现在我们为DFS命名空间\\winsvr.org\public创建一个文件夹,右击\\winsvr.org\public,选择新建文件夹,
在弹出的新建文件夹对话框上,输入文件夹的名称profiles,然后点击添加按钮添加文件夹目标,完成后如下图所示,点击确定;
此时,DFS管理会弹出提示对话框提示你是否创建复制组来同步刚才创建的文件夹目标,在此我点击是,
在弹出的复制组和已复制文件夹名页,接受默认设置,点击下一步;
在复制合格页,点击下一步;
在复制文件夹向导页,选择一个主要成员。主要成员用于并且只用于初始复制过程,主要成员的内容被认为是可信的,当进行初始复制时,其他所有成员服务器都必须和主要成员进行同步;在初始复制期间,如果接收成员包含的内容和主要成员发生冲突,解决冲突时将始终以主要成员包含的内容为准。
以下概念将帮助您更好地了解初始复制过程:
初始复制不会立即开始。复制拓扑和DFS复制设置必须复制到所有域控制器上,并且复制组中的每个成员必须轮询最接近的域控制器以获取这些设置。所需的时间取决于活动目录复制延迟以及每个成员的 长轮询间隔(60 分钟)。
初始复制始终在主要成员和其他成员服务器进行。其他成员服务器从主要成员接收到所有文件之后,也会将文件复制到其接收伙伴;对新的已复制文件夹的复制从主要成员开始,然后继续处理复制组的其他成员。
在初始复制期间从主要成员接收到文件之后,如果接收成员包含在主要成员上不存在的文件,会将这些文件移至各自的DfsrPrivate\PreExisting文件夹;如果某个文件与主要成员上的文件相同,则不会复制该文件;如果接收成员上的文件版本与主要成员的版本不同,那么接收成员上的文件将移至“冲突和已删除”文件夹,并可以使用远程差分压缩(RDC)仅下载不同的数据块。
DFS复制使用哈希算法来确定主要成员和接收成员上的文件是否相同,如果文件相同,则只传输最少的元数据。
在将选择配置之前存在的所有文件添加到DFS复制数据库之后,DFS复制进行初始化。初始化已复制文件夹之后,主要成员标志将被删除,然后对待该成员就像对待任何其他成员一样,不再认为该成员的文件的可信度性高于已完成初始复制的其他成员,而是认为任何已完成初始复制的成员的可信度高于尚未完成初始复制的成员。
在此我选择一个成员为主要成员后,点击下一步;
在拓朴选择页,接受默认的交错,点击下一步;
在复制组计划和带宽页,接受默认的全天候使用完整带宽进行复制,然后点击下一步;
在复查设置并创建复制组页,检查过去的设置,然后点击创建;
现在我们来测试以下DFS命名空间和DFS复制的配置,首先配置一个用户使用DFS命名空间路径来作为配置文件路径,
在用户登录以前,复制文件夹中并未包含任何内容,
然后我以配置了漫游配置文件的用户登录,从共享文件夹的DFS属性中可以看出,目前用户访问的目标服务器是Seattle;
此时DFS复制已经开始了复制工作,如下图所示:
我调整了一下显示属性,如下图所示:
然后我将Seattle上的共享文件夹profiles停止共享;
再次使用前面的用户登录,同样从共享文件夹的DFS属性中可以看出,目前用户访问的目标服务器已经自动故障转移到另外一台目标服务器Boston了,并且我所做的针对显示属性的修改也通过DFS复制成功的复制到了目标服务器Boston上。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者