分布式文件系统(Distributed File System,DFS)可以提供文件的访问效率,提高文件的可用性并减轻服务器的负担。
分布式文件系统概述
通过分布式文件系统将相同的文件同时存储到网络上多台服务器后,即可拥有以下功能。
- 提供文件的访问效率:当客户端通过DFS访问文件时,DFS会引导客户端从最接近客户端的服务器来访问文件,让客户端快速访问到所需的文件。实际上,DFS是提供客户端一份服务器列表,这些服务器内都有客户端所需要的文件,但是DFS会将最接近客户端的服务器,例如客户端同一个AD DS站点(Active Directory Domain Services Site),放在列表最前面,以便让客户端优先从这台服务器访问文件。
- 提高文件的可用性:即使位于服务器列表中最前端的服务器意外发生了故障,客户端仍然可以从列表中的下一台服务器获取所需的文件,也就是说DFS提供排错功能。
- 服务器负载平衡功能:每个客户端获得列表中的服务器排列顺序可能都不相同,因此他们访问的服务器也可能不相同,也就是说不同客户端可能会从不同服务器来访问所需文件,从而减轻服务器的负担。
DFS的架构
Windows Server 2012是通过文件和访问服务角色内的DFS命名空间与DFS复制这两个服务来配置DFS。下面根据下图来说明DFS中的各个组件。
- DFS命名空间:可以通过DFS命名空间将位于不同服务器内的共享文件夹集合在一起,并以一个虚拟文件夹的树状结构呈现给客户端。DFS命名空间分为以下两种。
- 域命名空间:它将命名空间的设置数据存储到AD DS与命令空间服务器的内存缓冲区。如果创建多台命名空间服务器,则它还具备命名空间的排错功能。
从Windows Server 2008开始添加一种称为Windows Server 2008模式的域命名空间,并将以前旧版的域命名空间称为Windows 2000 S而模式。Windows Server 2008模式域命名空间支持基于访问的枚举(Access-Based Enumeration,ABE,或翻译为访问型枚举),它根据用户的权限来决定用户是否看到共享文件夹内的文件与文件夹,也就是说当用户浏览共享文件夹时,他只只能够看到有权限访问的文件与文件夹。
- 独立命名空间:它将命名空间的设置数据存储到命名空间服务器的注册表(Registry)与内存缓冲区。由于独立命名空间只能够有一台命名空间服务器,因此不具备命名空间的排错功能,除非采用服务器群集。
- 命名空间服务器:用来掌控命名空间(Host Namespace)的服务器。如果是域命名空间,则这台服务器可以是成员服务器或域控制器,而且你可以设置多台命名空间服务器;如果是独立命名空间,则这台服务器可以是成员服务器,与控制器或独立服务器,不过只能够有一台命名空间服务器。
- 命名空间根目录:它是命名空间的起始点,如上图,此根目录的名称为public,命名空间的名称为\contoso.compublic,而且它是一个域命名空间,其名称以郁闷开头。如果这是一个独立命名空间,则命名空间的名称会以计算机名开头,例如\server1public.
由图可知,此命名空间根目录是被映射到命名空间服务器内的一个共享文件夹,默认是%systemDrive%DFSRootsPublic,它必须位于NTFS磁盘分区。
- 文件夹与文件夹目标:这些虚拟文件夹的目标分别映射到其他服务器内的共享文件夹。当客户端来浏览文件夹时,DFS会将客户端重定向到文件夹目标所映射的共享文件夹。如图共有3个文件夹,分别说明如下。
- Pictures:此文件夹有两个目标,分别映射到服务器Server2的C:Pictures与Server3的C:Pictures共享文件夹,它具备文件夹的排错功能,例如客户端在读取文件夹Pictures内的文件时,即使Server2发生故障,它仍然可以从Server3的C:Pictures读取文件。当然Server2的C:Pictures与Server3的C:Pictures内存储的文件应该要相同(同步)。
- Database:此文件夹有两个目标,分别映射到服务器Server3的C:database与server4的d:database共享文件夹,它也具备文件夹的排错功能。
- Reports:此文件夹只有一个目标,映射到服务器Server4的D:Reports共享文件夹,由于目标只有一个,因此不具备排错功能。
- DFS复制:图中文件夹Pictures的两个目标映射到的共享文件夹,其中提供给客户端的文件必须同步,而这个同步操作可由DFS复制服务自动运行。DFS复制服务使用一个称为远程差异压缩的压缩演算技术,它能够检测文件改动的地方,因此复制文件时仅会复制有改动的区域,而不是整个文件,这样可以降低网络的负担。
如果独立命名空间的目标服务器未加入域,则其目标映射到共享文件夹内的文件必须手动同步。
旧版Windows系统通过文件复制服务(File Replication Service,FRS)来负责DFS文件夹的复制与域控制器SYSVOL文件夹的复制。不过,现在只要域功能级别是Windows Server 2008以上,就会改由DFS复制服务来负责。
复制拓扑
DFS可以选择以下几种拓扑方式来复制文件。
- 集散(Hub and Spoke):它将一台服务器当作中枢,并创建与其他所有服务器(支点)之间的连接。文件是从中枢复制到所有的支点,并且也会从支点复制到中枢。支点之间并不会直接相互复制文件。
- 全交错(Full Mesh):它会创建所有服务器之间的相互连接,文件会从每个服务器之间复制到其他所有的服务器。
- 自定义拓扑:可以自行创建各个服务器之间的逻辑连接关系,也就是自行指定服务器,只有被指定的服务器之间才会复制文件。
可以根据公司网络的带宽,网络的地理位置与公司的组织结构等,决定采用哪种拓扑。无论你选择了哪种拓扑,都可以自行启用或禁用两台服务器之间的连接关系,例如不想让Server2将文件复制到Server3,则可以将Server2到Server3的单向连接关系禁用。
注:上图中的各种拓扑连接关系,并不是硬件上的真正以此形状连接,而是指在复制文件时,利用这些形状描述的逻辑连接关系来复制文件。
DFS的系统需求
独立命名空间服务器可以由域控,成员服务器或独立服务器来扮演,而域命名空间服务器可以由域控或成员服务器来扮演。
参与DFS复制的服务器必须位于同一个AD DS林,被复制的文件夹必须位于NTFS磁盘分区内(ReFS,FAT32与FAT都不支持。)防毒软件必须与DFS兼容,必要时请联系防毒软件厂商以便确认是否兼容。
如果要将域命名空间的模式设置为Windows Server2008模式,则域功能等级必须至少是Windows Server 2008,另外,所有的域命名空间服务器都必须至少是Windows Server2008.
分布式文件系统实例演示
我们将联系如何来创建一个下图所示的域命名空间,下图三台服务器都是Win Ser 2012 Data.而Server1是域控,Server2和3都是成员服务器,请先创建好此域环境。
图中命名空间的名称,为Public,由于是域命名空间,因此完整的名称将是\contoso.compublic,它映射到命名空间服务器Server1的C:DFSRootsPublic文件夹。命名空间的设置数据会被保存到AD DS与命名空间服务器Server1的内存缓冲区。另外,图中还创建了文件夹Picture,他有两个目标,分别指向Server2与Server3的共享文件夹。
安装DFS的相关组件
各个服务器扮演的角色并不完全相同,因此所需安装的服务与功能也有所不同。
- Server1:图中Server1是命名空间服务器,它需要安装DFS命名空间服务(DNS Namespace service),不过因为这台计算机同时也是域控,而域控默认会自动安装与启用这个服务,因此不需要再手动安装,我们要利用这台服务器来管理DFS,因此需要自行安装DFS管理工具。
- Server2与Server3:这两台目标服务器需要相互复制Pictures共享文件夹内的文件,因此他们都需要安装DFS复制服务。安装DFS复制服务时,系统会顺便自动安装DFS管理工具,让你可以在Server2和Server3上管理DFS。
在Server1上安装DFS管理工具
添加角色和功能-选择功能-远程服务器管理工具-角色管理工具-文件服务工具-DFS管理工具
在Server2与Server3上安装所需的DFS组件
在Server2和3上安装DFS服务:文件和存储服务-文件和iSCSI服务-DFS复制
在Server2与Server3上创建共享文件夹
在Server2和3上都创建C:pictures文件夹,并将其设置为共享文件夹,假设共享名都是Pictures,将读取写入的共享权限赋予Everyone,并且在Server2的pictures内复制一些文件,用于验证这些文件是否确实可以通过DFS机制被自动复制到Server3。
注:真实环境中应该通过适当的权限来确保安全性,此处为实验,所以设置Everyone。
创建新的命名空间
- 在DC1的DFS管理页面中单击命名空间右侧的新建命名空间。
- 选择DC1当作命名空间服务器
- 设置命名空间名称(例如Public)
注:系统默认会在命名空间服务器的%systemdrive%磁盘内创建DFSRootsPublic
共享文件夹,共享名为Public,所有用户都有只读权限,如果要更改设置,可以单击编辑设置。
- 选择域命名空间,默认会选择Windows Server 2008模式。由于域名为contoso.com,因此网站的命名空间名将是\contoso.compublic。
- 检查设置无误有单击创建
- 完成后的界面
创建文件夹
创建下图所示的DFS文件夹Pictures,其两个目标分别映射到\server2pictures与\server3pictures。
创建文件夹Pictures,并将目标映射到\Server2Pictures
- 单击新建文件夹
- 设置文件夹名称,点击添加输入文件夹目标的路径。
客户端可以通过背景图中的预览命名空间的路径来访问映射共享文件夹内的文件。
添加另一个目标,并将其映射到\Server4Pictures
- 继续单击添加来设置文件夹的新目标路径
- 选择否,下后门复制组与复制设置不买在说明两个目标之间的复制设置
- 下图为完成后的界面
文件夹Pictures的目标同时映射到\Server2Pictures与Server3共享文件夹。以后如果需要增加目标,可以单击右侧的添加文件夹目标。
复制组与复制设置
如果一个DFS文件夹有多个目标,这些目标映射的共享文件夹内的文件必须同步。我们可以让这些目标之间自动复制文件来同步。不过,需要将这些目标服务器设置为同一个复制组,并作适当的设置。
- 单击文件夹Pictures右侧的复制文件夹
- 单击下一步,采用默认的复制组名称和文件夹名称(或自行设置名称)。
- 下面会列出有资格参与复制的服务器
- 选择主要成员(例如Server2),当DFS第一次开始执行复制文件的操作时,会将这台主要成员内的文件复制到其他所有目标。
注:只有在第一次执行复制工作时,DFS才会将主要成员的文件复制到其他的目标,之后的复制工作按照所选的复制拓扑进行复制。
- 选择复制拓扑后单击完成(必须有3台及以上的服务器参与复制,才可以选择集散拓扑)。
- 可以选择全天候,使用完整的带宽进行复制。也可以通过在指定日期和时间内复制进一步设置
- 确认设置无误后单击创建
- 单击确定
此对话框在提醒你,如果域内有多台域控制器,则以上设置需要等一段时间才会被复制到其他域控制器,而其他参与复制的服务器,也需要一段时间才会向域控制器索取这些设置值。总而言之,参与复制的服务器需要一段时间才会开始执行复制的工作。
- 由于我们的Server2为主要成员,因此稍后当DFS第一次执行复制操作时,会将\Server2Pictures内的文件复制到\Server3Pictures。下图是Server3已经复制完成。
注:在第一次复制时,系统会将原本就存在于\Server3Pictures内的文件,移动到上图中的文件夹DfsPrivatePreExisting内,不过因为DfsrPrivate是隐藏文件夹,因此如果要看到此文件夹需要显示隐藏的文件。
从第二次开始的复制操作,将按照复制拓扑来决定复制的方式,例如,如果复制拓扑被设置为交错,则当你将一个文件复制到任何一台服务器的共享文件夹后,DFS复制服务会将这个文件复制到其他所有的服务器。
复制拓扑与计划设置
如果要修改复制设置,可以通过右侧的操作窗格来更改复制设置,例如增加参与复制的服务器,添加复制文件夹,创建服务器之间的复制连接,更改复制拓扑,创建诊断报告等。
无论复制拓扑是什么,都可以自行启用或禁用两台服务器之间的连接关系,例如,如果不想让Server3将文件复制到Server2,请将Server3到Server2的单向连接关系禁用:单击链接-双击发送成员Server3-取消勾选在此连接上启用复制。
还可以通过双击下图已复制文件夹下的Pictures的方式来筛选文件或子文件夹,被筛选的文件或子文件夹将不会被复制。筛选时可以使用通配符?或*,例如*.tmp表示排除所有扩展名为.tmp的文件。
从客户端测试DFS功能是否正常
我们利用win8 客户端来说明如何访问DFS文件。计算机先映射网络驱动器。
注:如果要访问独立DFS,请将域名改成计算机名,例如\server5publicpictures。
如何知道访问到的文件是位于Server2还是Server3的,可以在Server2和3内分别打开计算机管理查看你的用户与计算机名显示在哪台上。
得知连接的服务器后,请将这台服务器关机,然后到Win8计算机上来访问Pictures内的文件,会发现还可以访问到Pictures内的文件,因为DFS已经重定向到另一台服务器(会稍有延迟)。
添加多台命名空间服务器
域名空间的DFS架构内可以安装多台命名空间服务器,以便提高可用性。所有命名空间服务器都必须隶属于相同的域。
首先这台新的命名空间服务器必须安装DFS命名空间服务,具体安装方法是在服务器管理器内添加角色和功能。角色界面中勾选DFS命名空间。
注:安装DFS命名空间服务时,系统会顺便自动安装DFS管理工具,让你可以通过这台服务器来管理DFS。
接下来,可以到DC1上添加命名空间服务器输入服务器名称。
客户端的引用设置
当DFS客户端要访问命名空间内的资源时,域控制器或命名空间服务器会提供给客户端一个引用列表(Referrals),此列表内包含拥有此资源的目标服务器,客户端会尝试从位于列表中最前面的服务器来访问所需的资源。如果这台服务器因故障无法提供服务时,客户端会转向列表中的下一个目标服务器。
如果某台目标服务器因故必须暂停服务,例如要关机维护,此时应该避免客户端被重定向到这台服务器,也就是不要让这台服务器出现在引用列表中,设置方法L对着命名空间中对着该服务器单击禁用文件夹目标。
如何决定引用列表中目标服务器的先后顺序呢,可以通过对着命名空间右键-属性-引用。图中提供了缓存持续时间,排序方法与客户端故障回复设置。
缓存持续时间
当客户端取得引用列表后,会将这份列表缓存到客户端计算机内,以后客户端需要此份列表时,可以直接从缓冲区取得,不需要再向命名空间服务器或域控索取,如此可以提供效率。不过这份列表有一定的有效期,默认300秒。
设置引用列表中目标服务器的先后顺序
客户端取得的引用列表中,目标服务器被排列在列表中的先后顺序如下。
- 如果目标服务器与客户端位于同一个AD DS站点,则此服务器会被列在列表中的最前面,如果有多台服务器,这些服务器会被随机排列在最前面。
- 如果目标服务器与客户端位于不同AD DS站点,则这些服务器会被排列在前述服务器(与客户端同一个站点的服务器)之后,而且这些服务器之间有以下排列方法。
- 最低成本(lowest cost):如果这些服务器分别位于不同的AD DS站点,则以站点连接成本最低的优先。如果成本相同,则随机排列。
- 随机顺序(random order):无论目标服务器位于哪个AD DS站点内,都已随机顺序来排列这些服务器。
- 排除客户端站点之外的目标(exclude targets outside of client's site):只要目标服务器跟客户端位于不同的AD DS站点,就不将这些服务器列于引用列表内。
注:命名空间的引用设置会被其下的文件夹与文件夹目标继承,不过还可以直接针对文件夹进行设置,并且其设置会覆盖由命名空间继承的设置。还可以针对文件夹目标设置,并且其设置会覆盖由命名空间和文件夹继承的设置。
客户端故障回复
当DFS客户端访问的首选目标服务器因故无法提供服务时,客户端会转向列表中的下一台目标服务器,即使之后原先故障的首选服务器恢复正常了,客户端仍然会继续访问这一台并不是最佳的服务器(例如,它位于另一个连接成本较高的站点)。如果希望原来哪一台首选恢复后,客户端能够自动转回到此服务器,勾选客户端故障恢复到首选目标。
注:一旦转回原来的服务器后,所有新访问的文件都会从这台首选服务器读取。不过,之前已经从非首选服务器打开的文件,仍然会继续从那台服务器读取。