技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 使用 SysRq 键安全重启挂起的 Linux

使用 SysRq 键安全重启挂起的 Linux

浏览:1068次  出处信息

   最近有台 NFS 服务器挂机,可以 ping 通,但不能 ssh 登陆,也不能通过本地终端登陆,只能重启了。我们一般处理文件服务器这种类型的重启都格外小心,不到迫不得已不会直接硬重启。Linux 运行过程中(为了提高性能)会把大量的数据暂时放在内存缓存中,而不是实时同步写入到磁盘,Linux 根据情况只有在需要(触发某条件)的时候才写入磁盘,所以这个时候挂机,数据还留在内存,没有办法及时写到磁盘,强制断电重启会造成数据不一致、部分数据丢失、文件系统损坏等。

   为了在这样的情况下实现安全重启,我们可以利用 SysRq,当然有个条件是,系统虽然罢工停止了对大部分服务的响应,但仍然能处理键盘的中断请求。SysRq (System request) 常被称为 Magic SysRq key,在 Linux 下它被定义为一系列按键组合,之所以说它 magic,是因为它常能在系统挂起、多数服务都无法响应的时候做点事(预定义的操作),而且能在磁盘数据安全的情况下完成重启,除此之外还能捕获一些有用的系统运行信息。

   首先确认当前使用的 Linux 内核支持 SysRq:

# grep "CONFIG_MAGIC_SYSRQ" /boot/config-`uname -r`
CONFIG_MAGIC_SYSRQ=y

   如果系统默认关闭了 kernel.sysrq 的话,需要打开。为了保证每次系统重启内核参数都生效,建议把配置写到 sysctl.conf 文件里:

# sysctl kernel.sysrq
kernel.sysrq = 0

# sysctl -w kernel.sysrq=1
kernel.sysrq = 1

# vi /etc/sysctl.conf
...
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 1
...

   SysRq 配置好后就可以开始用了。SysRq 安全重启的推荐按键组合是 Alt + SysRq + R-E-I-S-U-B,先按下 Alt 键和 SysRq 键,然后依次按下 R E I S U B 键(不区分大小写)。这个 R E I S U B 序列组合的意思是:

   R - 把键盘设置为 ASCII 模式

   E - 向除 init 外所有进程发送 SIGTERM 信号

   I - 向除 init 外所有进程发送 SIGKILL 信号

   S - 磁盘缓冲区同步

   U - 重新挂载为只读模式

   B - 重启系统

   需要注意的是这些按键之间有顺序,而且按键之间有时间间隔(因为要等待前一个操作的完成),推荐的时间间隔是 R - 1 秒 - E - 30 秒 - I - 10 秒 - S - 5 秒 - U - 5 秒 - B.

   我们通常只在意数据是否安全的同步到了磁盘,所以我们一般只用 S-B 组合,按下 Alt + SysRq + S 后等待 Emergency Sync complete 提示,同步完成确认后用 Alt + SysRq + B 立刻重启。

建议继续学习:

  1. gen_tcp发送进程被挂起起因分析及对策    (阅读:36961)
  2. 查询Linux系统最后重启时间的三个方法    (阅读:3462)
  3. 解决 ubuntu 的 /etc/hosts 重启就被还原    (阅读:3286)
  4. 后台脚本挂起的几种原因    (阅读:2510)
  5. 关于请求被挂起页面加载缓慢问题的追查    (阅读:2582)
  6. MySql重启命令与数据库安装目录    (阅读:2434)
  7. CentOS关机与重启命令小结    (阅读:1272)
  8. OpenBSD 将在每次重启后都使用和之前不同的内核    (阅读:984)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1