如何将 DFS 命名空间与 Azure 文件配合使用

分布式文件系统命名空间(通常称为 DFS 命名空间或 DFS-N)是一个 Windows Server 服务器角色,用于简化生产中的 SMB 文件共享的部署和维护。 DFS 命名空间提供存储命名空间虚拟化,使你能够在文件共享的 UNC 路径与实际文件共享之间提供一层间接连接。 DFS 命名空间适用于 SMB 文件共享,与托管这些文件共享的位置无关。 它可用于本地 Windows 文件服务器上托管的 SMB 共享(无论是否使用 Azure 文件同步)、直接用于 Azure 文件共享、用于其他第三方产品/服务中托管的 SMB 文件共享,甚至用于其他云中托管的文件共享。

DFS 命名空间的核心功能是为用户友好的 UNC 路径(例如 \\contoso\shares\ProjectX)与 SMB 共享的基础 UNC 路径(例如 \\Server01-Prod\ProjectX\\storageaccount.file.core.chinacloudapi.cn\projectx)之间提供映射。 如果最终用户希望导航到文件共享,他们可键入用户友好 UNC 路径,但他们的 SMB 客户端会访问映射的基础 SMB 路径。 还可以扩展此基本概念来接管现有的文件服务器名称,例如 \\MyServer\ProjectX。 可以使用此功能来实现以下方案:

  • 为一组逻辑数据集提供迁移证明名称。 例如,您可以将 \\contoso\shares\Engineering 映射到 \\OldServer\Engineering。 完成迁移到 Azure 文件后,您可以更改映射为 \\storageaccount.file.core.chinacloudapi.cn\engineering,以便当最终用户访问用户友好的 UNC 路径时,用户将被无缝重定向到 Azure 文件共享。

  • 为分布在不同物理站点的多个服务器(例如通过 Azure 文件同步)的逻辑数据集建立一个公用名称。在此示例中,名称如 \\contoso\shares\FileSyncExample 被映射到多个 UNC 路径,例如 \\FileSyncServer1\ExampleShare\\FileSyncServer2\DifferentShareName\\FileSyncServer3\ExampleShare。 当用户访问用户友好的 UNC 时,系统会提供可能的 UNC 路径列表,并根据 Windows Server Active Directory(AD) 网站定义选择最接近它们的 UNC 路径。

  • 跨大小、IO 或其他缩放阈值扩展逻辑数据集。 在处理用户目录、每个用户在共享上获取其自己的文件夹或暂存共享时,这可能会很有用,用户可在其中获取任意空间来处理临时数据需求。 使用 DFS 命名空间,可将多个文件夹拼结到一个具有内联性的命名空间。 例如, \\contoso\shares\UserShares\user1 映射到 \\storageaccount.file.core.chinacloudapi.cn\user1\\contoso\shares\UserShares\user2 映射到 \\storageaccount.file.core.chinacloudapi.cn\user2等。

如果已有 DFS 命名空间,则无需执行任何特殊步骤即可将其用于 Azure 文件和文件同步。如果要从本地访问 Azure 文件共享,则应用正常的网络注意事项。 有关详细信息,请查看 Azure 文件存储的网络注意事项

适用于

管理模型 计费模式 媒体层 冗余 中小型企业 (SMB) 网络文件系统(NFS)
Microsoft.Storage 预配版本 v1 SSD(高级) 本地 (LRS) 是 否
Microsoft.Storage 预配版本 v1 SSD(高级) 区域 (ZRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) 本地 (LRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) 区域 (ZRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) 异地 (GRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) GeoZone (GZRS) 是 否

命名空间类型

