常见问题与解决方法
执行nvwa update后未升级
原因:保留现场或者内核替换过程中出现错误。
解决方法:查看日志,找出错误原因。
开启加速特性后,nvwa执行命令失败
原因:nvwa提供了诸多加速特性,包括quick kexec,pin memory,cpu park等等。这些特性都涉及到cmdline的配置和内存的分配,在选取内存时,通过cat /proc/iomem确保选取的内存没有与其他程序冲突。必要时,通过dmesg查看使能特性后是否存在错误日志。
热升级后,相关现场未被恢复
原因:首先检查nvwa服务是否运行,运行情况下,可能存在两种情况:一种是服务恢复失败,一种是进程恢复失败。
解决方法:通过service nvwa status查看nvwa的日志,如果是服务启动失败,首先确认是否使能了该服务,再通过systemd查看对应服务的日志。进一步的日志,去criu_dir指定的路径对应命名的进程/服务文件夹中。其中dump.log为保存现场产生的日志,restore.log为恢复现场产生的。
恢复失败,日志显示Can't fork for 948: File exists
原因:内核热升级工具在恢复程序过程中,发现程序的pid已经被占用。
解决方法:当前内核没有提供保留pid的机制,相关策略正在开发,预计会在将来的内核版本中解决这一限制,当前仅能手动重启相关进程。
使用nvwa去保存和恢复简单程序(hello world),显示失败或者程序未在执行
原因: criu使用存在诸多限制。
解决办法:查看nvwa的日志,如果显示是criu相关的错误,去相应的目录下检查dump.log或者restore.log,criu相关使用限制,可以参考criu社区wiki。