[Karte] ファイルシステムチェックのエラー

概要

  • 作成日 : 2011.06.28
  • リファレンス機 joho09-itpass にて, 停電対策で PC と UPS の電源を切り, 後日起動した際, 症状に挙げたようなメッセージが出力されたため, 手動で fsck を行った

症状

  • 停電対策後の起動時に, 以下の画像の様なメッセージが出力された.
  • 出力メッセージ

原因

  • 外付け HDD の電源を落とし忘れたことではないかと思われる

復旧作業

症状と原因を踏まえての作業方針

エラーメッセージに従い, /var/log/fsck/checkfs を読む.

$ sudo cat /var/log/fsck/checkfs

以下は checkfs の内容例

Log of fsck -C -R -A -a
Mon Jun 20 17:00:47 2011

fsck 1.41.3 (12-Oct-2008)
/dev/sdc1 contains a file system with errors, check forced. 
/dev/sdc1: Inode 140420225 has illegal block(s).

/dev/sdc1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
        (i.e., without -a or -p options)
fsck died with exit status 4

Mon Jun 20 18:39:44 2011
-------------

上記のの "/dev/sdc1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e., without -a or -p options) " より, ここでは手動で fsck を行う方法を述べる.

作業手順 1 : データのバックアップ

fsck を行う前に, HDD 内のデータのバックアップを行う.

(前もって計算機のユーザに連絡すること)

  • バックアップの方法をいくつかある
    • 他の情報実験機に scp, rsync を用いて転送する
    • 別の HDD に dd コマンドでコピーする

作業手順 2 : fsck の実行

データのバックアップ後, 対象となる HDD をアンマウントしたのちに, fsck を実行する.

  • HDD のアンマウント (以下は /dev/sdc1 をアンマウントする場合)

    # umount /dev/sdc1
    • umount を実行した際に "umount: /dev/sdc1: device is busy" と出力される場合は /dev/sdc1 にアクセスしているプロセスがないか確認する

      # lsof | grep '/dev/sdc'
    • アンマウントは以下の方法でも可能

      # emacs /etc/fstab
      # mount -a
      • mount -a でアンマウントされない場合はシステムを再起動すると反映できることが多い
  • アンマウントされたかどうかの確認 (以下は出力例. /dev/sdc1 がなくなっている)

    $ df
    Filesystem          1K-ブロック    使用  使用可 使用% マウント位置
    /dev/sdb1            432554224 204055388 206526336  50% /
    tmpfs                  8237060        0  8237060  0% /lib/init/rw
    udev                    10240      896      9344  9% /dev
    tmpfs                  8237060        0  8237060  0% /dev/shm
  • fsck の実行
    • ここでは nohup を用いて実行し, また fsck-sdc1.log というファイルへ出力を保存している.

      # nohup fsck -fy /dev/sdc1 > fsck-sdc1.log 2>&1 &
    • ログファイル (fsck-sdc1.log) の内容の例

      nohup: ignoring input
      fsck 1.41.3 (12-Oct-2008)
      e2fsck 1.41.3 (12-Oct-2008)
      Pass 1: Checking inodes, blocks, and sizes
      Pass 2: Checking directory structure
      Pass 3: Checking directory connectivity
      Pass 4: Checking reference counts
      Pass 5: Checking group summary information
      /dev/sdc1: 2250407/183140352 files (5.9% non-contiguous), 42536843/732534429 blocks
  • 対象となる HDD がアンマウントされているのに,

    fsck.ext3: デバイスもしくはリソースがビジー状態です while trying to open /dev/sdc1
    Filesystem mounted or opened exclusively by another program?

    などと出力され, fsck が実行できない場合

    • デバイス関連の認識を再起動した上で, 再度 fsck を実行する

      # /etc/init.d/udev restart
      # nohup fsck -fy /dev/sdc1 > fsck-sdc1.log 2>&1 &

復旧報告

再起動と lost+found 内のファイルの処理

  • 対象となる HDD をマウントした後に再起動し, 問題なく起動できることを確認
  • HDD の整合性を保つために除去されたファイルが lost+found/ に入っている
    • ファイル名は前に使っていた inode になっている
    • 一つ一つファイルの内容を確認し, ファイル名や置き場所が特定できれば, 復旧できる可能性がある

今後の注意点

  • リファレンス機の電源を落とす際には HDD の電源も切る
  • 不良セクタが生じた HDD は, そのセクタの周囲も障害が広がり, HDD が使えなくなる可能性がある. HDD をフォーマットし直すと不良セクタがなくなることがあるが, 絶対とは言えないので注意が必要.
Last modified:2011/07/28 19:49:37
Keyword(s):
References:[トラブルカルテ]