DFS 命名空间提供两种主要命名空间类型:

  • 基于域的命名空间:作为 Windows Server AD 域的一部分托管的命名空间。 作为 AD 一部分托管的命名空间将具有包含域名称的 UNC 路径,例如 \\contoso.com\shares\myshare(如果你的域是 contoso.com)。 基于域的命名空间通过 AD 支持更大的缩放限制和内置冗余。 基于域的命名空间不能是故障转移群集上的群集资源。
  • 独立命名空间:托管在单个服务器上的命名空间,而不是作为 Windows Server AD 的一部分托管。 独立命名空间将基于独立服务器的名称命名,例如 \\MyStandaloneServer\shares\myshare,独立服务器的名称 MyStandaloneServer。 独立命名空间可支持的缩放目标比基于域的命名空间小,但它可以作为群集资源托管在故障转移群集上。

要求

若要将 DFS 命名空间与 Azure 文件和文件同步配合使用,必须具有以下资源:

  • Active Directory 域。 这可以托管在所需的任何位置,例如本地、Azure 虚拟机(VM),甚至托管在另一个云中。
  • 可托管命名空间的 Windows 服务器。 DFS 命名空间的常见模式部署模式是使用 Active Directory 域控制器托管命名空间,但是可以从安装了 DFS 命名空间服务器角色的任何服务器设置命名空间。 DFS 命名空间在所有受支持的 Windows Server 版本上都可用。
  • 托管于加入域环境的 SMB 文件共享,例如托管在加入域的存储帐户中的 Azure 文件共享,或使用 Azure 文件同步托管在加入域的 Windows 文件服务器上的文件共享。有关如何将存储帐户加入域的详细信息,请参阅 基于标识的身份验证。 无论你是否使用 Azure 文件同步,Windows 文件服务器都以相同的方式加入域。
  • 要用于 DFS 命名空间的 SMB 文件共享必须可从本地网络访问。 有关详细信息,请参阅 直接访问的网络注意事项

安装 DFS 命名空间服务器角色

如果已在使用 DFS 命名空间,或者想要在域控制器上设置 DFS 命名空间,则可以安全地跳过这些步骤。

若要安装 DFS 命名空间服务器角色,请在服务器上打开服务器管理器。 选择“ 管理”,然后选择“ 添加角色和功能”。 生成的向导指导你完成安装必要的 Windows 组件以运行和管理 DFS 命名空间。

在安装向导的 “安装类型 ”部分中,选择 “基于角色”或“基于功能”的安装 单选按钮,然后选择“ 下一步”。 在 “服务器选择 ”部分中,选择要在其中安装 DFS 命名空间服务器角色的所需服务器,然后选择“ 下一步”。

“服务器角色”部分中,选择并检查“文件和存储服务>文件和 ISCSI 服务”下的 DFS 命名空间角色。 选择 DFS 命名空间服务器角色时,它还可能会添加任何所需的支持服务器角色或尚未安装的功能。

“添加角色和功能”向导的屏幕截图,其中选择了 DFS 命名空间角色。

检查 DFS 命名空间 角色后,可以在所有后续屏幕上选择 “下一步 ”,并在向导启用该按钮后立即选择“ 安装 ”。 安装完成后,可以配置命名空间。

通过根路径合并接管现有的服务器名称

DFS 命名空间的一个重要用途是接管现有的服务器名称,以便重构文件共享的物理布局。 例如,你可能希望在现代化迁移过程中将多个旧文件服务器上的文件共享合并到一起。 传统上,最终用户熟悉和文档链接限制了在一台主机上将不同文件服务器中的文件共享合并到一起的能力。 但是,DFS 命名空间的根合并功能允许您设置单一服务器来对应多个服务器名称,并将路径引导到相应的共享名称。

尽管适用于各种数据中心迁移方案,但根合并对于采用云原生 Azure 文件共享特别有用,因为:

  • Azure 文件共享不允许保留现有的本地服务器名称。
  • 必须通过存储帐户的完全限定域名(FQDN)访问 Azure 文件共享。 例如,名为 share 的 Azure 文件共享位于存储帐户 storageaccount 中,始终通过 \\storageaccount.file.core.chinacloudapi.cn\share 的 UNC 路径进行访问。 对于需要短名称(例如 \\MyServer\share)或组织域名的子域(例如 \\MyServer.contoso.com\share)的名称的最终用户来说,这可能会令人困惑。

