使用方法
命令用法
nvwa help
打印帮助信息,打印的信息如下:
NAME: nvwa - a tool used for openEuler kernel update. USAGE: nvwa [global options] command [command options] [arguments...] VERSION: 0.1 COMMANDS: update specify kernel version for nvwa to update init init nvwa running environment help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --help, -h show help (default: false) --version, -v print the version (default: false)
需要注意的是,由于当前参数解析的限制,暂不支持nvwa --help, nvwa --version之类的GLOBAL OPTIONS用法,后续版本会修复该问题。 如需查看系统已经安装的nvwa版本,可通过
rpm -qa nvwa
查看。nvwa update <kernel version>
热升级到内核某一版本,nvwa会去/boot目录下寻找内核镜像和ramfs,kernel的命名格式需为vmlinuz-<kernel version>, rootfs命名格式需为initramfs-<kernel version>.img
需要注意的是,升级过程有可能会失败,如果失败,部分被dump的进程或者服务,将停止运行。
当前版本的<kernel version>可以通过
uname -r
获得,参照当前<kernel version>的格式,可以在/boot目录下找到当前系统已有的所有版本。nvwa init
清除nvwa产生的现场信息以及对systemd的配置修改,用于nvwa执行前或者执行失败后,对现场进行清理。
使用限制
对于需要通过nvwa保存的service,其配置中需要设置标准输出(StandardOutput)和错误输出(StandardError),以redis为例:
[Unit] Description=Redis persistent key-value database After=network.target [Service] ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd Type=notify User=redis Group=redis RuntimeDirectory=redis RuntimeDirectoryMode=0755 StandardOutput=file:/root/log1.log StandardError=file:/root/log2.log [Install] WantedBy=multi-user.target
使用加速特性需要修改cmdline以及分配合适的内存,参见下方加速特性说明及使用。
运行过程中需要关闭SELINUX
理论上,仅需要在执行nvwa update之后和系统重启nvwa恢复现场这段时间前需要关闭。稳妥起见,建议全程关闭SELINUX。
加速特性说明及使用
cpu park(加速内核重启过程)
cpu park,是在使用kexec过程,使cpu进入一种忙等的状态,更快的响应主核发送的中断请求,减少状态的变化。
使用cpu park,需要在cmdline中加入"cpuparkmem=0x200000000",其中0x200000000是一段未被其他程序使用的内存起始地址,cpuparkmem将占用从该地址开始,size为1M左右的内存空间。
需要注意的是,在内存允许的情况下,此处的地址选择,建议范围在4G(0x100000000)之后,前4G通常被系统各组件预留,容易冲突。
quick kexec(加速内核启动过程)
quick kexec,是对kexec加载镜像过程中的一种加速。
使用quick kexec,需要在配置文件中使能相关选项,更多信息参考<<安装与部署-配置介绍>>。
pin_memory(加速现场保存恢复过程)
pin memory,是对criu进行现场保存恢复过程中的一种加速。
使用pin memory,需要在配置文件中使能相关选项,更多信息参考<<安装与部署-配置介绍>>。
产生的日志信息
内核热升级工具产生的日志分为两部分:
运行过程产生的日志:
通过
service nvwa status
查看。保留现场过程中产生的日志:
日志位于criu_dir指定的路径对应命名的进程/服务文件夹中。