Linux 伺服器斷電 - 資料完整性與作業系統損壞檢查

Linux 伺服器斷電 - 資料完整性與作業系統損壞檢查

在發生意外斷電(或 VM 主機故障)時,檢查潛在 Linux 作業系統損壞/從中復原的最佳實務步驟是什麼?

當然,它「取決於」安裝和設置,但我正在尋找對大多數 Linux 作業系統(Debian、Ubuntu、Mint 等)和檔案系統(XFS、ZFS、EXT4、vfat)執行的常見操作/檢查。

這並不是為了防止非正常關閉 - 而是為了在發生此類情況時進行處理並嘗試確保最佳情況下的恢復。

我知道作業系統傾向於檢測檔案系統何時未卸載(就像在正常關閉期間一樣),因此在啟動時自動執行檢查,但這些檢查是什麼以及如何手動執行它們?

例如,e2fsck -f就是這樣一種工具,但對於新手來說,什麼時候可以/應該使用它,什麼時候不可以(或它不起作用)?

例如,在 Windows 中您可以執行下列操作:

  • chkdsk使用舊的或現代的等效項repair-volume(在 PowerShell 中)檢查 NTFS 檔案系統是否損壞
  • 使用以下命令驗證作業系統核心系統檔案的完整性sfc.exe /scannow

應用程式特定的驗證/復原步驟MySQL databaseLDAP directories不屬於此問題的範圍 - 除非它是非常常見的事情,例如某些作業系統資料庫aptsnap資料庫。

你做什麼工作?

答案1

現代檔案系統執行元資料日誌,這意味著簡單的斷電不會對檔案系統完整性本身造成任何問題:已完成但未提交的交易將被重播,而部分事務將被回滾。

然而,傳輸中或快取的數據遺失或部分寫入 - 畢竟,如果應用程式將一些資料處理到作業系統進行非同步寫入(即:正常寫入),但在作業系統將它們寫入永久儲存之前機器斷電,數據將要迷路了。

正是由於這個原因,關鍵應用程式作為資料庫(除了MyISAM)實現了自己的日誌記錄並使用同步語義寫入資料 - 使用fsync()等。

簡而言之:意外關閉通常不需要任何檔案系統修復(除了自動日誌重播之外)。應用程式檢查取決於應用程式本身,大多數資料庫不會受到突然斷電的影響 - 除非使用MyISAM,這需要跑步mysqlcheck

相關內容