根路径合并仅可用于独立命名空间。 如果你的文件共享已有基于域的命名空间,则无需创建根路径合并的命名空间。

启用根路径合并

可以通过从提升的 PowerShell 会话(或使用 PowerShell 远程处理)设置以下注册表项来启用根路径合并。

New-Item `
    -Path "HKLM:SYSTEM\CurrentControlSet\Services\Dfs" `
    -Type Registry `
    -ErrorAction SilentlyContinue
New-Item `
    -Path "HKLM:SYSTEM\CurrentControlSet\Services\Dfs\Parameters" `
    -Type Registry `
    -ErrorAction SilentlyContinue
New-Item `
    -Path "HKLM:SYSTEM\CurrentControlSet\Services\Dfs\Parameters\Replicated" `
    -Type Registry `
    -ErrorAction SilentlyContinue
Set-ItemProperty `
    -Path "HKLM:SYSTEM\CurrentControlSet\Services\Dfs\Parameters\Replicated" `
    -Name "ServerConsolidationRetry" `
    -Value 1

为现有文件服务器名称创建 DNS 条目

为了使 DFS 命名空间响应现有文件服务器名称,请为指向 DFS 命名空间服务器服务器名称的现有文件服务器创建别名 (CNAME) 记录。 更新 DNS 记录的确切过程可能取决于组织正在使用的服务器,以及组织是否使用自定义工具自动管理 DNS。 以下步骤适用于 Windows Server 随附的 DNS 服务器,并由 Windows AD 自动使用。

在 Windows DNS 服务器上,打开 DNS 管理控制台。 可以通过选择 “开始 ”按钮并键入 DNS 来找到此项。 导航到域的前向查找区域。 例如,如果域为 contoso.com,可以在管理控制台中的“前向查找区域”“>”下找到前向查找区域。contoso.com 此对话框中显示的确切层次结构取决于网络的 DNS 配置。

右键单击前向查找区域,然后选择“新建别名(CNAME)”。 在生成的对话框中,输入要替换的文件服务器的短名称(完全限定域名在标记为 “完全限定域名”的文本框中自动填充)。 在标记为 目标主机的完全限定域名(FQDN)的文本框中,输入 DFS-N 服务器的名称。 如果需要,可使用“浏览”按钮来帮助选择服务器。 选择“确定”,为服务器创建 CNAME 记录。

描述 CNAME DNS 条目的“新资源记录”的屏幕截图。

创建命名空间

DFS 命名空间的基本管理单位是命名空间。 命名空间根路径或名称是命名空间的起始点,因此在 UNC 路径 \\contoso.com\Public\ 中,命名空间根路径为 Public

