うちのサーバ機はxenを使って仮想化して運用している。
そして毎日定期バックアップをLVMのスナップショット機能を利用して行っているのだけども、どうも最近挙動がおかしいことに気づいた。
作成したスナップショットが高確率でファイルシステムにエラーを含んでいる。
# xm pause debian # lvcreate -s -n snapdebian -L 200G /dev/ms09/debian Logical volume "snapdebian" created # xm unpause debian
としてスナップショットを作成する。
ここまではいい。
が、ここでfsckを走らせるとエラーが出る。
# e2fsck -yfv /dev/ms09/snapdebian e2fsck 1.41.12 (17-May-2010) /dev/ms09/snapdebian: recovering journal Clearing orphaned inode 15466504 (uid=109, gid=109, mode=0100600, size=0) Clearing orphaned inode 15466503 (uid=109, gid=109, mode=0100600, size=0) Clearing orphaned inode 15466502 (uid=109, gid=109, mode=0100600, size=0) Clearing orphaned inode 15466501 (uid=109, gid=109, mode=0100600, size=20) Clearing orphaned inode 15466500 (uid=109, gid=109, mode=0100600, size=0) 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/ms09/snapdebian: ***** FILE SYSTEM WAS MODIFIED ***** 715619 inodes used (2.13%) 738 non-contiguous files (0.1%) 182 non-contiguous directories (0.0%) # of inodes with ind/dind/tind blocks: 0/0/0 Extent depth histogram: 706955/133 23572155 blocks used (17.56%) 0 bad blocks 6 large files 677160 regular files 29784 directories 126 character device files 40 block device files 2 fifos 16 links 8469 symbolic links (8324 fast symbolic links) 29 sockets -------- 715626 files
マウントしてrsyncでバックアップをとるとumountでえらい時間がかかる。
カーネルが文句いってる。
[ 647.099517] EXT4-fs (dm-18): ext4_orphan_cleanup: deleting unreferenced inode 15466504 [ 647.099539] EXT4-fs (dm-18): ext4_orphan_cleanup: deleting unreferenced inode 15466503 [ 647.099548] EXT4-fs (dm-18): ext4_orphan_cleanup: deleting unreferenced inode 15466502 [ 647.099556] EXT4-fs (dm-18): ext4_orphan_cleanup: deleting unreferenced inode 15466501 [ 647.099591] EXT4-fs (dm-18): ext4_orphan_cleanup: deleting unreferenced inode 15466500 [ 647.099599] EXT4-fs (dm-18): 5 orphan inodes deleted [ 647.099710] EXT4-fs (dm-18): recovery complete [ 647.433114] EXT4-fs (dm-18): mounted filesystem with ordered data mode [ 1080.113046] INFO: task umount:4061 blocked for more than 120 seconds. [ 1080.113114] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 1080.113201] umount D 0000000000000000 0 4061 2294 0x00000000 [ 1080.113331] ffffffff8147b1f0 0000000000000282 0000000000000000 ffff8801e6971de8 [ 1080.113544] 0000000000000000 0000000000000000 000000000000f9e0 ffff8801e6971fd8 [ 1080.117004] 0000000000015780 0000000000015780 ffff8801c17654c0 ffff8801c17657b8 [ 1080.117004] Call Trace: [ 1080.117004] [<ffffffff8100e629>] ? xen_force_evtchn_callback+0x9/0xa [ 1080.117004] [<ffffffff8100ece2>] ? check_events+0x12/0x20 [ 1080.117004] [<ffffffff8110926b>] ? bdi_sched_wait+0x0/0xe [ 1080.117004] [<ffffffff81109274>] ? bdi_sched_wait+0x9/0xe [ 1080.117004] [<ffffffff8130d19a>] ? _spin_unlock_irqrestore+0xd/0xe [ 1080.117004] [<ffffffff8130c3e7>] ? __wait_on_bit+0x41/0x70 [ 1080.117004] [<ffffffff8100f0ac>] ? xen_smp_send_reschedule+0x0/0x7 [ 1080.117004] [<ffffffff8110926b>] ? bdi_sched_wait+0x0/0xe [ 1080.117004] [<ffffffff8130c481>] ? out_of_line_wait_on_bit+0x6b/0x77 [ 1080.117004] [<ffffffff81065f24>] ? wake_bit_function+0x0/0x23 [ 1080.117004] [<ffffffff811092ec>] ? sync_inodes_sb+0x73/0x12a [ 1080.117004] [<ffffffff8110cea1>] ? __sync_filesystem+0x4b/0x70 [ 1080.117004] [<ffffffff810f1aa2>] ? generic_shutdown_super+0x21/0xfa [ 1080.117004] [<ffffffff8100eccf>] ? xen_restore_fl_direct_end+0x0/0x1 [ 1080.117004] [<ffffffff810f1b9d>] ? kill_block_super+0x22/0x3a [ 1080.117004] [<ffffffff810f226d>] ? deactivate_super+0x60/0x77 [ 1080.117004] [<ffffffff81104bc0>] ? sys_umount+0x2dc/0x30b [ 1080.117004] [<ffffffff81011b42>] ? system_call_fastpath+0x16/0x1b
場合によってはこのままumountできずにプロセスが残り続けて死ねる。
とりあえずディスクI/Oがロックされた状態になるんだろう。
この問題は稼働中のext4ファイルシステムのスナップショットを作成した際に起きるようだ。
おそらくジャーナルに書き出したデータが実データに反映されていないような状況でスナップショットを作成した場合に起きるんじゃないかと予測している。
のでext3でも同じ現象が起きるだろう。たぶん。
まあ、別にそれでも変更差分をきちんと吸収してくれているならかまわないんだけども、使い終わったスナップショットをアンマウントするのになんで何分もかかるのかがわからない。
その上、使用済みのスナップショットボリュームを削除しようとしても失敗することがある。
# lvremove -f /dev/ms09/snapdebian Unable to deactivate open ms09-debian-real (254:5) Failed to resume debian.
これに関してはバグレポートが見つかった。
とりあえず4ヶ月経過しても治っていないらしい。
んーむ。
こうなるとバックアップ手法を見直す必要性が出てくる。
Dom0とDomUとで疑似遠隔rsyncでバックアップとなるのだろうか。
だけどそれだとrootでのリモートログインが必要となるから駄目だな。
ゲストはゲストでバックアップパーティションをディスクとしてアタッチして、各自でバックアップしてもらうような形ならいけるか。
あー、設定するのがめんどくさい。

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 