使用 Azure File Sync 从 Linux 迁移到混合云部署

此迁移文章是涉及关键字 NFS 和Azure File Sync的多个迁移文章之一。检查本文是否适用于你的方案:

  • 数据源:网络附加存储 (NAS)
  • 迁移路由:具有 SAMBA ⇒ Windows Server 2012R2 或更高版本的 Linux 服务器⇒与 Azure 文件共享同步(s)
  • 在本地缓存文件:是的,最终目标是Azure File Sync部署。

如果你的场景与此不同,请参阅迁移指南表

Azure File Sync适用于具有直接附加存储(DAS)的Windows Server实例。 它不支持与 Linux 客户端、远程服务器消息块 (SMB) 共享或网络文件系统 (NFS) 共享相互同步。

因此,将文件服务转换为混合部署需要迁移到Windows Server。 本文将指导你规划和执行此类迁移。

迁移目标

目标是将 Linux Samba 服务器上的共享文件迁移至 Windows Server 实例。 然后使用Azure File Sync进行混合云部署。 在执行这种迁移时,需要保证生产数据的完整性以及迁移期间的可用性。 要满足后一项要求,需将停机时间尽量缩短,使之不会超过或者只略微超过例行维护时段。

迁移概述

如Azure Files 迁移概述文章中所述,使用正确的复制工具和方法非常重要。 Linux Samba 服务器直接在本地网络上公开 SMB 共享。 内置于 Windows Server 中的 Robocopy 是在此迁移方案中移动文件的最佳方式。

如果不在 Linux 服务器上运行 Samba,而是想要将文件夹迁移到 Windows Server 上的混合部署,则可以使用 Linux 复制工具而不是 Robocopy。 请注意复制工具的保真度功能。 查看迁移概述文章中的迁移基础知识部分,了解要在复制工具中查找的内容。

阶段 1:确定所需的Azure文件共享数

在此步骤中,你将确定所需的Azure文件共享数。 单个Windows Server实例(或群集)最多可以同步 30 个Azure文件共享。

你的磁盘卷上可能有更多文件夹当前本地作为 SMB 共享共享给用户和应用程序。 设想一个本地共享与 Azure 文件共享 1:1 映射,这是理解该情景的最简单方法。 如果单个Windows Server实例的共享数量足够小,小于 30 个,则建议进行 1:1 映射。

如果共享数超过 30 个,则通常不需要将本地共享 1:1 映射到Azure文件共享。 请考虑以下选项。

共享分组

例如,如果人力资源(HR)部门有 15 个共享,则可以考虑将所有 HR 数据存储在单个Azure文件共享中。 将多个本地共享存储在一个Azure文件共享中不会阻止在本地Windows Server实例上创建通常的 15 个 SMB 共享。 这只是意味着将这 15 个共享的根文件夹组织为公用文件夹下的子文件夹。 然后将此公共文件夹同步到Azure文件共享。 这样一来,对于该本地共享组,您只需在云端使用一个 Azure 文件共享。

卷同步

Azure File Sync支持将卷根目录同步到 Azure 文件共享。 如果同步卷根目录,所有子文件夹和文件将转到相同的Azure文件共享。

同步卷的根目录并不是总是最佳选项。 同步多个位置有很多好处。 例如,这样做可帮助降低每个同步范围的项目数。 我们测试每个Azure文件共享和Azure File Sync的共享中包含 1 亿个项目(文件和文件夹)。 但是,最佳实践是应该尝试将单个共享中的数目控制在 2000 万或 3000 万以下。

设置具有较少项数的 Azure File Sync 不仅对文件同步有利,对于以下几种方案也是如此:

  • 云内容的初始扫描可以更快地完成,这反过来减少了等待命名空间出现在启用了 Azure File Sync 的服务器上的时间。
  • 从Azure文件共享快照进行云端还原速度更快。
  • 本地服务器的灾难恢复可以显著提高速度。
  • 在 Azure 文件共享中直接进行的更改(不通过同步)可以更快地被检测出和同步。

小窍门

