秘密武器:使用 SysRq 键安全重启挂起的 Linux

简介:

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

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

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

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

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

 
  1. # sysctl kernel.sysrq
  2. kernel.sysrq = 0
  3. # sysctl -w kernel.sysrq=1
  4. kernel.sysrq = 1
  5. # vi /etc/sysctl.conf
  6. ...
  7. # Controls the System Request debugging functionality of the kernel
  8. kernel.sysrq = 1
  9. ...

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

原文处,Terry 评论:

即使是 Magic Sysrq 对不 non-interruptible 的 system hang 也没办法。不过 Sysrq 在关键时刻能帮上大忙,避免数据不一致和丢失,甚至文件系统损坏。

一般是这么记的 => BUSIER 顺序倒过来,意味着接下去会越来越忙?

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

 原文发布时间为:2013-10-04

本文来自云栖社区合作伙伴“Linux中国”

相关文章
|
1月前
|
关系型数据库 MySQL Linux
Linux启动停止重启Mysql数据库针对各个版本的数据库
Linux启动停止重启Mysql数据库针对各个版本的数据库
11 0
|
4月前
|
算法 Linux 数据安全/隐私保护
【Linux】Linux 系统中的注销、重启和关机命令详解
【Linux】Linux 系统中的注销、重启和关机命令详解
180 0
|
4月前
|
Linux
百度搜索:蓝易云【Linux重启网卡报错Determining if ip address怎么解决?】
请注意,在执行涉及网络配置的操作时要小心,确保避免重要网络设置的错误。建议在修改网络配置之前备份相关文件,以便出现问题时可以还原配置。如果不确定如何操作,最好寻求网络专家的帮助。
45 0
|
2月前
|
安全 Shell Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 重启 reboot命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 重启 reboot命令 使用指南
44 0
|
14天前
|
监控 安全 Linux
【专栏】Linux SSH 的安全对于远程管理至关重要,这几个小妙招安排上!
【4月更文挑战第28天】在数字化时代,Linux SSH 的安全对于远程管理至关重要。增强 SSH 安全包括:使用强密码,调整 SSH 配置文件,尤其是端口号和认证方式;采用密钥认证代替密码;限制登录用户,禁止密码登录;使用防火墙限制访问;定期更新系统和软件。此外,通过日志监控、入侵检测系统及及时应对攻击来提升安全监控。保持对安全知识的学习和更新,结合最佳实践,是保障 SSH 安全的关键。记得安全是个持续过程,时刻保持警惕!
|
3月前
|
安全 网络协议 Linux
Linux系统管理、服务器设置、安全、云数据中心
Linux系统管理、服务器设置、安全、云数据中心
|
14天前
|
安全 Linux 网络安全
【专栏】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患,教你一招找出所有开放的端口,然后直接干掉!
【4月更文挑战第28天】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患。要找出开放端口,可使用 `netstat -anp`、`lsof -i` 或 `nmap` 命令。关闭端口可通过停止相关服务、修改防火墙规则或禁用网络接口。注意不要随意关闭重要端口,操作前备份数据。保持端口安全对系统安全至关重要。
|
14天前
|
监控 安全 Linux
【专栏】在网络安全至关重要的今天,Linux系统中的SCP和SFTP成为安全文件传输的首选工具
【4月更文挑战第28天】在网络安全至关重要的今天,Linux系统中的SCP和SFTP成为安全文件传输的首选工具。SCP,一个基于SSH的轻量级工具,允许用户方便地在本地和远程主机间复制文件。要使用SCP,首先确保安装了OpenSSH,然后通过基本命令进行文件传输,如`scp source destination`。SFTP则提供了一个类似FTP的界面,通过`sftp`命令启动客户端,进行直观的文件操作。两者均基于SSH协议,保证数据加密。为确保安全,建议使用强密码、密钥对、禁用根用户直接登录,并配置防火墙及监控日志。了解和掌握这些工具能提升工作效率并保护数据安全。
|
3月前
|
Linux 数据安全/隐私保护
Linux关机与重启命令
Linux关机与重启命令
34 0
|
4月前
|
Ubuntu 安全 Linux
Linux/Ubuntu 的日常升级和安全更新,如何操作?
Linux/Ubuntu 的日常升级和安全更新,如何操作?
82 0
Linux/Ubuntu 的日常升级和安全更新,如何操作?