今まで起きたトラブルをまとめてみる。 #contents *LVMのPE移動中にXFSエラー [2011/10/23] (解決) [#df63867e] *PE移動中にXFSエラー [2011/10/23] (解決) [#df63867e] **環境 [#l85aba26] -OSは、Debian Squeeze。2011/10/23現在、最新パッチを当てている。 **状況 [#t15d64b2] 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のスワップがあるのに((調べると、1TBにつき、1GBのメモリを使うってのと、それが減ったという情報もあった。))。メモリオーバーなので、OOM Killer((Out Of Memory Killer))となっている。どの辺で落ちているのか確かめようと、-vオプション付きで実行してみたが、メモリ消費速度が1000倍以上遅いので、やめようとCtrl+Cを押した。しかし、プロンプトに戻らない。その代わり、メモリ消費速度が多少速くなった。また、メモリ不足になったらいやなので、スワップメモリを10Gほど増やす。今度は、メモリ不足になることもなく正常終了。終了直前はスワップ使用量が4.5Gだったので、使用メモリは10G近くあったってことに。64bitOSだと、1TBのパーティションあたり、2GBのメモリが必要なのかな。~ ともあれ、無事復帰したと言うことで一安心。 **参考 [#i58914fb] -http://blog.goo.ne.jp/ikunya/c/b6fd42f81c19232e72bb802c8cd2297b/1 -http://yoosee.net/d/archives/2006/09/11/002.html -http://wiki.nothing.sh/page/Over2TB