如果不知道有多少文件和文件夹,请查看 JAM Software 中的 TreeSize 工具。

部署映射的结构化方法

在后续步骤中部署云存储之前,请务必在本地文件夹和Azure文件共享之间创建映射。 此映射可告知您将预配的资源数量和哪种 Azure File Sync 同步组 资源。 同步组将Azure文件共享和服务器上的文件夹连接在一起,并建立同步连接。

若要优化你的地图并确定所需的 Azure 文件共享的数量,请查看以下限制和最佳做法:

  • 安装Azure File Sync代理的服务器最多可与 30 个Azure文件共享同步。

  • Azure文件共享部署在存储帐户中。 这样安排会使存储帐户成为 IOPS 和吞吐量等性能指标的扩展目标。

    部署Azure文件共享时,请注意存储帐户的 IOPS 限制。 理想情况下,应该将文件共享按 1:1 与存储帐户映射。 但是,由于组织和Azure的各种限制与约束,此映射可能并不能总是实现。 如果不能在一个存储帐户中仅部署一个文件共享,请考虑哪些共享将高度处于活动状态,哪些共享将不太活跃。 不要将最热门的文件共享放在同一存储帐户中。

    如果计划将应用程序迁移到 Azure 并原生地使用 Azure 文件共享,您可能需要从 Azure 文件共享获得更高的性能。 如果这种类型的使用是可能的,即使在将来,最好在其自己的存储帐户中创建单个标准Azure文件共享。

  • 每个 Azure 区域内的每个订阅合计最多可以有 250 个存储帐户。

小窍门

根据此信息,通常需要将磁盘卷上的多个顶级文件夹合并到新的通用根目录中。 然后,将此新根目录以及分组到其中的所有文件夹同步到单个Azure文件共享。 每个服务器最多可以执行 30 次 Azure 文件共享同步,此技术可帮助你保持在这一限制内。

在公用根下进行这种分组不会对数据访问产生影响。 你的 ACL 将保持原样。 你只需调整本地服务器文件夹中的共享路径(如 SMB 或 NFS 共享),将其更改为一个通用根目录。 无其他更改。

重要

Azure File Sync最重要的缩放向量是需要同步的项目数(文件和文件夹)。 有关更多详细信息,请查看 Azure File Sync 缩放目标

在您的情况下,有可能一组文件夹可以在逻辑上同步到同一个 Azure 文件共享(使用前面提到的常见根目录方法)。 但是,重新组合文件夹可能仍然更好,以便它们同步到两个Azure文件共享而不是一个。 可以使用此方法使每个文件共享的文件和文件夹数在服务器间保持平衡。 您还可以分配本地共享,并跨更多本地服务器进行同步,以便每个额外服务器能够同步多达 30 个 Azure 文件共享。

重要

Azure File Sync最重要的缩放向量是需要同步的项目数(文件和文件夹)。 有关详细信息,请查看 Azure File Sync 缩放目标

常见文件同步方案和注意事项

同步方案 已支持 注意事项(或限制) 解决方案(或解决方法)
具有多个磁盘/卷和多个共享的文件服务器到同一目标Azure文件共享(合并) 目标Azure文件共享(云终结点)仅支持与一个同步组同步。

同步组仅支持每个已注册的服务器一个服务器终结点。
1) 首先将一个磁盘(其根卷)同步到目标Azure文件共享。 从最大的磁盘/卷开始,将帮助满足本地存储要求。 配置云分层以将所有数据分层到云,以便释放文件服务器磁盘上的空间。 将数据从其他卷或共享文件夹移动到当前正在同步的卷。 一个接一个地继续执行步骤,直到所有数据分层到云或迁移。
2) 每次以一个根卷(磁盘)为目标。 使用云分层将所有数据分层到目标Azure文件共享。 从同步组中删除服务器终结点,使用下一个根卷/磁盘重新创建终结点,同步,然后重复此过程。 请注意,可能需要重新安装代理。
3) 建议根据性能要求使用多个目标Azure文件共享(相同或不同的存储帐户)。
单卷文件服务器,多个共享合并到同一目标Azure文件共享 是的 每个已注册的服务器不能有多个服务器终结点同步到同一目标Azure文件共享(与前面的方案相同)。 同步包含多个共享或顶级文件夹的卷根目录。
具有多个共享和/或卷的文件服务器到单个存储帐户下的多个 Azure 文件共享(1:1 共享映射) 是的 单个Windows Server实例(或群集)最多可以同步 30 个Azure文件共享。

