解決 Ubuntu 掛載 JFS 檔案系統失敗與修復

 在 Linux 系統中掛載較少見的 JFS(Journaled File System)檔案系統時,有時會遇到令人頭痛的掛載錯誤。本文將透過實際案例,帶你一步步從安裝工具、排查錯誤,到成功修復並掛載 JFS 磁碟。


正常掛載 JFS 的基本步驟

在 Ubuntu 中,掛載 JFS 檔案系統的基本流程如下:

  1. 安裝 JFS 工具包:
    sudo apt update
    sudo apt install jfsutils
  2. 確認磁碟代號:
    使用 lsblk 尋找你的目標分割區(例如 /dev/sdg1)。
  3. 建立掛載點並掛載:
    sudo mkdir /mnt/pvr
    sudo mount -t jfs /dev/sdg1 /mnt/pvr

遇到 Mount Error 怎麼辦?

如果你在執行掛載時,系統噴出以下錯誤訊息:

mount: /mnt/pvr: wrong fs type, bad option, bad superblock on /dev/sdg1...

這代表該分割區可能存在檔案系統Dirty日誌損壞Superblock讀取失敗的問題。此時可以透過以下兩大步驟來救回。


第一步:檢查檔案系統狀態(唯讀模式)

首先,我們使用 jfs_fsck -n 來對磁碟進行唯讀式的安全檢查:

sudo jfs_fsck -n /dev/sdg1

檢查結果分析: 在案例中,檢測發現了 Errors detected in the Fileset File/Directory Allocation Map,且文末明確指出:

Filesystem is dirty. Filesystem is dirty but is marked clean. In its present state, the results of accessing /dev/sdg1... are undefined.

這證實了檔案系統確實處於Dirty狀態,必須先修復才能順利掛載。


第二步:強制修復與重建日誌

既然知道了問題所在,我們可以使用 fsck.jfs(或 jfs_fsck -a)來進行自動修復。請確保在執行前磁碟是未掛載狀態

sudo fsck.jfs /dev/sdg1

修復日誌解讀: 修復過程中可能會看到 logredo failed (rc=-274),這代表原本的日誌重放失敗,但不用擔心,fsck 會繼續跑完 1 到 9 的完整階段(Phases),包括重建分配圖(Rebuild Allocation Maps)以及重新格式化檔案系統日誌(Reformat File System Log)

當看到最末行顯示 Filesystem is clean.,就代表磁碟已經重獲新生!


最終確認與成功掛載

修復完成後,我們可以先用 blkid 確認磁碟的 UUID 與檔案系統型態(TYPE="jfs")是否正常:

sudo blkid /dev/sdg1

確認無誤後,即可使用讀寫模式(rw)正式掛載磁碟:

sudo mount -t jfs -o rw /dev/sdg1 /mnt/pvr

這時候進入 /mnt/pvr,就能正常存取裡面的資料了。若後續需要卸載,再執行
sudo umount /dev/sdg1 即可。


JFS 掛載失敗時不要慌,通常是因為不正常關機導致的日誌與分配圖損壞。只要善用 jfsutils 工具箱中的 jfs_fsck 強制重建結構,就能完美修復啦!


留言