存储迁移服务已知问题
本文包含有关使用存储迁移服务迁移服务器时已知问题的解答。
存储迁移服务分为两个部分发布:Windows Server 中的服务和 Windows Admin Center 中的用户界面。 服务在 Windows Server 长期服务渠道和 Windows Server 半年服务渠道可用;而 Windows Admin Center 可以单独下载。 我们还定期将更改包含在 Windows Server 的累积更新中,通过 Windows 更新发布。
例如,Windows Server 版本 1903 包括存储迁移服务的新功能和修补程序,通过安装 KB4512534,它们也适用于 Windows Server 2019 和 Windows Server 版本 1809。
使用 Microsoft 支持部门时如何收集日志文件
存储迁移服务包含 Orchestrator 服务和代理服务的事件日志。 Orchestrator 服务器始终包含事件日志,而安装了代理服务的目标服务器包含代理日志。 这些日志位于:
- 应用程序和服务日志 \ Microsoft \ Windows \ StorageMigrationService
- 应用程序和服务日志 \ Microsoft \ Windows \ StorageMigrationService-Proxy
如果需要收集这些日志以供脱机查看或发送给 Microsoft 支持部门,GitHub 上提供了一个开源 PowerShell 脚本:
查看自述文件,了解使用情况。
除非管理 Windows Server 2019,否则存储迁移服务不会显示在 Windows Admin Center 中
使用 1809 版本的 Windows Admin Center 管理 Windows Server 2019 Orchestrator 时,看不到存储迁移服务的工具选项。
Windows Admin Center 存储迁移服务扩展受版本限制,仅管理 Windows Server 2019 版本 1809 或更高版本的操作系统。 如果你使用它来管理较旧的 Windows Server 操作系统或内部预览版,则不会显示该工具。 此行为是设计使然。
若要解决此问题,请使用或升级到 Windows Server 2019 内部版本 1809 或更高版本。
存储迁移服务直接转换验证失败,并出现错误“在目标计算机上拒绝对令牌筛选器策略的访问”
运行直接转换验证时,会收到错误“失败:在目标计算机上拒绝对令牌筛选器策略的访问”。即使为源计算机和目标计算机提供了正确的本地管理员凭据,也会发生这种情况。
此问题已在 KB4512534 更新中修复。
存储迁移服务未包含在 Windows Server 2019 Evaluation 或 Windows Server 2019 Essentials 版中
使用 Windows Admin Center 连接到 Windows Server 2019 Evaluation 版本或 Windows Server 2019 Essentials 版本时,没有管理存储迁移服务的选项。 存储迁移服务也不包含在角色和功能中。
此问题由 Windows Server 2019 Evaluation 和 Windows Server 2019 Essentials 版本中的服务问题引起。
若要解决此问题进行评估,请安装 Windows Server 2019 的零售版、MSDN 版、OEM 版或批量许可证版本,但不要激活它。 如果没有激活,所有版本的 Windows Server 都将在评估模式下运行 180 天。
我们已在更高版本的 Windows Server 中修复了此问题。
下载传输或错误 CSV 时存储迁移服务超时
使用 Windows Admin Center 或 PowerShell 下载传输操作的详细 CSV 日志时收到错误:
Transfer Log - Please check file sharing is allowed in your firewall. : This request operation sent to net.tcp://localhost:28940/sms/service/1/transfer did not receive a reply within the configured timeout (00:01:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.
此问题由在存储迁移服务允许的默认 1 分钟超时时间内传输的文件过多而无法筛选所引起。
若要解决此问题,请执行以下操作:
在业务流程协调程序计算机上,使用 Notepad.exe 编辑 %SYSTEMROOT%\SMS\Microsoft.StorageMigration.Service.exe.config 文件,将“sendTimeout”从默认的 1 分钟更改为 10 小时。
<bindings> <netTcpBinding> <binding name="NetTcpBindingSms" sendTimeout="10:00:00"
在 Orchestrator 计算机上重启“存储迁移服务”服务。
在 Orchestrator 计算机上,启动 Regedit.exe
如果以下注册表子项不存在,请创建它:
HKEY_LOCAL_MACHINE\Software\Microsoft\SMSPowershell
在“编辑”菜单中指向“新建”,然后选择“DWORD 值”。
键入“WcfOperationTimeoutInMinutes”作为 DWORD 的名称,然后按 Enter。
右键单击“WcfOperationTimeoutInMinutes”,然后选择“修改”。
在“基本数据”框中选择“十进制”
在“值”数据框中键入“600”,然后选择“确定”。
启动注册表编辑器。
再次尝试下载仅错误 CSV 文件。
如果在使用 WAC 时仍然出现问题,请改用 PowerShell。 在业务流程协调程序计算机上运行以下命令之一,并设置你自己的作业名称和源服务器 FQDN 值:
Get-SmsState -Name job -TransferFileDetail -computername sourcefqdn | export-csv -path log.csv
Get-SmsState -Name job -TransferFileDetail -ErrorsOnly -computername sourcefqdn | export-csv -path errlog.csv
针对目标代理和凭据管理权限的验证警告
验证传输作业时,会看到以下警告:
The credential has administrative privileges.
Warning: Action isn't available remotely.
The destination proxy is registered.
Warning: The destination proxy wasn't found.
如果尚未在 Windows Server 2019 目标计算机上安装存储迁移服务代理服务,则此行为是设计使然。 如果目标计算机为 Windows Server 2016 或 Windows Server 2012 R2,则你也会收到此消息。 建议迁移到安装了代理的 Windows Server 2019 计算机,以提高传输性能。
某些文件未清点或传输,错误 5“拒绝访问”
清点文件或将文件从源计算机传输到目标计算机时,用户已从中删除管理员组权限的文件无法迁移。 检查存储迁移服务-代理调试日志可以发现:
Log Name: Microsoft-Windows-StorageMigrationService-Proxy/Debug
Source: Microsoft-Windows-StorageMigrationService-Proxy
Date: 2/26/2019 9:00:04 AM
Event ID: 10000
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: srv1.contoso.com
Description:
02/26/2019-09:00:04.860 [Error] Transfer error for \\srv1.contoso.com\public\indy.png: (5) Access is denied.
Stack Trace:
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileDirUtils.OpenFile(String fileName, DesiredAccess desiredAccess, ShareMode shareMode, CreationDisposition creationDisposition, FlagsAndAttributes flagsAndAttributes)
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileDirUtils.GetTargetFile(String path)
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileDirUtils.GetTargetFile(FileInfo file)
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileTransfer.InitializeSourceFileInfo()
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileTransfer.Transfer()
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileTransfer.TryTransfer()
此问题由未调用备份特权的存储迁移服务中的代码缺陷引起。
若要解决此问题,请在 Orchestrator 计算机和目标计算机上安装 Windows 2019 年 4 月 2 日 更新 - KB4490481(OS 内部版本 17763.404)(如果安装了代理服务)。 确保源迁移用户帐户是源计算机和存储迁移服务 Orchestrator 上的本地管理员。 确保目标迁移用户帐户是目标计算机和存储迁移服务 Orchestrator 上的本地管理员。
使用存储迁移服务来预播种数据时,DFSR 哈希不匹配
使用存储迁移服务将文件传输到新目标,然后配置 DFS 复制以通过预播种复制或 DFS 复制数据库克隆在现有服务器中复制该数据时,所有文件都会出现哈希不匹配,并会重新复制。 使用存储迁移服务传输数据流、安全流、大小和属性后,它们似乎都完美匹配。 检查包含 ICACLS 或 DFS 复制数据库克隆调试日志的文件可以发现:
源文件
icacls d:\test\Source:
icacls d:\test\thatcher.png /save out.txt /t thatcher.png
D:AI(A;;FA;;;BA)(A;;0x1200a9;;;DD)(A;;0x1301bf;;;DU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)
目标文件
icacls d:\test\thatcher.png /save out.txt /t thatcher.png
D:AI(A;;FA;;;BA)(A;;0x1301bf;;;DU)(A;;0x1200a9;;;DD)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)**S:PAINO_ACCESS_CONTROL**
DFSR 调试日志
20190308 10:18:53.116 3948 DBCL 4045 [WARN] DBClone::IDTableImportUpdate Mismatch record was found.
Local ACL hash:1BCDFE03-A18BCE01-D1AE9859-23A0A5F6
LastWriteTime:20190308 18:09:44.876
FileSizeLow:1131654
FileSizeHigh:0
Attributes:32
Clone ACL hash:**DDC4FCE4-DDF329C4-977CED6D-F4D72A5B**
LastWriteTime:20190308 18:09:44.876
FileSizeLow:1131654
FileSizeHigh:0
Attributes:32
KB4512534 更新修复了此问题。
从 Windows Server 2008 R2 传输时出现错误“无法在任何终结点上传输存储”
尝试从 Windows Server 2008 R2 源计算机传输数据时,没有数据传输,并且你会收到错误:
Couldn't transfer storage on any of the endpoints.
0x9044
如果 Windows Server 2008 R2 计算机未使用来自 Windows 更新的所有关键和重要更新进行完全修补,则会出现此错误。 出于安全目的,保持更新 Windows Server 2008 R2 计算机尤其重要,因为该操作系统不包含较新版本 Windows Server 的安全性改进。
错误“无法在任何终结点上传输存储”和“检查源设备是否处于联机状态 - 我们无法访问它。”
尝试从源计算机传输数据时,某些或所有共享无法传输,并出现以下错误:
Couldn't transfer storage on any of the endpoints.
0x9044
检查 SMB 传输详细信息可以发现错误:
Check if the source device is online - we couldn't access it.
检查存储迁移服务/管理员事件日志可以发现:
Couldn't transfer storage.
Job: Job1
ID:
State: Failed
Error: 36931
Error Message:
Guidance: Check the detailed error and make sure the transfer requirements are met. The transfer job couldn't transfer any source and destination computers. This could be because the orchestrator computer couldn't reach any source or destination computers, possibly due to a firewall rule, or missing permissions.
检查存储迁移服务-代理/调试日志可以发现:
07/02/2019-13:35:57.231 [Error] Transfer validation failed. ErrorCode: 40961, Source endpoint is not reachable, or doesn't exist, or source credentials are invalid, or authenticated user doesn't have sufficient permissions to access it.
at Microsoft.StorageMigration.Proxy.Service.Transfer.TransferOperation.Validate()
at Microsoft.StorageMigration.Proxy.Service.Transfer.TransferRequestHandler.ProcessRequest(FileTransferRequest fileTransferRequest, Guid operationId)
这是一个代码缺陷,如果迁移帐户对 SMB 共享至少没有读取权限,则此问题会显现出来。 此问题在累积更新 4520062 中首次修复。
另一个可能的原因是对源文件服务器的访问权限不足。 使用进程监视器检查“Microsoft.StorageMigration.Proxy.Service.exe”进程时,可能会看到以下结果:
Date: 6/04/2022 15:36:09,1943419
Thread: 1688
Class: File System
Operation: CreateFile
Result: PRIVILEGE_NOT_HELD
Path: \\srv1.contoso.com\F$\\public
Duration: 0.0002573
Desired Access: Read Attributes, Read Control, Synchronize, Access System Security
Disposition: Open
Options: Synchronous IO Non-Alert, Open For Backup
Attributes: N
ShareMode: Read, Write
AllocationSize: n/a
Impersonating: CONTOSO\ServiceAccount
OpenResult: PRIVILEGE_NOT_HELD
正在执行的实际操作需要在源文件服务器上具有“打开进行备份”特权。 验证用于访问源文件服务器的用户帐户是否通过此服务器上的以下本地安全策略或使用组策略对象授予了必要的权限:Security Settings > Local Policies > User Rights Assignment > Back up files and directories
运行清点时出现错误 0x80005000
安装 KB4512534 并尝试运行清点后,清点失败并出现错误:
EXCEPTION FROM HRESULT: 0x80005000
Log Name: Microsoft-Windows-StorageMigrationService/Admin
Source: Microsoft-Windows-StorageMigrationService
Date: 9/9/2019 5:21:42 PM
Event ID: 2503
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: FS02.TailwindTraders.net
Description:
Couldn't inventory the computers.
Job: foo2
ID: 20ac3f75-4945-41d1-9a79-d11dbb57798b
State: Failed
Error: 36934
Error Message: Inventory failed for all devices
Guidance: Check the detailed error and make sure the inventory requirements are met. The job couldn't inventory any of the specified source computers. This could be because the orchestrator computer couldn't reach it over the network, possibly due to a firewall rule or missing permissions.
Log Name: Microsoft-Windows-StorageMigrationService/Admin
Source: Microsoft-Windows-StorageMigrationService
Date: 9/9/2019 5:21:42 PM
Event ID: 2509
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: FS02.TailwindTraders.net
Description:
Couldn't inventory a computer.
Job: foo2
Computer: FS01.TailwindTraders.net
State: Failed
Error: -2147463168
Error Message:
Guidance: Check the detailed error and make sure the inventory requirements are met. The inventory couldn't determine any aspects of the specified source computer. This could be because of missing permissions or privileges on the source or a blocked firewall port.
Log Name: Microsoft-Windows-StorageMigrationService-Proxy/Debug
Source: Microsoft-Windows-StorageMigrationService-Proxy
Date: 2/14/2020 1:18:21 PM
Event ID: 10000
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: 2019-rtm-orc.ned.contoso.com
Description:
02/14/2020-13:18:21.097 [Erro] Failed device discovery stage SystemInfo with error: (0x80005000) Unknown error (0x80005000)
此错误由以用户主体名称 (UPN)(如 meghan@contoso.com)的形式提供迁移凭据时存储迁移服务中的代码缺陷引起。 存储迁移服务 Orchestrator 服务无法正确分析此格式,从而导致在 KB4512534 和 19H1 中为群集迁移支持添加的域查找失败。
若要解决此问题,请提供域\用户格式的凭据,例如“Contoso\Meghan”。
迁移到 Windows Server 故障转移群集时出现错误“ServiceError0x9006”或“代理当前不可用”。
尝试向群集文件服务器传输数据时,会收到如下错误:
Make sure the proxy service is installed and running, and then try again. The proxy isn't currently available.
0x9006
ServiceError0x9006,Microsoft.StorageMigration.Commands.UnregisterSmsProxyCommand
如果文件服务器资源从其原始 Windows Server 2019 群集所有者节点移动到新节点,并且该节点上未安装存储迁移服务代理功能,则会出现此错误。
解决方法是,将目标文件服务器资源移回首次配置传输对时使用的原始所有者群集节点。
备选解决方法:
在群集中的所有节点上安装存储迁移服务代理功能。
在 Orchestrator 计算机上运行以下存储迁移服务 PowerShell 命令:
Register-SMSProxy -ComputerName <destination server> -Force
从群集节点运行清点时出现错误“找不到 Dll”
尝试使用存储迁移服务运行清点并面向 Windows Server 故障转移群集常规用途文件服务器源时,会收到以下错误:
DLL not found
[Error] Failed device discovery stage VolumeInfo with error: (0x80131524) Unable to load DLL 'Microsoft.FailoverClusters.FrameworkSupport.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
若要解决此问题,请在运行存储迁移服务 Orchestrator 的服务器上安装“故障转移群集管理工具”(RSAT-Clustering-Mgmt)。
在 Windows Server 2003 源计算机上运行清点时,出现错误“终结点映射器中没有更多可用的终结点”
尝试使用存储迁移服务 orchestrator 对 Windows Server 2003 源计算机运行清点时,收到以下错误:
There are no more endpoints available from the endpoint mapper
此问题由 KB4537818 更新解决。
卸载累积更新会阻止存储迁移服务启动
卸载 Windows Server 累积更新可能会阻止存储迁移服务启动。 若要解决此问题,可以备份和删除存储迁移服务数据库:
以存储迁移服务业务流程协调程序服务器上的管理员成员身份打开提升的 cmd 提示符,并运行:
TAKEOWN /d y /a /r /f c:\ProgramData\Microsoft\StorageMigrationService MD c:\ProgramData\Microsoft\StorageMigrationService\backup ICACLS c:\ProgramData\Microsoft\StorageMigrationService\* /grant Administrators:(GA) XCOPY c:\ProgramData\Microsoft\StorageMigrationService\* .\backup\* DEL c:\ProgramData\Microsoft\StorageMigrationService\* /q ICACLS c:\ProgramData\Microsoft\StorageMigrationService /GRANT networkservice:F /T /C ICACLS c:\ProgramData\Microsoft\StorageMigrationService /GRANT networkservice:(GA) /T /C
启动存储迁移服务服务,这将创建一个新数据库。
错误“针对 netName 资源的 CLUSCTL_RESOURCE_NETNAME_REPAIR_VCO 失败”和 Windows Server 2008 R2 群集直接转换失败
尝试运行 Windows Server 2008 R2 群集源的直接转换时,直接转换将停滞在“重命名源计算机...”阶段并收到以下错误:
Log Name: Microsoft-Windows-StorageMigrationService-Proxy/Debug
Source: Microsoft-Windows-StorageMigrationService-Proxy
Date: 10/17/2019 6:44:48 PM
Event ID: 10000
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: WIN-RNS0D0PMPJH.contoso.com
Description:
10/17/2019-18:44:48.727 [Erro] Exception error: 0x1. Message: Control code CLUSCTL_RESOURCE_NETNAME_REPAIR_VCO failed against netName resource 2008r2FS., stackTrace: at Microsoft.FailoverClusters.Framework.ClusterUtils.NetnameRepairVCO(SafeClusterResourceHandle netNameResourceHandle, String netName)
at Microsoft.FailoverClusters.Framework.ClusterUtils.RenameFSNetName(SafeClusterHandle ClusterHandle, String clusterName, String FsResourceId, String NetNameResourceId, String newDnsName, CancellationToken ct)
at Microsoft.StorageMigration.Proxy.Cutover.CutoverUtils.RenameFSNetName(NetworkCredential networkCredential, Boolean isLocal, String clusterName, String fsResourceId, String nnResourceId, String newDnsName, CancellationToken ct) [d:\os\src\base\dms\proxy\cutover\cutoverproxy\CutoverUtils.cs::RenameFSNetName::1510]
此问题由旧版 Windows Server 中缺少 API 引起。 目前无法迁移 Windows Server 2008 和 Windows Server 2003 群集。 可以在 Windows Server 2008 R2 群集上顺利执行清点和传输,然后手动执行直接转换,方法是手动更改群集的源文件服务器资源 netname 和 IP 地址并更改目标群集 netname 和 IP 地址以匹配原始源。
使用静态 IP 时,直接转换将挂起在“38% 映射源计算机上的网络接口…”阶段
尝试运行源计算机的直接转换时,将源计算机设置为在一个或多个网络接口上使用新的静态(而不是 DHCP)IP 地址时,直接转换将停滞在“38% 映射源计算机上的网络接口...”阶段并在存储迁移服务事件日志中收到以下错误:
Log Name: Microsoft-Windows-StorageMigrationService-Proxy/Admin
Source: Microsoft-Windows-StorageMigrationService-Proxy
Date: 11/13/2019 3:47:06 PM
Event ID: 20494
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: orc2019-rtm.corp.contoso.com
Description:
Couldn't set the IP address on the network adapter.
Computer: fs12.corp.contoso.com
Adapter: microsoft hyper-v network adapter
IP address: 10.0.0.99
Network mask: 16
Error: 40970
Error Message: Unknown error (0xa00a)
Guidance: Confirm that the Netlogon service on the computer is reachable through RPC and that the credentials provided are correct.
检查源计算机可以发现原始 IP 地址无法更改。
如果在 Windows Admin Center“配置直接转换”屏幕上选择了“使用 DHCP”,则仅当指定了新的静态 IP 地址时,才会发生此问题。
此问题有两种解决方案:
首先可以通过 KB4537818 更新解决此问题。 早期的代码缺陷阻止了所有静态 IP 地址的使用。
如果未在源计算机的网络接口上指定默认网关 IP 地址,则即使使用 KB4537818 更新,也会发生此问题。 若要解决此问题,请使用网络连接小程序 (NCPA.CPL) 或 Set-NetRoute PowerShell cmdlet 在网络接口上设置有效的默认 IP 地址。
重新传输性能低于预期
完成传输后,然后运行相同数据的后续重新传输,即使源服务器上的数据变化不大,传输时间也可能不会有太大的改善。
此问题可通过 kb4580390 解决。 若要进一步优化性能,请查看优化清点和传输性能。
清点性能低于预期
在清点源服务器时,当有许多文件或嵌套文件夹时,文件清点需要很长时间。 即使在快速存储配置下,数百万个文件和文件夹也可能导致清点花费数小时。
此问题可通过 kb4580390 解决。
数据不会传输,在迁移到域控制器或从域控制器迁移时用户重命名
开始从域控制器传输或传输到域控制器后:
不会迁移任何数据,也不会在目标上创建任何共享。
Windows Admin Center 中显示了一个红色错误符号,没有错误消息
一个或多个 AD 用户和域本地组的名称和/或 Windows 2000 之前的登录属性已更改
存储迁移服务 Orchestrator 上显示事件 3509:
Log Name: Microsoft-Windows-StorageMigrationService/Admin Source: Microsoft-Windows-StorageMigrationService Date: 1/10/2020 2:53:48 PM Event ID: 3509 Task Category: None Level: Error Keywords: User: NETWORK SERVICE Computer: orc2019-rtm.corp.contoso.com Description: Couldn't transfer storage for a computer. Job: dctest3 Computer: dc02-2019.corp.contoso.com Destination Computer: dc03-2019.corp.contoso.com State: Failed Error: 53251 Error Message: Local accounts migration failed with error System.Exception: -2147467259 at Microsoft.StorageMigration.Service.DeviceHelper.MigrateSecurity(IDeviceRecord sourceDeviceRecord, IDeviceRecord destinationDeviceRecord, TransferConfiguration config, Guid proxyId, CancellationToken cancelToken)
如果尝试使用存储迁移服务从域控制器迁移或迁移到域控制器,并使用“迁移用户和组”选项重命名或重用帐户,则会出现这种预期行为。 而不是选择“不传输用户和组”。 存储迁移服务不支持 DC 迁移。 由于 DC 没有真正的本地用户和组,因此存储迁移服务会像在两个成员服务器之间迁移时一样对待这些安全主体,并尝试按照指示调整 ACL,从而导致错误以及帐户损坏或复制。
如果运行传输一次或多次:
对 DC 使用以下 AD PowerShell 命令来查找任何修改的用户或组(更改 SearchBase 以匹配域可分辨名称):
Get-ADObject -Filter 'Description -like "*storage migration service renamed*"' -SearchBase 'DC=<domain>,DC=<TLD>' | ft name,distinguishedname
对于以原始名称返回的任何用户,请编辑其“用户登录名(Windows 2000 之前)”,删除存储迁移服务添加的随机字符后缀,以便此用户可以登录。
对于以原始名称返回的任何组,请编辑其“组名称(Windows 2000 之前)”,删除存储迁移服务添加的随机字符后缀。
对于名称现在包含存储迁移服务添加的后缀的任何已禁用用户或组,可以删除这些帐户。 可以确认稍后添加的用户帐户,因为它们将仅包含域用户组,并且将具有与存储迁移服务传输开始时间匹配的创建日期/时间。
如果要将存储迁移服务与域控制器一起使用以进行传输,请确保始终在 Windows Admin Center 的传输设置页上选择“不传输用户和组”。
运行清点时出现错误 53“无法清点所有指定的设备”
尝试运行清点时,会收到:
Failed to inventory all specified devices
Log Name: Microsoft-Windows-StorageMigrationService/Admin
Source: Microsoft-Windows-StorageMigrationService
Date: 1/16/2020 8:31:17 AM
Event ID: 2516
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: ned.corp.contoso.com
Description:
Couldn't inventory files on the specified endpoint.
Job: ned1
Computer: ned.corp.contoso.com
Endpoint: hithere
State: Failed
File Count: 0
File Size in KB: 0
Error: 53
Error Message: Endpoint scan failed
Guidance: Check the detailed error and make sure the inventory requirements are met. This could be because of missing permissions on the source computer.
Log Name: Microsoft-Windows-StorageMigrationService-Proxy/Debug
Source: Microsoft-Windows-StorageMigrationService-Proxy
Date: 1/16/2020 8:31:17 AM
Event ID: 10004
Task Category: None
Level: Critical
Keywords:
User: NETWORK SERVICE
Computer: ned.corp.contoso.com
Description:
01/16/2020-08:31:17.031 [Crit] Consumer Task failed with error:The network path was not found.
. StackTrace= at Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str)
at Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String machineName, RegistryView view)
at Microsoft.StorageMigration.Proxy.Service.Transfer.FileDirUtils.GetEnvironmentPathFolders(String ServerName, Boolean IsServerLocal)
at Microsoft.StorageMigration.Proxy.Service.Discovery.ScanUtils.<ScanSMBEndpoint>d__3.MoveNext()
at Microsoft.StorageMigration.Proxy.EndpointScanOperation.Run()
at Microsoft.StorageMigration.Proxy.Service.Discovery.EndpointScanRequestHandler.ProcessRequest(EndpointScanRequest scanRequest, Guid operationId)
at Microsoft.StorageMigration.Proxy.Service.Discovery.EndpointScanRequestHandler.ProcessRequest(Object request)
at Microsoft.StorageMigration.Proxy.Common.ProducerConsumerManager`3.Consume(CancellationToken token)
01/16/2020-08:31:10.015 [Erro] Endpoint Scan failed. Error: (53) The network path was not found.
Stack trace:
at Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str)
at Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String machineName, RegistryView view)
在此阶段,存储迁移服务业务流程协调程序尝试进行远程注册表读取以确定源计算机配置,但被源服务器拒绝,理由是注册表路径不存在。 这可能是由于:
- 源计算机上没有运行远程注册表服务。
- 防火墙不允许从业务流程协调程序与源服务器进行远程注册表连接。
- 源迁移帐户没有远程注册表权限,无法连接到源计算机。
- 源迁移帐户在源计算机注册表中的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion”或“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer”下没有读取权限
直接转换挂起在“38% 映射源计算机上的网络接口…”阶段
尝试运行源计算机的直接转换时,直接转换停滞在“38% 映射源计算机上的网络接口…”阶段并在存储迁移服务事件日志中收到以下错误:
Log Name: Microsoft-Windows-StorageMigrationService-Proxy/Admin
Source: Microsoft-Windows-StorageMigrationService-Proxy
Date: 1/11/2020 8:51:14 AM
Event ID: 20505
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: nedwardo.contosocom
Description:
Couldn't establish a CIM session with the computer.
Computer: 172.16.10.37
User Name: nedwardo\MsftSmsStorMigratSvc
Error: 40970
Error Message: Unknown error (0xa00a)
Guidance: Confirm that the Netlogon service on the computer is reachable through RPC and that the credentials provided are correct.
此问题由在源计算机上设置以下注册表值的组策略引起:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy = 0”
此设置不是标准组策略的一部分,它是使用 Microsoft 安全合规性工具包配置的加载项:
Windows Server 2012 R2:“计算机配置\管理模板\SCM:传递哈希缓解\在网络登录时将 UAC 限制应用于本地帐户”
Widows Server 2016:“计算机配置\管理模板\MS 安全指南\在网络登录时将 UAC 限制应用于本地帐户”
也可以使用组策略首选项和自定义注册表设置来设置它。 可以使用 GPRESULT 工具确定将此设置应用于源计算机的策略。
存储迁移服务在直接转换过程中临时启用 LocalAccountTokenFilterPolicy,完成后将其删除。 当组策略应用冲突组策略对象 (GPO) 时,它会替代存储迁移服务并阻止直接转换。
若要解决此问题,请使用下列选项之一:
- 临时将源计算机移出应用此冲突 GPO 的 Active Directory OU。
- 临时禁用应用此冲突策略的 GPO。
- 临时创建一个新的 GPO,该 GPO 将此设置设置为“已禁用”,并应用于源服务器的特定 OU,其优先级高于任何其他 GPO。
使用其他域中的凭据时,清点或传输失败
尝试使用存储迁移服务运行清单或传输并以 Windows Server 为目标,同时使用与目标服务器不同的域中的迁移凭据时,会收到以下错误
Exception from HRESULT:0x80131505
The server was unable to process the request due to an internal error
04/28/2020-11:31:01.169 [Error] Failed device discovery stage SystemInfo with error: (0x490) Could not find computer object 'myserver' in Active Directory [d:\os\src\base\dms\proxy\discovery\discoveryproxy\DeviceDiscoveryOperation.cs::TryStage::1042]
进一步检查日志可以发现迁移帐户和被迁移的服务器处于不同的域中:
06/25/2020-10:11:16.543 [Info] Creating new job=NedJob user=**CONTOSO**\ned
[d:\os\src\base\dms\service\StorageMigrationService.IInventory.cs::CreateJob::133]
GetOsVersion(fileserver75.**corp**.contoso.com) [d:\os\src\base\dms\proxy\common\proxycommon\CimSessionHelper.cs::GetOsVersion::66] 06/25/2020-10:20:45.368 [Info] Computer 'fileserver75.corp.contoso.com': OS version
此问题由存储迁移服务中的代码缺陷引起。 若要解决此问题,请使用源计算机和目标计算机所属的同一域中的迁移凭据。 例如,如果源计算机和目标计算机属于“contoso.com”林中的“corp.contoso.com”域,请使用“corp\myaccount”来执行迁移,而不是使用“contoso\myaccount”凭据。
清点失败,出现“找不到元素”
假设出现了下面这种情景:
你有一个源服务器,其 DNS 主机名和 Active Directory 名称超过 15 个 unicode 字符,例如“iamaverylongcomputername”。 根据设计,Windows 不允许将旧版 NetBIOS 名称设置为这么长,并在服务器命名时警告 NetBIOS 名称将被截断为 15 个 unicode 宽字符(示例:“iamaverylongcom”)。 尝试清点此计算机时,将在 Windows Admin Center 和事件日志中收到:
"Element not found"
========================
Log Name: Microsoft-Windows-StorageMigrationService/Admin
Source: Microsoft-Windows-StorageMigrationService
Date: 4/10/2020 10:49:19 AM
Event ID: 2509
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer: WIN-6PJAG3DHPLF.corp.contoso.com
Description:
Couldn't inventory a computer.
Job: longnametest
Computer: iamaverylongcomputername.corp.contoso.com
State: Failed
Error: 1168
Error Message:
Guidance: Check the detailed error and make sure the inventory requirements are met. The inventory couldn't determine any aspects of the specified source computer. This could be because of missing permissions or privileges on the source or a blocked firewall port.
此问题由存储迁移服务中的代码缺陷引起。 目前唯一的解决方法是将计算机重命名为与 NetBIOS 名称相同的名称,然后使用 NETDOM COMPUTERNAME /ADD 添加一个备用计算机名称,其中包含在启动清点之前使用的较长名称。 存储迁移服务支持迁移备用计算机名称。
存储迁移服务清点失败,出现“找不到与参数名称‘IncludeDFSN’匹配的参数”
使用 2009 版 Windows Admin Center 管理 Windows Server 2019 Orchestrator 时,在尝试清点源计算机时收到以下错误:
Remote exception : a parameter cannot be found that matches parameter name 'IncludeDFSN'"
若要解决此问题,请在 Windows Admin Center 中将存储迁移服务扩展更新到至少 1.113.0 版本。 更新应自动显示在源中,并提示安装。
存储迁移服务传输验证返回“调用 COM 组件时返回错误 HRESULT E_FAIL”
安装 Windows Server 2019 11 月累积更新 KB4586793 后,某些传输验证可能会失败,并显示:
Error HRESULT E_FAIL has been returned from a call to a COM component
这并不一定发生在所有源计算机上。 我们正在努力诊断此问题。 解决方法是,在 Windows Admin Center 中安装 1.115 或更高版本的存储迁移服务工具。 更新应自动显示在 Windows Admin Center 源中并提示安装,并允许你忽略此错误。 若要解决它,请执行以下操作:
- 导航到传输阶段的“调整设置”步骤。
- 启用“替代传输验证”。
- 继续传输,无需运行“验证”或运行它并忽略 E_FAIL 错误。
重要
请勿卸载 KB4586793。 此更新升级存储迁移服务数据库,删除更新将需要删除数据库。
传输失败,出现“未能获取文件句柄”,并且有一个或没有共享从特定卷传输
尝试从源计算机传输数据时,你会发现没有用于特定卷传输的文件,即使它们用于其他卷传输。 在 Windows Admin Center 和事件日志中收到以下错误:
"Couldn't transfer storage on any of the endpoints"
========================
SMS Admin log:
06/11/2021 08:44:17 3515 Error Couldn't transfer all of the files in the endpoint on the computer.
Job: test1
Computer: nedsrv1.corp.contoso.com
Destination Computer: nedsrv2.corp.contoso.com
Endpoint: foo
State: Failed
Source File Count: 0
Source File Size in KB: 0
Succeeded File Count: 0
Succeeded File Size in KB: 0
New File Count: 0
New File Size in KB: 0
Failed File Count: 0
Error: -2146233088
Error Message:
Guidance: Check the detailed error and make sure the transfer requirements are met. This could be because the orchestrator computer couldn't reach a source or destination computer, possibly due to a firewall rule, or missing permissions.
========================
如果使用 Get-SMSLogs 命令转储 SMS 调试日志,则还会看到:
SMS Debug log:
06/11/2021-08:44:17.236 [Erro] End file transfer failed with -2146233088 exception:ErrorCode: -2146233088, Transfer failed
at Microsoft.StorageMigration.Service.EndpointHelper.TransferFiles(String source, String destination, String sourceOSVersion, IEndpointRecord endpointRecord, TransferConfiguration config, String sourcePath, String destinationPath, ProxyInformation transferProxyInformation, Int64& skippedSystemObjectCount, CancellationToken cancelToken, SourceType sourceType, Protocol protocol, String sourceClusterSharedVolumesRoot, String targetClusterSharedVolumesRoot, ServerType sourceServerType, ServerType targetServerType, Boolean isTieredAFSEnabled, Int32 volumeMinimumFreeSpace, String targetVolume, String[] mountedVolumes) [d:\os\src\base\dms\service\OperationManager\EndpointHelper.cs::TransferFiles::510]
SMS Proxy Debug log:
14090 06/11/2021-08:44:17.123 [Crit] Failed to create root of the share \\nedsrv1.corp.contoso.com\D$ with error -2147467259 and message Failed to get file handle [d:\os\src\base\dms\proxy\transfer\transferproxy\stages\DirectoryEnumerationStage.cs::ProcessItem::112]
14091 06/11/2021-08:44:17.124 [Erro] Stage DirectoryEnumerationStage cancelled. Received error: Failed to get file handle [d:\os\src\base\dms\proxy\transfer\transferproxy\stages\StageBase.cs::DoStage::50]
14124 06/11/2021-08:44:17.141 [Erro] Failed pipeline execution. System.AggregateException: One or more errors occurred. ---> System.ComponentModel.Win32Exception: Failed to get file handle
14125 at Microsoft.StorageMigration.Proxy.Service.Transfer.DirectoryEnumerationStage.ProcessItem(DirEnumResultWithParent input)
14126 at Microsoft.StorageMigration.Proxy.Service.Transfer.StageBase`3.DoStage(CancellationTokenSource cts)
14127 at System.Threading.Tasks.Task.Execute()
14128 --- End of inner exception stack trace ---
14129 at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken)
14130 at Microsoft.StorageMigration.Proxy.Service.Transfer.Pipeline.Run(CancellationToken token)
14131 at Microsoft.StorageMigration.Proxy.Service.Transfer.TransferOperation.Run()
14132 at Microsoft.StorageMigration.Proxy.Service.Transfer.TransferRequestHandler.ProcessRequest(FileTransferRequest fileTransferRequest, Guid operationId)
14133 ---> (Inner Exception #0) System.ComponentModel.Win32Exception (0x80004005): Failed to get file handle
14134 at Microsoft.StorageMigration.Proxy.Service.Transfer.DirectoryEnumerationStage.ProcessItem(DirEnumResultWithParent input)
14135 at Microsoft.StorageMigration.Proxy.Service.Transfer.StageBase`3.DoStage(CancellationTokenSource cts)
14136 at System.Threading.Tasks.Task.Execute()<---
14137 [d:\os\src\base\dms\proxy\transfer\transferproxy\TransferRequestHandler.cs::ProcessRequest::132]
此问题由使用压缩标志配置整个 NTFS 卷时存储迁移服务代理服务中的限制引起。 若要解决此问题,请从目标卷中删除压缩标志:
- 打开文件资源管理器,右键单击目标驱动器号,然后选择“属性”。
- 取消选中“压缩此驱动器以节省磁盘空间”
- 重新运行传输。
或者,如果源计算机的卷已压缩,并且有可用空间用于保存展开的文件,则可以在源计算机上执行相同的步骤。 复制或移动时始终会解压缩 NTFS 压缩文件,压缩它们不会减少传输时间。
错误要求重置存储迁移服务数据库
在极少数情况下,可能需要重置存储迁移服务数据库。 为此,请按以下步骤操作:
以存储迁移服务业务流程协调程序服务器上的管理员成员身份打开提升的 cmd 提示符,并运行:
NET STOP SMS NET STOP SMSPROXY TAKEOWN /d y /a /r /f c:\ProgramData\Microsoft\StorageMigrationService MD c:\ProgramData\Microsoft\StorageMigrationService\backup ICACLS c:\ProgramData\Microsoft\StorageMigrationService\* /grant Administrators:(GA) XCOPY c:\ProgramData\Microsoft\StorageMigrationService\* .\backup\* DEL c:\ProgramData\Microsoft\StorageMigrationService\* /q ICACLS c:\ProgramData\Microsoft\StorageMigrationService /GRANT networkservice:F /T /C ICACLS c:\ProgramData\Microsoft\StorageMigrationService /GRANT networkservice:(GA) /T /C
确认上述命令中没有错误。 然后启动存储迁移服务服务,这将创建一个新数据库。
NET START SMS NET START SMSPROXY
传输停止并出现错误:无法转换 Unicode 字符
正在运行的传输将停止。 收到事件日志错误:
Log Name: Microsoft-Windows-StorageMigrationService/Admin
Source: Microsoft-Windows-StorageMigrationService
Date:
Event ID: 3515
Task Category: None
Level: Error
Keywords:
User: NETWORK SERVICE
Computer:
Description:
Couldn't transfer all of the files in the endpoint on the computer.
Job:
Computer:
Destination Computer:
Endpoint:
State: Failed
Source File Count: 833617
Source File Size in KB: 45919696
Succeeded File Count: 833438
Succeeded File Size in KB: 45919696
New File Count: 0
New File Size in KB: 0
Failed File Count: 179
Error: -2146233087
Error Message: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:00:59.9970000'.
检查存储迁移服务调试日志可以发现:
03. 07. 2023-23:28:08.647 [Erro] ExceptionMessage : (Unable to translate Unicode character \uDB71 at index 1 to specified code page.), ExceptionToString: (System.Text.EncoderFallbackException: Unable to translate Unicode character \uDB71 at index 1 to specified code page.
此问题由存储迁移服务无法转换的未经处理的 unicode 字符引起。 若要查找具有无效字符的文件名,请编辑以下示例 PowerShell 脚本并在源计算机上运行它,然后检查结果并重命名或删除文件:
# Sample PowerShell script to find files with unhandled unicode characters
$FolderPath = "C:\temp"
$OutputFilePath = "C:\temp\invalid_char_results.txt"
$UnhandledChar = "\uDB71"
Get-ChildItem -path $FolderPath -Recurse | ForEach-Object {
if ($_ -is [System.IO.FileInfo]) {
if ($_.Name -match $UnhandledChar) {
Add-Content $outputFilePath "$($_.FullName)"
}
}
}
在 77% 或 30% 处切换失败
执行切换时,操作在“77% - 将目标计算机添加到域”或“30% - 无法取消加入域”处挂起。此问题仅在以下情况下发生:
不是 AD 中内置管理员组成员的用户在 Active Directory 中创建了源或目标计算机帐户。
或
迁移用户帐户与创建源计算机帐户的用户不同。
2022 年 10 月 11 日及之后发布的 Windows 更新包含用于解决 CVE-2022-38042 的额外保护,这些额外保护导致了此问题。 2023 年 3 月 14 日的每月累积更新进一步更新了这些保护,从而为此问题提供了一个变通方案。 这些保护会有意阻止域加入操作重复使用目标域中的现有计算机帐户,除非:
尝试操作的用户是现有帐户的创建者。
尝试操作的用户是 Active Directory 内置域管理员组、企业管理员组或创建计算机帐户的管理员组的成员。
尝试操作的用户是计算机帐户的“域控制器:允许在域加入期间重复使用计算机帐户。”组策略设置的成员。
若要解决此问题,请使用以下解决方案之一。
解决方案 1 - 使用“允许在域加入期间重复使用计算机帐户”
- 确保所有域控制器、源计算机、目标计算机和短信迁移计算机都已安装 2023 年 3 月 14 日的累积更新并已重新启动。
- 按照 KB5020276 的“采取操作”部分中详述的步骤进行操作。
- 在 Windows Admin Center 中,转到“服务器管理器”>“存储迁移服务”,创建或继续现有作业。
- 在“切换到新服务器”>“调整设置”页上,确保用于 AD 凭据的帐户与步骤 2 中可以重复使用计算机帐户的帐户相同。
解决方案 2 - 使用原始帐户进行迁移
- 在 Windows Admin Center 中,转到“服务器管理器”>“存储迁移服务”,创建或继续现有作业。
- 在“切换到新服务器”>“调整设置”页上,确保用于 AD 凭据的帐户与创建源计算机和目标计算机或将源计算机和目标计算机加入域的帐户相同。
解决方案 3(不建议)- 使用高权限组
- 在 Windows Admin Center 中,转到“服务器管理器”>“存储迁移服务”,创建或继续现有作业。
- 在“切换到新服务器”>“调整设置”页上,确保用于 AD 凭据的帐户是高权限 Active Directory 内置域管理员组、企业管理员组或管理员组之一的成员。
重要
如果已遵循解决方案 1,但取消加入操作失败“33% - 无法取消加入域”,并且出现错误 0x6D1“程序超出范围”,则源计算机上尚未安装 2024 年 3 月 14 日累积更新,或者已安装该更新但计算机未重启。
Windows Server 2008 R2 的直接转换失败
从运行 Windows Server 2008 R2 或更早版本的源计算机执行直接转换时,出现错误“无法对该域中的计算机重命名”。使用存储迁移服务帮助程序 Get-SmsLog 命令时显示错误 0x6D1
和“对象引用未设置为对象的实例”。 以下示例是 PowerShell Get-SmsLog
命令的日志文件输出。
Line 360: 04/02/2023-14:06:02.877 [Info] UnjoinDomain(isLocal=False, server='2008R2.corp.contoso.com') [d:\os\src\base\dms\proxy\cutover\cutoverproxy\CutoverUtils.cs::UnjoinDomain::2151]
Line 361: 04/02/2023-14:06:02.948 [Erro] Attempt #1 failed to unjoin machine '2008R2.corp.contoso' from the domain with credential 'corp\ned'. Error 0x6D1. [d:\os\src\base\dms\proxy\cutover\cutoverproxy\CutoverUtils.cs::UnjoinDomain::2184]
Line 362: 04/02/2023-14:06:02.954 [Erro] Fatal exception during cutover stage processing. Source: 2008R2.corp.contoso.com, CutoverStage: UnjoinSource, ErrorCode: 0x80004003, Message: Object reference not set to an instance of an object. [d:\os\src\base\dms\proxy\cutover\cutoverproxy\CutoverOperation.cs::Run::1116]
KB5020276 中为防止 CVE-2022-38042 而引入的更改会导致此错误。
若要解决此问题,请使用以下解决方案之一。
解决方案 1(使用具有有效 ESU 的 Windows Server 2008 R2)
如果源计算机运行具有有效扩展支持更新的 Windows Server 2008 R2,则首先安装最新的累积更新。 成功安装累积更新后,请按照在 77% 或 30% 时直接转换失败一文中详述的步骤解决问题。
解决方案 2(使用没有有效 ESU 的 Windows Server 2008 R2、Windows Server 2008 或 Windows Server 2003)
如果源计算机运行没有 ESU 的 Windows Server 2008 R2、Windows Server 2008 或 Windows Server 2003,则需要按照直接转换在存储迁移服务中的工作原理中所述的步骤执行手动直接转换,但需要进行以下更改。
- 跳过步骤 3 和 4
- 对于步骤 5,必须登录到计算机,并使用
SYSDM.CPL
、NETDOM.exe
或Remove-Compuer
PowerShell 命令手动将其从域中移除。 在 KB5020276 之后,无法从域中远程移除计算机。
传输验证警告“找不到目标代理”
如果在开始传输之前尚未在目标服务器上安装 SMS 代理服务,Windows Admin Center 会自动安装它。 但在某些情况下,它将无法注册,并显示验证错误“找不到目标代理”。
要解决此问题,请确保在目标服务器上安装了 SMS 代理服务功能,然后在 Orchestrator 服务器上运行以下 PowerShell 命令:
Register-SMSProxy -ComputerName <destination server FQDN> -Force
现在通过了验证。
Windows Server 2008 R2 故障转移群集源上缺少磁盘
清点 Windows Server 2008 R2 故障转移群集源后,看不到所有群集磁盘。 这是由于 Windows server 2008 R2 中的默认文件服务器角色总是选择一个磁盘作为依赖项,而不会选择分配给文件服务器角色的其他磁盘。
若要解决此问题,请确保分配给文件角色的所有磁盘都作为依赖项添加到文件服务器角色中。
- 打开故障转移群集管理器 (cluadmin.msc)。
- 右键单击群集磁盘,然后单击“属性”
- 在“依赖项”选项卡上,将磁盘的 AND 行添加到文件服务器角色。
- 对所有其他群集磁盘重复此操作。
- 关闭管理单元并再次清点源。 现在,所有磁盘都应显示并可用于传输。
Windows Server 2022 的直接转换失败,计算机重命名时出现错误 5
启动直接转换过程后,Windows Server 2022 源计算机的重命名无法以 41% 的速度完成。 如果迁移到 Windows Server 2022 目标计算机,重命名将无法以 75% 的速度完成。 检查 SMS 调试日志显示 error 5: access denied
。
安装 2024 年 3 月 12 日 - KB5035857 适用于 Windows Server 2022 的累积更新后,出现此问题。 目前正在研究针对该回归的解决方案。
若要解决此问题,请使用手动直接转换中的步骤。