存储帐户是用于性能优化的扩展目标。 IOPS 和吞吐量在多个文件共享之间共享。

将每个同步组的项目数保持在每个共享的 1 亿个项目(文件和文件夹)内。 最好保持低于每股 20 或 3000 万。
1) 使用多个同步组(同步组数 = 要同步到的Azure文件共享数)。
2) 在此方案中,一次只能同步 30 个共享。 如果该文件服务器上的共享数超过 30 个,请使用共享分组和卷同步来减少源中根文件夹或顶级文件夹的数量。
3) 在本地使用其他Azure File Sync服务器,并将数据拆分或移动到这些服务器,以解决源Windows Server实例的限制。
具有多个共享和/或卷的文件服务器在不同的存储帐户下将多个Azure文件共享(1:1 共享映射) 是的 单个Windows Server实例(或群集)最多可以同步 30 个Azure文件共享(相同或不同的存储帐户)。

将每个同步组的项目数保持在每个共享的 1 亿个项目(文件和文件夹)内。 最好保持低于每股 20 或 3000 万。
与前面的方法相同。
具有单个根卷或共享到同一目标Azure文件共享的多个文件服务器(合并) 同步组无法使用已在另一个同步组中配置的云终结点(Azure文件共享)。

尽管同步组可以在不同的文件服务器上具有服务器终结点,但文件不能不同。
按照第一个方案中的指导进行操作,并额外考虑每次只针对一个文件服务器。
跨租户拓扑(在租户间使用托管身份验证) 存储同步服务、服务器资源(Azure Arc启用的服务器或Azure VM)、存储帐户上的托管标识和 RBAC 分配必须全部位于同一Microsoft Entra租户中。 不支持跨租户拓扑。 跨租户设置会失败身份验证和授权,服务器无法连接。 若要继续,请确保在同一 Microsoft Entra 租户中已创建所有资源(包括同步服务、服务器、托管标识和 RBAC 分配)。

创建映射表

使用前面的信息来确定您所需的 Azure 文件共享数量,以及现有数据的哪些部分将存储在哪个 Azure 文件共享中。

创建一个表来记录你的想法,以便在需要时引用它。 保持有序十分重要,因为在一次预配多个 Azure 资源时,您可能会很容易丢失映射计划的详细信息。 下载以下Excel文件以用作模板来帮助创建映射。


用于设置下载上下文的 Excel 图标。 下载命名空间映射模板。

阶段 2:在本地预配合适的Windows Server实例

  • 创建Windows Server 2022实例作为虚拟机或物理服务器。 Windows Server 2012 R2 是最低要求。 还支持Windows Server故障转移群集。

  • 配置或添加直接附加存储 (DAS)。 不支持网络连接存储 (NAS)。

    如果使用 Azure File Sync cloud 分层功能,预配的存储量可能小于当前在 Linux Samba 服务器上使用的存储量。

预配的存储量可以小于当前在 Linux Samba 服务器上使用的存储量。 此配置选择还要求你使用 Azure File Sync 的 cloud 分层功能。 但是,当您在后续阶段将文件从较大的 Linux Samba 服务器空间复制到较小的 Windows Server 卷时,您需要分批操作:

  1. 移动一组可装入该磁盘的文件。
  2. 让文件同步和云分层协同工作。
  3. 当卷上的可用空间增多时,继续处理下一批文件。 或者,查看后面 RoboCopy 部分中的 RoboCopy 命令了解如何使用新的 /LFSM 开关。 使用 /LFSM 可以大大简化 RoboCopy 作业,但它可能与你所使用的其他某些 RoboCopy 开关不兼容。

