你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
借助 Azure NetApp 文件的迁移助手,你可以将卷从本地 ONTAP 或 Cloud Volumes ONTAP 对等互连并迁移到 Azure NetApp 文件。 此功能目前仅适用于 REST API。
要求
- 在 ONTAP 或 Cloud Volumes ONTAP 中,必须运行 ONTAP 9.10.0 或更高版本。
- 需要获取 SnapMirror 许可证权利并将其应用于本地 ONTAP 或 Cloud Volumes ONTAP 群集。 与你的帐户团队合作,让 Azure 技术专家将许可证应用于本地存储群集。
- 必须为源群集中的卷关闭快照锁定。 如果启用了快照锁定,你将收到
Last transfer error。 若要禁用快照锁定,请参阅 ONTAP 文档。 - 确保 Azure NetApp 文件支持你的网络拓扑。 确保已建立从本地存储到 Azure NetApp 文件的连接。
- 用于托管 Azure NetApp 文件卷的委派子网地址空间必须至少具有 7 个空闲 IP 地址:其中 6 个用于群集对等互连,1 个用于对迁移卷的数据访问。
- 应适当调整委派子网地址空间的大小,以容纳更多的 Azure NetApp 文件网络接口。 查看 Azure NetApp 文件网络规划指南,确保满足委派子网规模要求。
- 使用迁移助手时,Azure NetApp 文件卷必须使用标准网络功能。 有关设置网络功能的详细信息,请参阅配置网络功能。
- 发出对等互连请求后,必须在发出请求后的 60 分钟内接受该请求。 如果 60 分钟内未接受,则对等互连请求将过期。
- 从单个源群集进行迁移时,你应当先完成一个 Azure 订阅中的迁移,然后再迁移目的地为另一个订阅的卷。 使用另一个 Azure 订阅和相同的外部源群集时,群集对等互连会失败。
- 如果你为了将卷管理任务进行分离(这些卷位于同一个网络同级集中)而使用 Azure RBAC 来区分 Azure NetApp 文件的存储管理角色,需要注意:与该同级集建立对等互连的外部 ONTAP 系统不会遵循这些由 Azure 定义的角色权限。 外部存储管理员在查看同级集中的所有卷时,可能只能有限地看到存储层级的元数据详细信息。
- 在创建每个迁移卷时,Azure NetApp 文件的卷放置算法会尝试重用该订阅中先前创建的卷所使用的同一个 Azure NetApp 文件存储系统,以减少在委派子网中占用的网络接口卡 (NIC) 或 IP 数量。 如果无法重用,则会额外占用 7 个 NIC。
- 你应确保没有外部 FlexGroup 卷,因为它们无法迁移到 Azure NetApp 文件大型卷。
- 迁移正在进行时,请不要启用备份等功能。 请仅在迁移完成后启用这些功能。
小窍门
有关为迁移助手创建迁移卷和将群集对等互连的帮助,请参阅 PowerShell 迁移助手工作流示例脚本。
注册该功能
首次将该功能用于迁移助手之前,需要先注册该功能。 注册后,即可在后台启用并使用该功能。
注册此功能:
Register-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFMigrationAssistant检查功能注册的状态:
注释
RegistrationState 可能会处于状态长达 60 分钟,然后才更改为
Registering状态。Registered请等到状态变为“已注册”后再继续。Get-AzProviderFeature -ProviderNamespace Microsoft.NetApp -FeatureName ANFMigrationAssistant
您还可以使用 Azure CLI 命令az feature register 来注册特性并显示注册状态。
在您开始之前
你必须创建 ExpressRoute 或 VPN 资源,以确保从外部 NetApp ONTAP 群集到目标 Azure NetApp 文件群集的网络连接。 有多种方法可以确保网络连接。 网络连接包括以下这组防火墙规则(全部为双向通信):
- ICMP
- TCP 11104
- TCP 11105
- HTTPS
源群集上的所有群集间 (IC) LIF 必须与 Azure NetApp 文件终结点上的所有 IC LIF 之间建立网络连接。
注释
迁移助手会复制所有卷内容,包括目录、文件、文件元数据(例如所有者、创建日期、修改日期)和现有快照。 你负责确保 Azure NetApp 文件目标卷配置了 LDAP 或 Active Directory。
迁移卷
使用 Azure Active Directory 进行身份验证以检索 OAuth 令牌。 此令牌用于后续 API 调用。
创建一个迁移 API 请求,来为你打算迁移的每个本地卷创建 Azure NetApp 文件卷。
重要
确保目标卷上的大小和其他卷属性与源相匹配。
你应创建一个比源卷多出 20% 或更多配额的 Azure NetApp 文件卷。 Azure NetApp 文件卷使用逻辑容量大小。 由于重复数据删除和压缩,源卷可能更小。 要更正 Azure NetApp 文件卷大小,请使用要迁移的卷报告的逻辑空间。 迁移后,你可以不间断地收缩 Azure NetApp 文件,以防止过度预配。
“远程路径”值是本地存储的主机、服务器和卷名称。
PUT: https://<region>.management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.NetApp/netAppAccounts/<account-name>/capacityPools/<capacity-pool-name>/volumes/Migvolfinal?api-version=2025-06-01 Body: { "type":"Microsoft.NetApp/netAppAccounts/capacityPools/volumes", "location":"<LOCATION>", "properties":{ "volumeType":"Migration", "dataProtection":{ "replication":{ "endpointType":"Dst", "replicationSchedule":"Hourly", "remotePath":{ "externalHostName":"<external-host-name>", "serverName":"<server-name>", "volumeName":"<volume-name>" } } }, "serviceLevel":"<service-level>", "creationToken":"<token>", "usageThreshold":<value>, "exportPolicy":{ "rules":[ { "ruleIndex":1, "unixReadOnly":false, "unixReadWrite":true, "cifs":<true|false>, "nfsv3":<true|false>, "nfsv41":<true|false>, "allowedClients":"0.0.0.0/0", "kerberos5ReadOnly":<true|false>, "kerberos5ReadWrite":<true|false>, "kerberos5iReadOnly":<true|false>, "kerberos5iReadWrite":<true|false>, "kerberos5pReadOnly":<true|false>, "kerberos5pReadWrite":<true|false>, "hasRootAccess":<true|false> } ] }, "protocolTypes":[ "<protocols>" ], "subnetId":"/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<virtual-network-name>/subnets/<subnet>", "networkFeatures":"Standard", "isLargeVolume":"false" } }针对每个目标 Azure NetApp 文件迁移卷,向本地群集发出群集对等互连 API 请求。 对每个迁移卷重复此步骤。 每个调用都必须提供本地群集间 LIF 的列表。 对等 IP 地址必须与你的本地网络匹配。
注释
在给定的一对源群集与目标群集之间,群集对等互连仅支持一个活动订阅。 如果为同一个群集对创建第二个订阅,则对等互连过程将会失败。 在同一区域中,一次只能迁移一个活动订阅;但是,支持跨不同区域的迁移,并且将成功完成。
注释
ONTAP 系统中的每个节点都需要 IC LIF。 需要在此处列出每个 IC LIF。
PUT https://<region>.management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.NetApp/netAppAccounts/<account-name>/capacityPools/<capacity-pool-name>/volumes/<volume-names>/peerExternalCluster?api-version=2025-06-01 Body: { "PeerAddresses":[ "<LIF address>", "<LIF address>", "<LIF address>", "<LIF address>" ] }查看结果标头。 复制
Azure-AsyncOperationID。在你的 ONTAP 或 Cloud Volumes ONTAP 系统中,通过使用 Azure-AsyncOperation ID 发送 GET 请求,接受来自 Azure NetApp 文件的群集对等请求。
POST https://<region>.management.azure.com/subscriptions/<subscription-ID>/providers/Microsoft.NetApp/locations/<location>/operationResults/<Azure-AsyncOperation>?api-version=2025-06-01...注释
此操作可能需要花费一段时间。 检查请求状态。 当状态显示为“Succeeded”时,即表示已完成。如果
Azure-AsyncOperation在一小时后未成功响应,或者失败并出现错误,请再次运行peerExternalCluster命令。 在继续操作之前,请确保外部 ONTAP 或 Cloud Volumes ONTAP 系统与 Azure NetApp 文件委托子网之间的网络配置正常工作。{ "id": "/subscriptions/<subscriptionID>/providers/Microsoft.NetApp/locations/southcentralus/operationResults/00000-aaaa-1111-bbbb-22222222222", "name": "<name>", "status": "Succeeded", "name": "<name>", "status": "Succeeded", "startTime": "2023-11-02T07:48:53.6563893Z", "endTime": "2023-11-02T07:53:25.3253982Z", "percentComplete": 100.0, "properties": { "peerAcceptCommand": "cluster peer create -ipspace <IP-SPACE-NAME> -encryption-protocol-proposed tls-psk -peer-addrs <peer-addresses-list>", "passphrase": "<passphrase>" } }收到已成功状态后,将
peerAcceptCommand字符串复制并粘贴到本地卷的命令行中,随后输入密码字符串。注释
如果响应正文中的
peerAcceptCommand字符串为空,则表示对等互连已建立。 对于相应的迁移卷,请跳过此步骤。为迁移卷发出
authorizeExternalReplicationAPI 请求。 对每个迁移卷重复此请求。POST: https://<region>.management.azure.com/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.NetApp/netAppAccounts/<account-name>/capacityPools/<capacity-pool-name>/volumes/<volume-names>/authorizeExternalReplication?api-version=2025-06-01通过使用第 4 步中的 Azure-AsyncOperation ID 发送 GET 请求,接受来自 Azure NetApp 文件的存储虚拟机 (SVM) 对等互连请求。
GET https://<region>.management.azure.com/subscriptions/<subscription-ID>/providers/Microsoft.NetApp/locations/<location>/operationResults/<>?api-version=2025-06-01&...示例响应:
{ "id": "/subscriptions/00000000-aaaa-0000-aaaa-0000000000000/providers/Microsoft.NetApp/locations/southcentralus/operationResults/00000000-aaaa-000-aaaa-000000000000" "name": "00000000-aaaa-000-aaaa-000000000000", "status": "Succeeded", "name": "00000000-aaaa-0000-aaaa-0000000000000", "status": "Succeeded", "startTime": "2023-11-02T07:48:53.6563893Z", "endTime": "2023-11-02T07:53:25.3253982Z", "percentComplete": 100.0, "properties": { "svmPeeringCommand": "vserver peer accept -vserver on-prem-svm-name -peer-vserver destination-svm-name", } }等待基线数据传输完成。 可以使用 Azure 门户或 REST API 监视复制状态。
收到响应后,将 CLI 命令从
svmPeeringCommand复制到 ONTAP CLI。在基线传输完成后,选择一个时间使本地卷脱机,以防止新数据写入。
如果在基线传输后对数据进行了更改,请发送“执行复制传输”请求以捕获在完成基线传输后写入的任何增量数据。 对每个迁移卷重复此操作。
POST https://<region>.management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-names>/providers/Microsoft.NetApp/netAppAccounts/<account-name>>/capacityPools/<capacity-pool>/volumes/<volumes>/performReplicationTransfer?api-version=2024-06-01中断复制关系。 若要在门户中中断复制,请导航到每个卷的“复制”菜单,然后选择“中断对等互连”。 也可以提交 API 请求:
POST https://<region>.management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.NetApp/netAppAccounts/<NetApp-account>/capacityPools/<capacity-pool-name>>/volumes/<volumes>/breakReplication?api-version=2025-06-01注释
中断复制关系后,请勿运行任何
snapmirror命令(例如snapmirror delete或snapmirror release);这些命令会使 Azure NetApp 文件卷不可用。删除迁移复制关系。 如果已删除的复制是与你的订阅关联的上次迁移,则会删除关联的群集对等机和群集间 LIF。
POST https://<region>.management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.NetApp/netAppAccounts/<NetApp-account>/capacityPools/<capacity-pool>/volumes/<volume-names>/finalizeExternalReplication?api-version=2025-06-01完成复制会移除 Azure NetApp 文件上的所有对等互连信息。 手动确认在 ONTAP 群集上移除了所有复制数据。 如果有任何对等互连信息被保留,请运行
cluster peer delete命令。