秘密武器:使用 SysRq 鍵安全重啟掛起的 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
。
原文處,Terry 評論:
即使是 Magic Sysrq 對不 non-interruptible 的 system hang 也沒辦法。不過 Sysrq 在關鍵時刻能幫上大忙,避免資料不一致和丟失,甚至檔案系統損壞。
一般是這麼記的 => BUSIER 順序倒過來,意味著接下去會越來越忙?
我們通常只在意資料是否安全的同步到了磁碟,所以我們一般只用 S-B 組合,按下 Alt + SysRq + S 後等待 Emergency Sync complete 提示,同步完成確認後用 Alt + SysRq + B 立刻重啟。
via: http://www.vpsee.com/2013/10/safe-reboot-linux-with-the-magic-sysrq-key/
相關文章
- 線上重定義引起的資料庫掛起資料庫
- 大疆重視起無人機資料安全,啟用離線飛行功能無人機
- 重啟鍵看不到的程式 (轉)
- 解決"安裝檔案有掛起的檔案,請重啟電腦"的通用解決方法
- linux重啟mysqlLinuxMySql
- HDFS免重啟掛載新磁碟
- linux下重啟oracle的方法LinuxOracle
- linux重啟zabbix agentLinux
- Linux安全問題的google重視LinuxGo
- Mac重啟Finder的使用技巧!Mac
- Linux 系統程序掛起與恢復Linux
- Linux的關機與重啟命令Linux
- 摘自_老楊大師_線上重定義引起的資料庫掛起資料庫
- centos 重啟掛載錯誤 failed to mount /backupCentOSAI
- Mac Linux 重啟網路卡MacLinux
- Linux重啟命令介紹Linux
- Linux 4.0 不再需要重啟Linux
- Linux重啟和關機Linux
- MySQL 叢集的安全關閉和重啟方法MySql
- Linux基礎命令---忽略掛起訊號nohupLinux
- /proc/sysrq-trigger檔案
- 遠端重啟命令使用
- 如何清理macOS右鍵開啟方式中的重複項Mac
- 系統重啟後卷不能自動掛載
- 如何在linux使用crontab命令定時重啟伺服器Linux伺服器
- 命令定時重啟伺服器如何在linux使用crontab伺服器Linux
- linux php-fpm 如何重啟LinuxPHP
- Linux關機和重啟命令Linux
- rocky linux 重啟網路卡命令Linux
- Linux常用軟體啟動、停止、重啟命令Linux
- Linux關機與重啟的命令詳解Linux
- Linux中執行緒的掛起與恢復(程式暫停)Linux執行緒
- win10怎麼重啟電腦_win10電腦按什麼鍵重啟Win10
- 如何判斷LInux程式完全啟動起來的呢Linux
- 使用AD+處理崩潰和掛起 (轉)
- 不需要重啟就能掛載磁碟的方法,還不快來Get
- Linux關機重啟命令詳解Linux
- Linux 關機重啟流程分析(轉)Linux