可以通过在 Windows Server 实例上预配与文件在 Linux Samba 服务器上占用空间等效的空间,来避免这种批处理方式。 请考虑在 Windows 启用去重。 如果不想将如此大容量的存储永久提交到您的 Windows Server 实例,您可以在迁移后减小卷的大小,然后再调整云分层策略。 这可创建Azure文件共享的较小本地缓存。

要同步的Windows Server实例的资源配置(计算和 RAM)主要取决于要同步的项目数(文件和文件夹)。 如果有任何顾虑,建议使用性能较高的配置。

了解如何根据您需要同步的项数(文件和文件夹)来调整 Windows Server 实例的大小。

注释

前面链接的文章提供了一个表,其中介绍了服务器内存 (RAM) 的范围。 可将服务器的内存调整为较小的数量,但预计初始同步可能会花费更长时间。

阶段 3:部署Azure File Sync云资源

若要完成此步骤,需要Azure订阅凭据。

要为Azure File Sync配置的核心资源称为 Storage Sync Service。 建议只为当前或将来同步同一组文件的所有服务器部署一个服务。 仅当有不同的服务器组,且这些服务器永不交换数据时,才创建多项存储同步服务。 例如,你可能有些服务器必须始终不同步同一个 Azure 文件共享。 否则,最佳做法是使用一项存储同步服务。

选择一个靠近您位置的 Azure 区域用于存储同步服务。 所有其他云资源必须部署在同一区域中。 若要简化管理,请在订阅中创建一个包含同步和存储资源的新资源组。

有关详细信息,请参阅有关部署 Azure File Sync 的文章中关于部署 Storage Sync Service 的 部分。请只遵循文章的此部分。 在后续步骤中,将有该文章内容其他部分的链接。

阶段 4:部署Azure存储资源

在此阶段中,请查阅阶段 1 中的映射表,并使用它来预配其中正确的Azure存储帐户和文件共享数。

Azure文件共享存储在Azure存储帐户中的云中。 此处还有另一层次的性能考量需应用。

如果你有高度活跃的共享(许多用户和/或应用程序使用的共享),则两个Azure文件共享可能会达到存储帐户的性能限制。

最佳做法是在部署存储帐户时,让每个存储帐户都有一个文件共享。 如果您具有存档共享,或者预期它们的日常活动较少,则可以将多个Azure文件共享聚合到同一存储帐户中。

与Azure File Sync相比,这些注意事项更适用于直接云访问(通过Azure VM)。如果计划只对这些共享使用Azure File Sync,可将多个共享分组到单个Azure存储帐户中。

如果已创建共享列表,应将每个共享映射到它所在的存储帐户。

在上一阶段中,你确定了适当数量的股份。 在此步骤中,你可以将存储帐户映射到文件共享。 现在部署适当数量的 Azure 存储帐户,并在其中创建适当数量的 Azure 文件共享。

请确保每个存储帐户的区域相同,并且与已部署的存储同步服务资源的区域相匹配。

注意

如果创建具有 100 TiB 限制的Azure文件共享,该共享只能使用本地冗余存储或区域冗余存储冗余选项。 使用 100 TiB 的文件共享之前,应考虑自己的存储冗余需求。

默认情况下,Azure文件共享仍使用 5 TiB 限制创建。 按照 创建Azure文件共享中的步骤创建大型文件共享。

部署存储帐户时的另一个注意事项是Azure Storage冗余。 请参阅 Azure Storage 冗余选项

资源的名称也很重要。 例如,如果将 HR 部门的多个共享分组到Azure存储帐户中,则应相应地命名存储帐户。 同样,在为Azure文件共享命名时,应使用类似于本地对应项的名称。

阶段 5:部署Azure File Sync代理

在本部分中,将在Windows Server实例上安装Azure File Sync代理。

部署指南说明需要关闭 Internet Explorer 增强的安全配置。 此安全措施不适用于Azure File Sync。关闭该功能后,可以进行身份验证以Azure,而不会出现任何问题。

打开 PowerShell。 使用以下命令安装所需的 PowerShell 模块。 请确保按照提示安装完整的模块和 NuGet 提供程序。

