郭建伟
在企业网络环境中,会部署不同的文件服务器。对于DFS命名空间来说,其主要作用是帮助最终用户更加友好和方便地访问这些文件服务器中的资源。例如,众多的共享文件夹会分布到不同的文件服务器中,在默认情况下,用户需要知道每台文件服务器的地址和共享文件夹的名称,这会让访问操作变得烦琐,使用DFS命名空间,可以优化访问操作。这里就以Windows Server 2016为例,来详细说明DFS命名空间的配置方法。
命名空间的组成对象
DFS命名空间包含服务和数据对象,利用DFS命名空间服务,用户可以统一地访问不同文件服务器中的资源,让用户感觉只是在访问一台文件服务器。对于DFS命令数据来说,其可以保存在本地,也可以保存在活动目录当中。为了实现DFS命名空间的高可用性,可以利用故障转移群集来实现。在这种情况下,DFS命名空间数据就保存在故障转移群集的共享磁盘中。对于最终的用户来说,其只需要记住DFS命名空间服务器的地址,该地址是唯一的,后台的文件服务器不管是增加还是减少,对于用户来说,只是感觉到共享文件夹数量的变化而已。
命名空間的类型
在部署和配置DFS命名空间时,会使用到两种不同的类型,其一是独立的命名空间服务器,其特点是只存在一台DFS命名空间服务器,其数据保存在本地。为了实现其高可用性,只能使用故障转移群集来实现。其二为域环境中的DFS命名空间服务,为了实现其高可用性,至少需要部署两台DFS命名空间服务器,其数据(即所有的共享文件夹信息)会保存到活动目录数据库中,即使一台服务器出现故障,也不影响其对客户提供服务。在实际的生产环境中,推荐使用该部署模式。
命名空间的高级特性
利用DFS命名空间的高级特性,可以帮助用户更加轻松地访问目标共享资源。例如使用基于枚举的访问权限,让特定的用户只能访问指定的共享资源。例如在网络中部署了三台文件服务器,提供了五个共享文件夹,那么对于“User1”用户来说,当其使用自己的账户登录后,只能看到前三个共享文件夹。而对于“User2”用户来说,则只能看到后两个共享文件夹。
因为不同的用户拥有不同的权限,所以利用枚举特性让其只能看到自己能够访问的资源,避免其浏览到其他的共享资源。对于存在众多分支机构的企业来说,在不同的机构中都存在DFS命名空间服务器。利用基于活动目录的站点感应访问机制,可以实现就近访问功能,对于不同站点中的用户来说,虽然输入的访问名称是完全一样的,但是会使用最近的DFS命名空间服务器,来访问所需的共享资源。这样,可以实现更高的访问效率。
部署DFS命名空间服务
例如在本例中使用了名为DFS1、DFS2和DFS3三台Windows Server 2016服务器,前两台位于Site1站点中,后一台位于Site2站点中。在DFS1上打开PowerShell窗口,执行“Invoke-Command -ComputerName dfs1.xxx.com dfs2.xxx.com dfs3.xxx.com -ScriptBlock {Install-Feature FS-DFS-Namespace -IncludeManagementTools }”命令,可以在以上服务器上安装DFS命名空间服务及其管理工具。
在DFS1的管理工具中打开“DFS Management”项,在其主界面(图1)左侧选择“命名空间”项,在右侧点击“新建命名空间”项,在向导界面(图2)中的“服务器”栏中输入其中一台DFS服务器的名称,点击下一步按钮(图3),输入命名空间的名称(例如“Public”)。点击“编辑设置”按钮,在打开窗口(图4)中显示共享文件夹本地路径,该路径作为统一的入口,让最终的用户可以访问后台的共享资源。在下一步窗口中选择命名空间的类型(图5),包括基于域的命名空间和独立的命名空间。这里选择前者,点击创建按钮,创建该命名空间。
选择该命名空间,在右侧点击“新建文件夹”按钮,在打开窗口(图6)中输入共享项目的名称,点击“添加”按钮,输入目标共享文件夹路径。按照同样的方法,可以添加更多的共享项目。在客户机上访问“\\xxx.com\public”地址,就可以通过该命名空间,来访问预设的共享资源了。如果该DFS服务器出现了问题,就会造成用户无法通过上述入口,来访问后台共享资源。即使对于之前访问过该入口的用户来说,只要经过5分钟之后,其缓存信息就会超时,同样无法继续访问。
为此,只需在上述命名空间管理窗口点击“添加命名空间服务器”项,在打开窗口(图7)中点击浏览按钮,选择DFS2服务器,将其添加进来。这样,就可以解决上述问题了。不管哪台服务器出现故障,其他的服务器还可以满足客户端的访问需求。当然,对于多站点环境来说,如果在Site1站点中执行了以上操作,对于Site2站点中的客户端来说,有可能因为和DFS命名空间的相关的信息还没有同步到Site2站点中的DC上,所以该站点中的用户无法通过DFS2进行访问。
在Site1的DC上打开Active Directory站点和服务程序,在左侧选择“Site2→ervers→DC2→NTDS Settings”项,在右侧的“<自动生成的>”项的右键菜单上点击“立即复制”项,对应的,在左侧选择“Site1→Servers→DC1→NTDS Settings”项,在右侧的“<自动生成的>”项的右键菜单上点击“立即复制”项(图8),让两个站点的DC执行同步操作,将活动目录的变动信息立即复制过来。这样,不管哪台DFS服务器出现问题,都不会影响两个站点的客户的正常访问。按照同样的方法,可以将DFS3服务器也添加到命名空间服务器列表中(图9)。
配置命名空间高级特性
在DFS管理窗口中打开上述命名空间的属性窗口,在“引用”面板(图10)中可以调整缓存持续时间,默认为300秒。在“排序方法”列表中选择“最低成本”项,表示客户端会优先寻找本站点中的DFS服务器,来实现访问操作,这是默认的选项。对于多站点环境来说,建议在每个站点中至少部署一台DFS服务器,这样,客户端在访问命名空间统一入口时,会优先寻找本站点中的DFS服务器。
例如对于Site2站点中的客户端来说,会优先寻找DFS3服务器。当其访问“//xxx.com/public”地址,浏览后台共享资源时,在CMD窗口中执行“netstat -an |find "445"”命令,在返回信息中显示其连接的是本地的DFS服务器的地址。执行“nslookup”命令,在“>”提示符下输入“dfs3”,显示其隶属于本地网段。如果选择“随机顺序”项,那么当客户端访问统一的命名空间入口时,将随机选择一台DFS服务器,来响应其请求。
选择“排除客户端站点之外的目标”项,表示其会选择非本地站点DFS服务器。来处理其访问请求。选择“客户端故障回复到首选的目标”项,表示客户端会使用首选的DFS服务器来进行访问。为此,需要在命名空间服务器列表中选择某台服务器,在其属性窗口中的“高级”面板(图11)中选择“覆盖引用排序”和“所有目标中的第一项”项,将其指定为首选的DFS服务器。
这样,默认情况下,客户端会优先选择本站点中的DFS服务器,如果訪问失败的话,就会直接访问首选DFS服务器。如果选择“同等开销目标中的第一项”项,表示在同一站点中存在多台DFS服务器的话,可以将其作为该站点首选DFS服务器。在上述命名空间的属性窗口的“高级”面板(图12)中可以看到,在默认情况下,选择的是“优化一致性”项,表示每次调整命名空间服务器属性时,其只会在主DC上完成修改操作,其他的DC需要通过主DC的活动目录同步进行复制。即只能在主DC上修改,其他的DC都是被动地接受修改信息,其优点是可以保持设置的一致性。
选择“优化可伸缩性”项,表示上述调整信息会先写入到临近的DC。例如在Site2中的DFS服务器上,对DFS命名空间属性信息进行了修改,则其会先写入到该站点中的DC中,之后再将其同步到其他站点的DC上。其优点在于修改可以立即生效,但是在复制时可能存在一些问题。选择“对此命名空间启用基于存取的枚举”项,表示当用户登录后,通过命名空间的统一入口后,只能查看和使用其拥有访问权限的共享资源,对于其他的共享资源则无法显示。
当然,这需要在目标共享资源中设置合适的权限。在目标文件服务器上选择对应的共享资源(例如“ziliao”),在其属性窗口左侧选择“权限”项(图13),在右侧点击“自定义权限”按钮,在打开窗口中的“共享”面板中删除“Everyone”账户,点击“添加”按钮,选择合适的账户(例如“user1”),在“权限”栏中为其指派所需的权限,包括完全控制、更改、读取等,这里选择读取权限。
之后在上述命名空间管理窗口中选中该共享资源,在其属性窗口中的“高级”面板(图14)中选择“在DFS文件夹上设置显式查看权限”项,点击“配置查看权限”按钮,在打开窗口中点击“添加”按钮,添加该账户,为其指派读取的权限(图15)。同理,可以根据需要针对其他的共享资源,分别针对该账户设置读取权限。这样,当“User1”用户登录到域环境之后,就只能显示和访问其拥有读取权限的共享资源,对于其他的资源,该账户根本无法查看。