虽然术语 终结点 通常用于网络,但它在存储移动器服务的上下文中用于描述具有较高详细信息的存储位置。
存储移动器终结点是一个资源,其中包含源位置或目标位置的路径和其他相关信息。 端点用于创建任务定义,以确定特定复制操作的源位置和目标位置。 只有某些类型的终结点可以分别用作源或目标。 例如,NFS(网络文件系统)文件共享终结点中包含的数据只能复制到 Blob 存储容器。 同样,基于 SMB(服务器消息块)文件共享目标的复制操作只能迁移到 Azure 文件共享。
本文将指导你完成 Azure 存储移动器终结点的创建和管理。 若要遵循这些示例,需要顶级存储移动器资源。 如果尚未创建,请按照 “创建存储移动器”资源 文章中的步骤操作,然后再继续。
完成本文中的步骤后,你将能够使用 Azure 门户和 Azure PowerShell 创建和管理终结点。
终结点资源概述
在 Azure 存储移动器资源层次结构中,迁移项目用于将迁移作业组织到逻辑任务或组件中。 迁移项目又包含至少一个作业定义,其中描述了迁移项目的源位置和目标位置。
了解存储移动器资源层次结构文章包含有关存储移动器、终结点及其项目之间的关系的更多详细信息。
因为迁移需要定义良好的源和目标,所以端点是顶级存储移动程序资源的父级。 借助这种安排,您可以在任意数量的作业定义中重用终结点。 虽然只有单个终结点资源存在,但每个终结点的属性可能会因类型而异。 例如,NFS(网络文件系统)共享、SMB 共享和 Azure 存储 Blob 容器终结点都需要基本不同的信息。
当前的 Azure 存储移动程序版本支持特定源目标对组合的完全保真迁移。 请始终利用最新的代理版本,以从这些受支持的源和目标中获益:
源协议 |
目标 |
注释 |
SMB 2.x 装载 |
Azure Blob 存储容器、Azure 文件共享(SMB) |
目前不支持 SMB 1.x 源和 NFS Azure 文件共享。 |
SMB 2.x 装载 |
Azure Blob 存储容器 |
支持启用了分层命名空间服务(HNS)功能的容器,ADLS Gen2 REST API 集用于迁移。 |
NFS 3 和 4 装载 |
Azure Blob 存储容器 |
支持启用了分层命名空间服务(HNS)功能的容器,ADLS Gen2 REST API 集用于迁移。 |
SMB 终结点
SMB 使用 ACL(访问控制列表)概念和基于用户的身份验证为所选用户提供对共享文件的访问权限。 为了保持安全性,存储 Mover 依赖于 Azure Key Vault 集成来安全地存储和严格控制对用户凭据和其他机密的访问。 在迁移过程中,存储移动程序代理资源使用 Key Vault 机密(而不是不安全的硬编码凭据)连接到 SMB 终结点。 此方法大大减少了机密可能被意外泄露的可能性。
配置本地文件共享源后,请将用户名和密码的机密添加到 Key Vault。 创建 SMB 终结点时,需要同时提供 Key Vault 的名称或统一资源标识符(URI)以及凭据机密的名称或 URI。
通过 Azure RBAC(基于角色的访问控制)授权系统控制对 Key Vault 和目标存储资源的代理访问。 通过此系统,可以根据与托管标识、安全主体和资源关联的属性定义访问权限。 需要注意的是,当在 Azure 门户中创建 SMB 终结点时,系统会自动应用必要的 RBAC 角色分配。 但是,以编程方式创建的任何终结点都需要手动进行以下分配:
角色 |
资源 |
密钥保管库机密用户 |
用于存储 SMB 源凭据的密钥库资源 |
存储文件数据特权参与者 |
目标文件共享资源 |
有许多用例需要保留元数据值,例如文件和文件夹时间戳、ACL 和文件属性。 存储移动器支持与基础 Azure 文件共享相同的文件保真度级别。 Azure 文件又支持 NTFS 文件属性的子集。 下表表示已迁移的常见元数据:
元数据属性 |
结果 |
目录结构 |
源的原始目录结构保留在目标共享上。 |
访问权限 |
对源文件或目录的权限保留在目标共享上。 |
符号链接 |
源上的符号链接会被保留,并且映射到目标共享中。 |
创建时间戳 |
源文件的原始创建时间戳保留在目标共享上。 |
更改时间戳 |
源文件的原始更改时间戳保留在目标共享上。 |
修改时间戳 |
源文件的原始修改时间戳保留在目标共享上。 |
上次访问时间戳 |
目标共享上的文件或目录不支持此上次访问时间戳。 |
其他元数据 |
如果目标共享支持源项,则会保留源项的其他元数据。 |
NFS 终结点
使用 NFS 协议,可以在运行 Windows 和其他非 Windows 操作系统(如 Linux 或 UNIX)的计算机之间传输文件。 当前的 Azure 存储移动器版本仅支持从网络内 NAS 或服务器设备上的 NFS 共享迁移到 Azure Blob 容器。
与 SMB 不同,NFS 不使用 ACL 概念或基于用户的身份验证。 这种差异允许在没有 Azure Key Vault 集成的情况下访问 NFS 终结点。 此外,存储移动器以不同的方式处理 NFS 装载源及其 Blob 容器目标对应项的元数据。 下表标识迁移期间遇到的常见元数据的结果:
元数据属性 |
结果 |
目录结构 |
Blob 容器没有传统的文件系统,而是支持“虚拟文件夹”。文件夹内文件的路径位于文件名前面,并放置在 Blob 容器中的平面列表中。 空文件夹在目标容器中显示为空白 Blob。 与文件一样,源文件夹的元数据将保留在此 blob 的自定义元数据字段中。 |
访问权限 |
源文件的权限在自定义 blob 元数据中保留,但不像在源中那样工作。 |
符号链接 |
如果可以解析目标文件符号链接,则会迁移目标文件。 无法解析的符号链接将记录为失败的文件。 |
创建时间戳 |
源文件的原始时间戳保留为自定义 Blob 元数据。 blob 原生时间戳反映文件迁移的时间。 |
更改时间戳 |
源文件的原始时间戳保留为自定义 Blob 元数据。 没有这种类型的 blob 本机时间戳。 |
修改时间戳 |
源文件的原始时间戳保留为自定义 Blob 元数据。 blob 原生时间戳反映文件迁移的时间。 |
上次访问的时间戳 |
如果时间戳存在于源文件上,此时间戳将保留为自定义 Blob 元数据。 没有这种类型的 blob 本机时间戳。 |
其他元数据 |
如果源项存在其他元数据,则这些元数据会保留在目标 blob 的自定义元数据字段中。 只能存储 4 KiB 的元数据。 不会迁移较大大小的元数据。 |
创建终结点
在创建作业定义之前,需要为源和目标数据源创建终结点。
重要
如果尚未使用资源提供程序部署存储移动器资源,那么在尝试本示例中的步骤之前,您需要先创建顶级资源。
Azure 存储移动器支持使用 NFS 和 SMB 协议的迁移方案。 创建这两个终结点的步骤类似。 创建已启用 NFS 和 SMB 的终结点之间的密钥区别在于,使用 Azure Key Vault 来存储 SMB 资源的共享凭据。 运行迁移作业时,代理将使用存储在 Key Vault 中的共享凭据。 通过向代理的托管标识授予 RBAC 角色分配来管理对密钥保管库机密的访问。
创建源终结点
源终结点标识数据被迁移的位置。 源终结点用于定义迁移项目中指定的数据的源。 Azure 存储移动器以文件共享的形式处理源位置。 这些位置可能驻留在网络连接存储(NAS)、服务器,甚至位于工作站上。 文件共享的常见协议是 SMB(服务器消息块)和 NFS(网络文件系统)。
以下步骤介绍了创建源终结点的过程。
在 Azure 门户中,导航到你的 存储迁移器资源页面。 从导航窗格中选择 存储终结点 以访问终结点。
在 “存储终结点 ”页上,默认 存储终结点 视图显示任何预配的源终结点的名称及其关联属性的摘要。 可以选择 目标终结点 以查看相应的目标终结点。 还可以通过选择 协议版本 或 主机 筛选器并选择适当的选项来进一步筛选结果。
选择“ 创建终结点 ”以展开 “终结点类型 ”菜单。 选择“ 创建源终结点 ”以打开“ 创建源终结点 ”窗格,如下图所示。
在 “创建源终结点 ”窗格中,提供所需的 主机名或 IP 和 共享名称 值的值。 主机名或 IP 地址值必须是 IPv4 地址或完全限定的域或主机名。
重要
根据 DNS 配置,可能需要使用完全限定的域名(FQDN),而不是主机名。
还可以添加最大长度为 1024 个字符的可选 Description 值。 接下来,选择 “协议版本 ”以展开协议选择菜单,并为源目标选择相应的选项。
存储迁移代理使用存储在 Key Vault 中的密钥连接到 SMB 终结点。 创建 SMB 源终结点时,需要同时提供包含机密的 Key Vault 的名称和机密本身的名称。
首先,选择 Key Vault 以展开菜单,然后选择包含机密的 Key Vault 的名称。 可以根据需要提供一个值,用于筛选 Key Vault 列表。
选择适当的 Key Vault 后,可以为用户名所需的 “选择机密 ”提供值,并为 密码字段选择机密 。 可以通过向机密提供 URI 或从列表中选择机密来提供这些值。 选择 “选择机密 ”按钮以启用菜单,然后选择用户名和密码值。 或者,可以启用 从 URI 输入机密 选项,并为用户名和密码机密提供相应的 URI。
主机和共享名称的值将串联成完整的迁移源路径。 路径值显示在 “完整源路径 ”字段中。 复制提供的路径,并在提交更改之前验证是否可访问该路径。 最后,确认所有值正确且可以访问源路径后,选择“ 创建 ”以添加新终结点。
新终结点已部署,现在显示在源终结点列表中,如下图所示。
New-AzStorageMoverSmbEndpoint
和 New-AzStorageMoverNfsEndpoint
cmdlet 用于在您之前部署的 存储移动器资源 中创建新终结点。
如果尚未安装模块 Az.StorageMover
:
## Ensure you are running the latest version of PowerShell 7
$PSVersionTable.PSVersion
## Your local execution policy must be set to at least remote signed or less restrictive
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
## If you don't have the general Az PowerShell module, install it first
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
## Lastly, the Az.StorageMover module is not installed by default and must be manually requested.
Install-Module -Name Az.StorageMover -Scope CurrentUser -Repository PSGallery -Force
有关安装 Azure PowerShell 的更多帮助,请参阅 “安装 Azure PowerShell ”一文。
谨慎
不支持重命名终结点资源。 最好确保已正确命名项目,因为预配项目后将无法更改大部分终结点名称。 但是,可以选择创建具有相同属性和不同名称的新终结点,如后面的部分所示。 请参阅资源命名约定以选择受支持的名称。
创建和使用变量来存储冗长或潜在的复杂字符串始终是个好主意。
重要
根据 DNS 配置,可能需要使用完全限定的域名(FQDN),而不是主机名。
复制示例代码块并提供所需参数的值。 参数 -Description
是可选的,在 “视图”和“编辑终结点的属性 ”部分中添加。
## Set variables
$subscriptionID = "[Subscription GUID]"
$resourceGroupName = "[Resource group name]"
$storageMoverName = "[Storage mover resource's name]"
$sourceHost = "[Source share's host name or IP address]"
$sourceShare = "[Source share's name]"
$targetResourceID = "/subscriptions/[GUID]/resourceGroups/demoResourceGroup/"
$targetResourceID += "providers/Microsoft.Storage/storageAccounts/demoAccount"
## For SMB endpoints
$smbFileshare = "[Target fileshare name]"
$usernameURI = "https://demo.vault.azure.net/secrets/demoUser"
$passwordURI = "https://demo.vault.azure.net/secrets/demoPassword"
## For NFS endpoints
$nfsContainer = "[Blob container target]"
使用 Connect-AzAccount
cmdlet 连接到 Azure 帐户。 通过为参数提供值 -Subscription
来指定订阅的 ID,如示例中所示。
Connect-AzAccount -Subscription $subscriptionID
成功连接后,可以创建新的源终结点资源。 根据要求,可以使用 New-AzStorageMoverSmbEndpoint
cmdlet 创建 SMB 终结点,如以下示例所示。
New-AzStorageMoverSmbEndpoint `
-Name "smbSourceEndpoint"
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-Host $sourceHost `
-ShareName $sourceShare `
-CredentialsUsernameUri $usernameURI `
-CredentialsPasswordUri $passwordURI
或者,可以使用 cmdlet 创建新的 NFS 源终结点 New-AzStorageMoverNfsEndpoint
,如下所示。
New-AzStorageMoverNfsEndpoint `
-Name "nfsSourceEndpoint" `
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-Host $sourceHost `
-Export $sourceShare `
以下示例响应包含属性 ProvisioningState
,该属性指示已成功创建终结点。
Id : /subscriptions/<GUID>/resourceGroups/
demoResourceGroup/providers/Microsoft.StorageMover/
storageMovers/demoMover/endpoints/smbTargetEndpoint
Name : demoTarget
Property : {
"endpointType": "AzureStorageSmbFileShare",
"description": "",
"provisioningState": "Succeeded",
"storageAccountResourceId": "/subscriptions/[GUID]/
resourceGroups/demoResourceGroup/providers/Microsoft.Storage/
storageAccounts/contosoeuap",
"fileShareName": "demoFileshare"
}
SystemDataCreatedAt : 6/22/2023 1:19:00 AM
SystemDataCreatedBy : user@contoso.com
SystemDataCreatedByType : User
SystemDataLastModifiedAt : 6/22/2023 1:19:00 AM
SystemDataLastModifiedBy : user@contoso.com
SystemDataLastModifiedByType : User
Type : microsoft.storagemover/storagemovers/endpoints
创建目标终结点
目标终结点标识数据迁移到的位置。 Azure 提供各种类型的云存储。 文件迁移到 Azure 的一个重要方面是确定哪个 Azure 存储选项适合你的数据。 文件和文件夹的数量及其目录结构、访问协议、文件保真度和其他方面是完整的云解决方案设计的重要输入。
如果需要有关为云解决方案设计选择合适的 Azure 目标存储的帮助,请参阅 云迁移基础知识 一文。
以下步骤描述创建目标终结点的过程。
在 Azure 门户中,导航到你的 存储迁移器资源页面。 从导航窗格中选择 存储终结点 以访问终结点。
在 “存储终结点 ”页上,默认 存储终结点 视图显示任何预配的源终结点的名称及其关联属性的摘要。 选择 “目标终结点 ”以查看现有目标终结点。 可以通过选择 存储帐户 筛选器和相应的选项进一步筛选结果。
选择“ 创建终结点 ”以展开 “终结点类型 ”菜单。 选择“ 创建目标终结点 ”以打开“ 创建目标终结点 ”窗格,如下图所示。
在“ 创建目标终结点 ”窗格中,分别从 “订阅 ”和 “存储帐户 ”列表中选择订阅和目标存储帐户。 接下来,选择对应于目标终结点的相应 目标类型 选项。
当前的 Azure 存储移动程序版本支持特定源目标对组合的完全保真迁移。 请始终利用最新的代理版本,以从这些受支持的源和目标中获益:
源协议 |
目标 |
注释 |
SMB 2.x 装载 |
Azure Blob 存储容器、Azure 文件共享(SMB) |
目前不支持 SMB 1.x 源和 NFS Azure 文件共享。 |
SMB 2.x 装载 |
Azure Blob 存储容器 |
支持启用了分层命名空间服务(HNS)功能的容器,ADLS Gen2 REST API 集用于迁移。 |
NFS 3 和 4 装载 |
Azure Blob 存储容器 |
支持启用了分层命名空间服务(HNS)功能的容器,ADLS Gen2 REST API 集用于迁移。 |
根据所选的目标类型,从相应的下拉列表中选择 Blob 容器 或 文件共享 。 最后,可以为长度最多为 1024 个字符的目标添加可选 Description 值,然后选择“ 创建 ”以部署终结点。
新终结点已部署,现在显示在终结点列表中,如以下示例图像所示。
- 若要创建新的 SMB 文件共享,请使用
New-AzStorageMoverAzStorageSmbFileShareEndpoint
cmdlet,如以下示例所示。
New-AzStorageMoverAzStorageSmbFileShareEndpoint `
-Name "smbTargetEndpoint" `
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-StorageAccountResourceId $targetResourceID `
-FileShareName $targetFileshare
New-AzStorageMoverAzStorageContainerEndpoint
使用 PowerShell cmdlet 创建新的 NFS Blob 容器。 以下示例提供预配指南。
New-AzStorageMoverAzStorageContainerEndpoint `
-Name "nfsTargetEndpoint" `
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-BlobContainerName $targetEpContainer `
-StorageAccountResourceId $targetResourceID `
以下示例响应包含属性 ProvisioningState
,该属性指示已成功创建终结点。
Id : /subscriptions/<GUID>/resourceGroups/
demoResourceGroup/providers/Microsoft.StorageMover/
storageMovers/demoMover/endpoints/smbTargetEndpoint
Name : demoTarget
Property : {
"endpointType": "AzureStorageSmbFileShare",
"description": "",
"provisioningState": "Succeeded",
"storageAccountResourceId": "/subscriptions/[GUID]/
resourceGroups/demoResourceGroup/providers/Microsoft.Storage/
storageAccounts/contosoeuap",
"fileShareName": "demoFileshare"
}
SystemDataCreatedAt : 6/22/2023 1:19:00 AM
SystemDataCreatedBy : user@contoso.com
SystemDataCreatedByType : User
SystemDataLastModifiedAt : 6/22/2023 1:19:00 AM
SystemDataLastModifiedBy : user@contoso.com
SystemDataLastModifiedByType : User
Type : microsoft.storagemover/storagemovers/endpoints
查看和编辑终结点的属性
根据用例,可能需要检索特定终结点或所有终结点资源的完整列表。 可能还需要添加或编辑终结点的说明。
按照本部分中的步骤查看可供存储移动程序资源访问的终结点。
要使用导航到 Azure 门户创建终结点,请导航到“存储移动程序”资源页面。 从导航窗格中选择 存储终结点 以访问终结点,如示例图像中所示。
在 “存储终结点 ”页上,默认 存储终结点 视图显示任何预配的源终结点的名称及其关联属性的摘要。 若要查看预配的目标终结点,请选择 “目标终结点”。 可以通过选择 协议 或 主机 筛选器和相关选项进一步筛选结果。
目前,Azure 门户不支持直接修改预配的终结点。 但是,可以按照 以下示例使用 Azure PowerShell 修改终结点的说明。 应在 Azure 门户中删除和重新创建需要更新的终结点资源。
使用 Get-AzStorageMoverEndpoint
cmdlet 检索一个终结点资源列表。 可选地,您可以提供一个 -Name
参数值以检索特定资源。 调用不带可选参数的 cmdlet 将返回与存储移动器资源关联的所有预配终结点的列表。
以下示例通过指定 demoTarget 名称值检索特定的项目资源。
Get-AzStorageMoverEndpoint `
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-Name "demoTarget"
示例响应包含指定项目的属性,包括空 Description
属性。
Id : /subscriptions/<GUID>/resourceGroups/
demoResourceGroup/providers/Microsoft.StorageMover/
storageMovers/demoMover/endpoints/smbTargetEndpoint
Name : demoTarget
Property : {
"endpointType": "AzureStorageSmbFileShare",
"description": "",
"provisioningState": "Succeeded",
"storageAccountResourceId": "/subscriptions/[GUID]/
resourceGroups/demoResourceGroup/providers/Microsoft.Storage/
storageAccounts/contosoeuap",
"fileShareName": "demoFileshare"
}
SystemDataCreatedAt : 6/22/2023 1:19:00 AM
SystemDataCreatedBy : user@contoso.com
SystemDataCreatedByType : User
SystemDataLastModifiedAt : 6/22/2023 1:19:00 AM
SystemDataLastModifiedBy : user@contoso.com
SystemDataLastModifiedByType : User
Type : microsoft.storagemover/storagemovers/endpoints
通过包含管道运算符和 Update-AzStorageMoverAzStorageSmbFileShareEndpoint
cmdlet,可以将缺少的描述添加到上一个示例中返回的终结点中。 以下示例通过 参数提供了缺少的 -Description
值。
Get-AzStorageMoverEndpoint `
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-Name "demoTarget" | `
Update-AzStorageMoverAzStorageSmbFileShareEndpoint `
-Description "SMB fileshare endpoint"
响应现在包含更新 Description
的属性值。
Id : /subscriptions/<GUID>/resourceGroups/
demoResourceGroup/providers/Microsoft.StorageMover/
storageMovers/demoMover/endpoints/smbTargetEndpoint
Name : demoTarget
Property : {
"endpointType": "AzureStorageSmbFileShare",
"description": "SMB fileshare endpoint",
"provisioningState": "Succeeded",
"storageAccountResourceId": "/subscriptions/[GUID]/
resourceGroups/demoResourceGroup/providers/Microsoft.Storage/
storageAccounts/contosoeuap",
"fileShareName": "demoFileshare"
}
SystemDataCreatedAt : 6/22/2023 1:19:00 AM
SystemDataCreatedBy : user@contoso.com
SystemDataCreatedByType : User
SystemDataLastModifiedAt : 6/22/2023 1:19:00 AM
SystemDataLastModifiedBy : user@contoso.com
SystemDataLastModifiedByType : User
Type : microsoft.storagemover/storagemovers/endpoints
删除终结点
在生产环境中,删除终结点资源应该是相对罕见的,但有时可能会有所帮助。 若要删除存储移动器终结点资源,请遵循提供的示例。
警告
删除终结点是永久作,无法撤消。 最好确保已准备好删除终结点,因为稍后将无法还原终结点。
若要使用 Azure 门户删除终结点,请导航到 “存储移动器 资源”页。 从导航窗格中选择 存储终结点 以访问终结点,如下图所示。
默认 的“源终结点 ”视图显示任何预配的源终结点的名称及其关联数据的摘要。 可以选择 “目标终结点 ”筛选器以查看相应的目标终结点。
找到要删除的终结点的名称,然后选择相应的复选框。 验证是否已选择适当的终结点后,选择“ 删除 ”,如下图所示。
新终结点被删除,不再显示在终结点列表中,如以下示例图像中所示。
使用 Remove-AzStorageMoverEndpoint
永久删除终结点资源。 使用-Name
参数提供终结点的名称,并分别使用-ResourceGroupName
和-StorageMoverName
参数提供资源组和存储移动器资源的名称。
Remove-AzStorageMoverEndpoint `
-ResourceGroupName $resourceGroupName `
-StorageMoverName $storageMoverName `
-Name "demoTarget"
后续步骤
创建一个项目以整理需要一起迁移的不同源共享。