Install-Module -Name Az -AllowClobber
Install-Module -Name Az.StorageSync

如果从服务器访问 Internet 时遇到任何问题,现在可以解决这些问题。 Azure File Sync使用与 Internet 的任何可用网络连接。 还支持要求代理服务器访问 Internet。 现在可以配置计算机范围的代理,也可以在代理安装期间指定仅使用Azure File Sync的代理。

如果配置代理意味着需要为服务器打开防火墙,那么这种方法可能适合你。 在服务器安装结束并完成服务器注册后,网络连接报告将显示 Azure 中 Azure File Sync 与您所选区域通信所需的确切终结点 URL。 该报告还会告诉你需要进行通信的原因。 可以使用该报告将服务器上的防火墙锁定到特定的 URL。

还可以采用相对保守的方法,就是不完全打开防火墙。 可以改为限制服务器与更高级别的 DNS 命名空间进行通信。 有关详细信息,请参阅 Azure File Sync 代理和防火墙设置。 遵循自己的网络最佳做法。

在服务器安装向导结束时,将打开一个服务器注册向导。 从前面将服务器注册到存储同步服务的Azure资源。

部署指南中更详细地介绍了这些步骤,其中包括应首先安装的 PowerShell 模块:Azure File Sync代理安装

使用最新的代理。 可以从 Microsoft Download Center:Azure File Sync代理

成功安装并注册服务器后,可以确认是否已成功完成此步骤。 转到Azure门户中的存储同步服务资源。 在左侧菜单中,转到“已注册的服务器”。 你会看到你的服务器列在此处。

阶段 6:在Windows Server部署上配置Azure File Sync

注册的本地Windows Server实例必须准备好并连接到 Internet 才能完成此过程。

此步骤将前面步骤中在Windows Server实例上设置的所有资源和文件夹关联在一起。

  1. 登录到 Azure 门户
  2. 找到你的存储同步服务资源。
  3. 为每个Azure文件共享在存储同步服务资源中创建一个新的 sync group。 在 Azure File Sync 的术语中,Azure 文件共享会在您描述的同步拓扑中成为一个 云终结点,用于创建同步组。 在创建同步组时,为它提供一个熟悉的名称,便于你识别在那里同步的是哪组文件。 请确保引用具有匹配名称的Azure文件共享。
  4. 创建同步组后,这个同步组会在同步组列表中显示为一行。 选择名称(链接)可显示同步组的内容。 你将在 Cloud 终结点下看到 Azure 文件共享。
  5. 找到“添加服务器端点”按钮。 你在本地服务器上预配的文件夹将成为此服务器终结点的路径。

重要

云分层是 Azure 文件同步(Azure File Sync)的一个功能,它允许本地服务器的存储容量小于云中的存储容量,但仍提供完整的命名空间。 在本地有用的数据也缓存在本地,以实现快速访问性能。 云存储分层是每个 Azure 文件同步 服务器终结点的可选功能。

警告

如果在 Windows Server 卷上预配的存储量比 Linux Samba 服务器上使用的数据少,则必须使用云分层。 如果不启用云分层,您的服务器将无法腾出空间来存储所有文件。 暂时将用于迁移的分层策略设置为 99% 的卷可用空间。 确保在迁移完成后返回到云分层设置,并将策略设置为从长期来看更有用的级别。

针对需要为同步配置的所有Azure文件共享和服务器位置,重复同步组创建和添加匹配的服务器文件夹作为服务器终结点的步骤。

创建所有服务器端点后,同步功能将正常工作。 可以创建一个测试文件,并查看它从您的服务器位置同步到连接的 Azure 文件共享(如同步组中的云终结点所述)。

两个位置,即服务器文件夹和Azure文件共享,目前是空的,正在等待数据。 在下一步中,你将开始将文件复制到Windows Server实例中,以便Azure File Sync将它们移到云中。 在已启用云分层的情况下,如果本地卷上的容量耗尽,服务器将开始对文件进行分层。

第 7 阶段:Robocopy

