維護 Linux 伺服器時,最讓人心驚膽戰的莫過於檔案系統突然轉為 Read-only file system。此時應用無法寫入日誌、資料庫拒絕新增交易、甚至系統無法重啟。本文將深入剖析兩大主流成因,提供標準化修復流程,並強調資料備份的紅線原則,助你在危機中穩住陣腳。

# 1. 先嘗試重新掛載為讀寫(若根分區則需特殊處理)
mount -o remount,rw /mount/point
# 2. 若 /etc/fstab 無法寫入,先註解對應行
sed -i '/\/data/s/^/#/' /etc/fstab
# 或手動編輯 vi /etc/fstab
# 針對 ext4
fsck -y /dev/sda1
# 針對 XFS(需卸載後執行)
xfs_repair /dev/sda1
# 針對 Btrfs
btrfs check --repair /dev/sda1
關鍵提醒:
fsck執行前務必確認該分區已卸載,否則極高機率造成更嚴重的元資料損壞。根分區請進入單用戶模式或使用 LiveCD 執行。
# 重新掛載驗證
mount -a
# 檢查應用寫入功能
echo test > /mount/point/test_write && rm /mount/point/test_write
| 風險等級 | 操作建議 |
|---|---|
| 🔴 極高 | 未備份直接執行 fsck -y,可能導致檔案遺失或目錄結構破壞 |
| 🟡 中 | 僅備份關鍵資料庫/配置檔,忽略應用日誌與暫存檔 |
| 🟢 低 | 完整備份(含中繼資料)後再修復,可隨時回滾 |
# 建議:使用 dd 建立分區級映像檔(需足夠備份空間)
dd if=/dev/sda1 of=/backup/sda1_$(date +%F).img bs=4M status=progress
# 或檔案級備份關鍵目錄
tar -czf /backup/critical_$(date +%F).tar.gz /etc /var/lib/mysql /home
smartctl -a /dev/sdX 監控 Reallocated_Sector_Ct/etc/default/rcS 設定 FSCKFIX=yesnode_filesystem_readonly 指標fsck -yumount 或進入救援模式/etc/fstab 未驗證語法就重啟mount -a 測試無誤才重啟fsck 指令xfs_repair
檔案系統唯讀是保護機制而非故障本身。冷靜執行「備份→隔離→修復→驗證」四步曲,配合平日完善的備份演練與監控體系,才能將風險降至最低。記住:沒有備份的修復,都是在賭運氣。