如果使用 DFS 命名空间接管具有根合并的现有服务器名称,则命名空间的名称应为要接管的服务器名称(以字符开头 # )。 例如,如果要接管名为 MyServer的现有服务器,将创建一个名为 DFS-N 命名空间 #MyServer。 PowerShell 示例负责添加 # 前缀,但如果通过 DFS 管理控制台创建,则需要根据需要添加前缀。

若要创建新的命名空间,请打开 DFS 管理控制台 。 可以通过选择 “开始 ”按钮并键入 DFS 管理来找到此信息。 生成的管理控制台有两个部分称为 命名空间复制,分别引用 DFS 命名空间和 DFS 复制(DFS-R)。 Azure 文件同步提供了一种现代化的复制和同步机制,可在需要复制的情况下替代 DFS-R。

选择“命名空间”部分,然后选择“新建命名空间”按钮(也可右键单击“命名空间”部分)。 生成的“新建命名空间向导”将引导你创建命名空间。

向导中的第一部分要求你选取要用于托管命名空间的 DFS 命名空间服务器。 多个服务器可以托管一个命名空间,但你需要一次使用一台服务器设置 DFS 命名空间。 输入所需 DFS 命名空间服务器的名称,然后选择“下一步”。“命名空间名称和设置” 部分中,输入命名空间的所需名称,然后选择“ 下一步”。

在“命名空间类型”部分,可以选择“基于域的命名空间”或“独立命名空间”。 如果要使用 DFS 命名空间来保留现有的文件服务器/NAS 设备名称,应选择独立命名空间选项。 对于任何其他方案,请选择基于域的命名空间。 有关在命名空间类型之间进行选择的详细信息,请参阅 命名空间类型

在“新建命名空间向导”中选择基于域的命名空间和独立命名空间的屏幕截图。

为环境选择所需的命名空间类型,然后选择“下一步”。 然后,向导将汇总要创建的命名空间。 选择“创建”以创建命名空间,并在对话框完成后选择“关闭”。

配置文件夹和文件夹目标

要使命名空间有用,它必须具有文件夹和文件夹目标。 每个文件夹可具有一个或多个文件夹目标,这些目标是指向托管该内容的 SMB 文件共享的指针。 用户浏览包含文件夹目标的文件夹时,客户端计算机将收到透明地将客户端计算机重定向到一个文件夹目标的参考项。 也可以具有无文件夹目标的文件夹,以将结构和层次结构添加到命名空间。

可以将 DFS 命名空间文件夹视为类似于文件共享。

在 DFS 管理控制台中,选择刚创建的命名空间,然后选择“新建文件夹”。 生成的 “新建文件夹 ”对话框将允许你同时创建文件夹及其目标。

“新建文件夹”对话框的屏幕截图。

在标记为 “名称” 的文本框中,提供文件夹的名称。 选择“添加...”,为此文件夹添加文件夹目标。 生成的 “添加文件夹目标 ”对话框提供了一个标记为 文件夹目标的 文本框,你可以在其中提供所需文件夹的 UNC 路径。 在“添加文件夹目标”对话框中选择“确定”。 如果要向 Azure 文件共享添加 UNC 路径,可能会收到一条消息,指出无法联系服务器 storageaccount.file.core.chinacloudapi.cn 。 这是预期的;选择“ ”以继续。 最后,在“新建文件夹”对话框中选择“确定”以创建文件夹和文件夹目标。

创建命名空间、文件夹和文件夹目标后,应该能够通过 DFS 命名空间装载文件共享。 如果使用基于域的命名空间,则共享的完整路径应为 \\<domain-name>\<namespace>\<share>。 如果使用独立命名空间,则共享的完整路径应为 \\<DFS-server>\<namespace>\<share>。 如果使用具有根合并的独立命名空间,可以直接通过旧服务器名称进行访问,例如 \\<old-server>\<share>

基于访问权限的枚举 (ABE)

目前不支持使用 ABE 控制 SMB Azure 文件共享中的文件和文件夹的可见性。 ABE 是 DFS-N 的一项功能,因此可以配置基于标识的身份验证并启用 ABE 功能。 但是,这仅适用于 DFS-N 文件夹目标;它不会追溯地应用于目标文件共享本身。 这是因为 DFS-N 按引荐工作,而不是在文件夹目标前面充当代理。

例如,如果用户在路径 \\mydfsnserver\share 中键入,则 SMB 客户端将获取引用 \\mydfsnserver\share => \\server123\share,并针对后者进行装载。

因此,ABE 将仅在重定向前在 DFS-N 服务器托管用户名列表的情况下才起作用:

\\DFSServer\users\contosouser1 => \\SA.file.core.chinacloudapi.cn\contosouser1

\\DFSServer\users\contosouser1 => \\SA.file.core.chinacloudapi.cn\users\contosouser1

(其中 contosouser1用户 共享的子文件夹)

如果每个用户在重定向后都为子文件夹,则 ABE 将不起作用:

\\DFSServer\SomePath\users --> \\SA.file.core.chinacloudapi.cn\users

另请参阅