基本迁移方法是使用 Robocopy 复制文件,并使用Azure File Sync执行同步。

运行Windows Server目标文件夹的第一个本地副本:

  1. 标识 Linux Samba 服务器上的第一个位置。
  2. 标识Windows Server实例上已配置Azure File Sync的匹配文件夹。
  3. 开始使用 Robocopy 进行复制。

以下 Robocopy 命令会将文件从 Linux Samba 服务器的存储复制到Windows Server目标文件夹。 Windows Server会将它同步到Azure文件共享。

如果在 Windows Server 实例上预配的存储量比文件在 Linux Samba 服务器上占用的要少,则已配置云分层。 当本地 Windows Server 卷已满时,云分层将启动,并对已成功同步的文件进行分层。 云分层将生成足够的空间,以便继续从 Linux Samba 服务器进行复制。 云分层每小时检查一次已同步哪些内容,并释放磁盘空间,以满足提供 99% 的卷可用空间这一策略。

Robocopy 移动文件的速度可能比您同步到云端和在本地进行分层存储的速度更快,这可能导致本地磁盘空间耗尽。 Robocopy 随后将会失败。 我们建议按顺序逐一处理共享,以防止出现问题。 例如,考虑不要同时为所有共享启动 Robocopy 作业。 或者考虑移动适合当前Windows Server实例上可用空间的共享资源。 如果 Robocopy 作业确实失败,你始终可以重新运行命令,前提是使用以下镜像/清除选项:

