今まで起きたトラブルをまとめてみる。

PE移動中にXFSエラー [2011/10/23] (解決)

環境

状況

 RAID6の上にLVMを載せてlvをマウントして運用中に、ディスク構成を変えるためpvmoveで移動していた。このときは、ディスクIOの高負荷が長時間続く。今までは重いだけでそれ以上のことはなかったが、ある時を境にエラーになった。エラーの起きた時刻のログは以下のようになっている。

Oct 23 03:08:12 mercury kernel: [5476008.157970] I/O error in filesystem ("dm-0") meta-data dev dm-0 block 0x98d37001       ("xfs_trans_read_buf") error 5 buf count 512
Oct 23 03:08:12 mercury kernel: [5476008.163156] xfs_force_shutdown(dm-0,0x1) called from line 4341 of file /build/buildd-linux-2.6_2.6.32-35-amd64-aZSlKL/linux-2.6-2.6.32/debian/build/source_amd64_none/fs/xfs/xfs_bmap.c.  Return address = 0xffffffffa0255feb
Oct 23 03:08:14 mercury kernel: [5476009.874106] Filesystem "dm-0": I/O Error Detected.  Shutting down filesystem: dm-0
Oct 23 03:08:14 mercury kernel: [5476009.874189] Please umount the filesystem, and rectify the problem(s)
Oct 23 03:08:23 mercury kernel: [5476019.052601] Filesystem "dm-0": xfs_log_force: error 5 returned.

 マウントはエラーなくできるが、内容は以下のようになっている。

d?????????  ? ?    ?       ?                ? lvol0

 ディスク容量は特におかしくない。
 ググると、再起動したり、xfs_repairをすると直ったという記事があったので、pvmoveが終わってから試してみる。

 pvmoveが終わったので、いきなり修復(xfs_repair)の前にチェック(xfs_check)をする。しかし、以下のエラーが出た(実際のエラーはコピーし忘れたが、おそらく同じ)。

# xfs_check /dev/vg01/lvol0
xfs_check: /dev/vg01/lvol0 contains a mounted and writable filesystem

fatal error -- couldn't initialize XFS library

 一瞬でエラーになるので、全くチェックしてないようだ。使ってないパーティションでXFSを作ってそこに対して実行してみるとうまくいった。マウントもできて中身もきちんと見れる。とりあえず、これ以上今はできないと思って再起動。
 再起動後、再度xfs_checkを実行すると、別のエラーが。

# xfs_check /dev/vg01/lvol0
ERROR: The filesystem has valuable metadata changes in a log which needs to
be replayed.  Mount the filesystem to replay the log, and unmount it before
re-running xfs_check.  If you are unable to mount the filesystem, then use
the xfs_repair -L option to destroy the log and attempt a repair.
Note that destroying the log may cause corruption -- please attempt a mount
of the filesystem before doing this.

 翻訳してみた結果から意味を見ると、「ファイルシステムには書き込まれていないメタデータのログがあります。(ロールオーバーするため?)ファイルシステムをマウントして、アンマウントしてxfs_checkを実行してください。ファイルシステムがマウントできなければ、ログを消して-Lオプション付きでxfs_repairを実行してみてください。ログを消すとデータが消えるかもしれないので注意してください。これをする前に、ファイルシステムのマウントを試してみてください。」みたいな感じかな。英語がよくわからないので自信ないけど。
 ということで、どきどきしながらマウントしてみる。5秒くらいかかって、エラーは出ずにマウント終了。ざっと中身を見てみるが、特に問題ないみたい。データのロストはなかったと思っていいのかな。
 アンマウントして、xfs_checkすると、約2分後にメモリオーバーでプロセスが落ちた。パーティションサイズは4.5Tだけど、実メモリ6Gに1Gのスワップがあるのに*1。メモリオーバーなので、OOM Killer*2となっている。どの辺で落ちているのか確かめようと、-vオプション付きで実行してみたが、メモリ消費速度が1000倍以上遅いので、やめようとCtrl+Cを押した。しかし、プロンプトに戻らない。その代わり、メモリ消費速度が多少速くなった。また、メモリ不足になったらいやなので、スワップメモリを10Gほど増やす。今度は、メモリ不足になることもなく正常終了。終了直前はスワップ使用量が4.5Gだったので、使用メモリは10G近くあったってことに。64bitOSだと、1TBのパーティションあたり、2GBのメモリが必要なのかな。
 ともあれ、無事復帰したと言うことで一安心。

参考


*1 調べると、1TBにつき、1GBのメモリを使うってのと、それが減ったという情報もあった。
*2 Out Of Memory Killer

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-10-25 (火) 12:55:41 (2918d)