本文主要介绍迁移在SMC迁移时,迁移任务出错提示“Client.Snapshot.CreateFailed”的原因及解决方案。
问题描述
在SMC迁移时,迁移任务出错提示“Client.Snapshot.CreateFailed”。
问题原因
块复制迁移过程中,SMC客户端会在源系统内部自动创建磁盘分区快照设备,用于数据同步。源系统SMC客户端进行磁盘分区创建快照时出错,可能原因如下:
- Windows: - 磁盘分区空间不足。 
- 系统安装有第三方安全杀毒软件。 
- 磁盘分区卷影副本配置的存储使用限制大小不足。 
- 系统卷影副本快照服务Volume Shadow Copy服务异常。 
 
- Linux - 磁盘分区空间不足。 
- 系统可用内存不足300 MB。 
- 磁盘分区快照设备异常。 
 
解决方案
不同操作系统对应的解决方案如下:
- Windows - 打开事件查看器检查是否有vss、volsnap、disk相关来源异常,并根据报错进行处理。 - 如果报错提示磁盘空间不足,或VSS卷影副本快照无法增长。 - 检查磁盘分区剩余空间是否不足,建议预留10% ~ 15%空间。 
- 磁盘卷影副本配置的存储使用限制大小是否不足,建议适当调大使用限制或选择没有限制后再试。  
 
- 如果报错拒绝访问,错误码0x80070005,需检查系统内是否安装有第三方安全杀毒软件,建议放开磁盘备份权限或者禁用该类软件后再试。 
- 检查系统卷影副本快照服务Volume Shadow Copy服务是否正常。 
 
- Linux - 检查 - /dev/smcss9设备是否存在,执行- dmesg | grep smcss检查是否有报错。- 检查系统剩余内存是否满足300 MB。 
- 检查磁盘分区剩余空间是否不足,建议预留10%~15%空间。 
- 在SMC客户端安装目录下执行 - ./Check/client_check --ssclear smcss,清理残留快照设备后再试。查找SMC客户端安装目录的具体操作,请参见查看SMC客户端。
 
- (条件必选)若错误信息中存在“io scheduler not support”,按如下步骤更换磁盘使用的IO调度器。 - 确定出问题的磁盘序号。 - 找到错误信息中的msg部分,如: - msg=CreateSnapshot 0-x Failed,- 0-x表示第1块磁盘,- 1-x表示第2块磁盘,- 2-x表示第3块磁盘,以此类推。
- 根据步骤i确定的序号来查询磁盘设备名称。 - 执行 - lsblk命令,确定对应序号的磁盘设备名称(序号从0开始)。 
- 根据步骤ii确定的磁盘名称查看磁盘使用的IO调度器。 - 以磁盘vdb为例,执行 - cat /sys/block/vdb/queue/scheduler命令,查看此磁盘使用的IO调度器。- 回显信息如下图, - []中的是vdb磁盘当前所使用的IO调度器,即bfq。说明- 回显信息列出了所有IO调度器,总共有四个:mq-deadline、kyber、bfq、none。  
- 更换当前调度器(bfq)为其他调度器。 - 将调度器更换为除了bfq以外的其它调度器。以更换为mq-deadline为例: - 执行 - sudo echo mq-deadline > /sys/block/vdb/queue/scheduler。- 执行 - cat /sys/block/vdb/queue/scheduler命令,查看此磁盘当前使用的IO调度器,可看到IO调度器由bfq更换为了mq-deadline。 
 
 
问题排查解决后,您可运行SMC客户端进行验证。