robocopy <SourcePath> <Dest.Path> /MT:20 /R:2 /W:1 /B /MIR /IT /COPY:DATSO /DCOPY:DAT /NP /NFL /NDL /XD "System Volume Information" /UNILOG:<FilePathAndName> 
开关 Meaning
/MT:n 允许 Robocopy 以多线程方式运行。 n 的默认值为 8。 最大线程数为 128 个。 尽管较高的线程计数有助于使可用带宽饱和,但并不意味着线程越多,迁移就越快。 对 Azure Files 进行的测试表明,在初次复制运行中,均衡性能介于 8 到 20 之间。 后续的 /MIR 运行会逐步受到可用计算与可用网络带宽的影响。 对于后续的运行,请让你的线程计数值尽量与处理器核心计数和每个核心的线程计数匹配。 考虑是否需要为生产服务器可能具有的其他任务预留核心。 使用Azure Files的测试表明,最多 64 个线程会产生良好的性能,但前提是处理器可以同时保持活动状态。
/R:n 首次尝试复制失败的文件的最大重试次数。 在运行中文件复制永久失败之前,Robocopy 会尝试 n 次。 你可以优化运行的性能:如果你认为是超时问题导致了过去的失败,请选择值 2 或 3。 这在 WAN 链接上可能更常见。 如果你认为文件复制失败是因为它正在被使用,请选择“不重试”或选择值为 1。 如果在几秒钟后重试,可能没有足够的时间让文件的使用中状态发生变化。 使文件保持打开状态的用户或应用可能需要数小时的时间。 在这种情况下,接受文件未能复制,然后在计划的一次后续 Robocopy 运行中捕获该文件,最终可能会成功复制文件。 这有助于使当前运行更快完成,而不会因多次重试而延长,最终在超过重试超时时间之后,由于文件仍处于打开状态而导致大量复制失败。
/W:n 在 Robocopy 再次尝试复制上次未能成功复制的文件之前,指定其等待的时间。 n 是两次重试之间的等待间隔(秒)。 /W:n 通常与 /R:n 一起使用。
/B 在备份应用程序会使用的同一模式下运行 Robocopy。 此开关允许 Robocopy 移动当前用户无权访问的文件。 备份开关依赖于在管理员提升控制台或 PowerShell 窗口中运行 Robocopy 命令。 如果使用 Robocopy 进行 Azure 文件操作,请确保使用存储帐户访问密钥而不是域标识来装载 Azure 文件共享。 如果不这样做,错误消息可能不会直观地引导你解决问题。
/MIR (将源镜像映射到目标)使 Robocpy 只复制源和目标之间的增量。 将复制空子目录。 将复制目标上已更改或不存在的项(文件或文件夹)。 将从目标上清除(删除)目标上存在但源上没有的项。 使用此开关时,要使源和目标文件夹结构完全匹配。 “匹配”表示从正确的源和文件夹级别复制到目标上的匹配文件夹级别。 只有这样,才能成功完成“追赶”复制。 当源和目标不匹配时,使用 /MIR 将导致大规模删除和重新复制。
/IT 确保在某些镜像场景中保持精确性。
例如,如果在两个 RoboCopy 运行之间,文件遇到 ACL 更改和属性更新的情况,它将被标记为“隐藏”。 如果没有 /IT,RoboCopy 可能会遗漏 ACL 更改,并且不会将其传输到目标位置。
/COPY:[copyflags] 文件副本的保真度。 默认值:/COPY:DAT。 复制标志:D= 数据,A= 属性,T= 时间戳,S= 安全性 = NTFS 访问控制列表,O= 所有者信息,U= 审核信息。 审核信息不能存储在Azure文件共享中。
/DCOPY:[copyflags] 目录副本的保真度。 默认值:/DCOPY:DA。 复制标记:D = 数据,A = 属性,T = 时间戳。
/NP 指定不显示每个文件和文件夹的复制进度。 显示进度会明显降低复制性能。
/NFL 指定文件名不会被记录。 提高复制性能。
/NDL 指定不将目录名记录在日志中。 提高复制性能。
/XD 指定要排除的目录。 在卷的根目录上运行 Robocopy 时,请考虑排除隐藏的 System Volume Information 文件夹。 如果按照设计进行使用,其中的所有信息都特定于该特定系统上的特定卷,并能按需重建。 复制这些信息无论是在云端使用还是当数据被复制回另一个Windows卷的时候,都不会有帮助。 留下此内容不应被视为数据丢失。
/UNILOG:<file name> 将状态以 Unicode 形式写入日志文件。 (覆盖现有日志。)
/L 仅供测试运行 仅列出文件。 它们不会被复制,也不会被删除,并且也不会有时间戳。 通常与 /TEE 配合使用以获得控制台输出。 可能需要删除示例脚本中的标志(例如 /NP/NFL/NDL),才能正确记录测试结果。
/LFSM 仅适用于具有分层存储的目标。 当目标为远程 SMB 共享位置时则不受支持。
指定 Robocopy 在“低可用空间模式”下运行。此开关可对具有分层存储的目标有用,这些目标可能会在 Robocopy 完成之前耗尽本地容量。 它是专门为启用了Azure File Sync云分层的目标而添加的。 它可以独立于 Azure File Sync 使用。在此模式下,每当文件复制会导致目标卷的可用空间低于设定的“最低”值时,Robocopy 都会暂停。 可通过标志的 /LFSM:n 形式指定此值。 参数 n 在基数 2 nKBnMBnGB 中指定。 如果指定的 /LFSM 没有明确的下限值,则下限将设置为目标卷大小的 10%。 低可用空间模式与 /MT/EFSRAW/ZB 不兼容。 Windows Server 2022中添加了对 /B 的支持。 有关相关 bug 和解决方法的详细信息,请参阅下面的Windows Server 2022和 RoboCopy LFSM 部分。
/Z 谨慎使用
在重启模式下复制文件。 只有在不稳定的网络环境下,才建议使用此开关。 由于额外的日志记录,复制性能显著降低。
/ZB 谨慎使用使用重启模式
。 如果访问被拒绝,此选项将使用备份模式。 由于检查点的存在,此选项会导致复制性能明显降低。

重要

建议使用Windows Server 2022。 使用Windows Server 2019时,请确保安装最新的修补程序级别或至少OS 更新KB5005103。 它包含适用于某些 Robocopy 场景的重要修复。

RoboCopy 可能会报告即使不需要数据传输,也复制了文件。 发生此行为的原因是 robocopy 在生成输出时会评估文件数据和元数据的更改。 若要正确解释结果,请查看命令输出中的文件状态:

  • 较新的:文件数据已复制到目标位置。
  • 已修改:仅更新元数据;文件数据不会重新编码。

