CRM系統|加入收藏|小博客
18560384436
>> 返回 您當前所在位置:首頁 >> 支持中心 >> 詳細內容

使用 SysRq 鍵安全重啟掛起的 Linux

更新時間:2015-02-28 08:53:42點擊次數:4042次字號:T|T
最近有臺 NFS 服務器掛機,可以 ping 通,但不能 ssh 登陸,也不能通過本地終端登陸,只能重啟了。我們一般處理文件服務器這種類型的重啟都格外小心,不到迫不得已不會直接硬重啟。Linux 運行過程中(為了提高性能)會把大量的數據暫時放在內存緩存中,而不是實時同步寫入到磁盤,Linux 根據情況只有在需要(觸發某條件)的時候才寫入磁盤,所以這個時候掛機,數據還留在內存,沒有辦法及時寫到磁盤,強制斷電重啟會造成數據不...

最近有臺 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 立刻重啟。

? 湖北30选5最近100期走势图