Linux 伺服器運行一段時間後,最讓系統管理員頭痛的莫過於檔案系統錯誤。其中 EXT3 檔案系統的 Superblock(超級區塊)損壞,更是常見且棘手的問題。若直接執行 fsck 強制修復,極易導致資料永久遺失。本文將詳細說明正確、安全的修復流程,助你化險為夷。
Superblock 記錄著檔案系統的關鍵元資料,如 inode 表位置、磁碟區塊大小、掛載狀態等。主 Superblock 損壞時,直接執行 fsck -y 可能會誤判元資料,進而覆寫正確資料,造成不可逆的資料損壞。正確做法是利用備份 Superblock 進行修復。
執行以下指令查看 Block size:
# tune2fs -l /dev/hdc1 | grep "Block size"
常見值為 1K、2K 或 4K。大多數預設環境為 1K(即 1024 bytes)。
修復過程具風險,務必先完整備份。若有閒置磁碟,使用 dd 進行逐位元複製:
# dd if=/dev/hdc1 of=/backup/hdc1.img bs=4M status=progress
確保備份檔案完整性後,再進行後續操作。
EXT2/EXT3 格式化時會自動在特定位置建立備份 Superblock。位置取決於 Block size:
也可用 mke2fs -n 模擬建立過程,列出所有備份位置:
# mke2fs -n /dev/hdc1
注意:必須搭配正確的 -b 參數指定 block size,輸出才準確。
以 1K block size 為例,依序嘗試備份 Superblock:
# fsck.ext3 -b 8193 /dev/hdc1
若 8193 亦損壞,依序嘗試:
# fsck.ext3 -b 24577 /dev/hdc1
# fsck.ext3 -b 40961 /dev/hdc1
修復成功後,系統會自動將主 Superblock 更新為正確狀態。建議修復完成後再執行一次不帶 -b 參數的 fsck,確保一致性。
mke2fs -n 實測為準。掌握正確流程,Superblock 損壞不再是災難。平時養成定期備份、監控 SMART 資訊的習慣,才是資料安全的根本保障。