在这两种情况下,RoboCopy 可能会报告字节计数,就像传输数据一样。 验证复制操作时,此行为可能会导致混淆。

第 8 阶段:用户切换.

首次运行 Robocopy 命令时,用户和应用程序仍在访问 Linux Samba 服务器上的文件,并可能更改这些文件。 有可能出现下述情况:Robocopy 处理了一个目录并移至下一个目录,然后源位置 (Linux) 中的用户添加、更改或删除了一个此时不会在当前 Robocopy 运行中处理的文件。 这是预期的行为。

第一次运行旨在通过Azure File Sync将大部分数据传输到您的Windows Server实例和云中。此初始传输可能需要很长时间,具体取决于:

  • 下载带宽。
  • 上传带宽。
  • 本地网络速度,以及与之匹配的最佳 Robocopy 线程数
  • Robocopy 和 Azure File Sync 需要处理的项数(文件和文件夹)。

在初始运行完成后,再次运行该命令。

第二次运行该命令的速度更快,因为只需传输自上次运行后发生的更改。 在这第二次运行期间,仍可能积累新的更改。

重复此过程,直到你对在特定位置完成 Robocopy 操作所花费的时间在可接受的停机时间范围内感到满意为止。

当您认为停机时间是可以接受的,并准备好将 Linux 位置下线时,可以更改共享根目录上的 ACL,以便用户无法再访问该位置。 或者,您可以采取任何其他适当措施,以防止在您的 Linux 服务器上更改此文件夹中的内容。

运行最后一轮 Robocopy。 它将检测到可能被忽略的任何更改。 这最后一步所花费的时间取决于 Robocopy 的扫描速度。 可以通过测量上一轮运行所用的时间来估算时间(相当于停机时间)。

在 Windows Server 文件夹中创建一个共享,并可能调整 DFS-N 部署以使其指向该共享。 请务必设置与 Linux Samba 服务器 SMB 共享上相同的共享级别权限。 如果在 Linux Samba 服务器上使用了本地用户,则需要将这些用户重新创建为Windows Server本地用户。 还需要将 Robocopy 移动到的 Windows Server 实例中的现有 SID 映射到新 Windows Server 本地用户的 SID。 如果使用了Active Directory帐户和 ACL,Robocopy 将按原样移动它们,无需执行进一步操作。

现已完成将一个共享或一组共享迁移到通用根目录或卷(具体取决于第 1 阶段中的映射)的过程。

可以尝试并行运行其中的几个副本。 建议一次处理一个Azure文件共享的范围。

警告

将 Linux Samba 服务器中的所有数据移动到Windows Server实例后,迁移已完成,请在Azure门户中返回到 all 同步组。 将云分层卷的可用空间百分比调整为更适合缓存利用率的值,例如 20%。

在云分层卷中维护可用空间的策略适用于卷级别,并且该卷可能有多个服务器端点从中进行同步。 如果你忘记在某个服务器端点上调整可用空间,同步将继续应用最严格的规则,并尝试将可用磁盘空间保持在99%。 然后,本地缓存可能无法按预期方式执行。 如果你的目标是为仅包含极少访问的存档数据的卷提供命名空间,并且要将剩余的存储空间预留给其他方案,这种性能可能是可接受的。

故障排除

最常见的问题是 Robocopy 命令在 Windows Server 端返回 Volume full 错误。 云分层每小时会将已同步的内容从本地 Windows Server 磁盘中迁移出来。 其目标是实现存储卷上保持 99% 的空闲空间。

让同步继续进行并让云分层释放磁盘空间。 可以在Windows Server上的文件资源管理器中观察到这一点。

当Windows Server实例有足够的可用容量时,重新运行该命令将解决问题。 遇到这种情况时,不会有任何中断,可以放心地继续操作。 再次运行该命令只会带来不便。

请查看以下部分中的链接,以排查Azure File Sync问题。

后续步骤

以下文章包含有关Azure File Sync的高级选项、最佳做法和故障排除帮助。