以前から調子が悪く、だましだまし使っていたCentOS7のルートディレクトリを入れていたUSBメモリがついに壊れた。
昨日btrfsが急にreadonlyでのマウントになっていた。
ログを見たりしたが、原因がわかるはずもなく、とりあえずカーネルが新しければなんとかなるかもしれんと思って、fedora23のモノにさしてみて、btrfs checkしてみたら、3つのスナップショットのツリーが壊れているようだったので、そのスナップショットを削除してみようとしたところ、削除できず(正確には30分ほど待ってもなんとも反応がなかった)。
もうこれはUSBメモリが壊れたんだろうなあと踏んで、USBメモリのファイルシステムを消したうえでchkflshで確認してみたところ、最後まで読み込めずにエラーで終了。その後、USBメモリはどうやっても認識させられなくなってしまった。(あ~あ)
もうしょうがないので、別のUSBメモリを用意して、ファイルシステムを作成。バックアップから復旧して、grub2-install やら kernel の reinstall やら grub2-mkconfig やらをして、復旧させた。
この別のUSBメモリというのも、windows8でReadyBoost用に使っていたものなので、耐久性にはおそらく難があって、また近々似たようなことが起こるかもしれない。
(/var/log/messagesにはこんな感じとか。もう手に負えなくなった。)
kernel: BTRFS: bdev /dev/sdb3 errs: wr 0, rd 0, flush 0, corrupt 2470, gen 0 kernel: BTRFS info (device sdb3): The free space cache file(29360128) is invalid. skip it kernel: BTRFS info (device sdb3): The free space cache file(10766778368) is invalid. skip it kernel: BTRFS info (device sdb3): The free space cache file(10900996096) is invalid. skip it kernel: BTRFS (device sdb3): bad tree block start 16626202429509485347 30539776 kernel: BTRFS (device sdb3): bad tree block start 16482052057028018723 30539776 kernel: BTRFS (device sdb3): bad tree block start 16626202429509485347 30539776 kernel: BTRFS (device sdb3): bad tree block start 16482052057028018723 30539776 kernel: ------------[ cut here ]------------ kernel: WARNING: at fs/btrfs/super.c:260 __btrfs_abort_transaction+0xed/0x140 [btrfs]() kernel: Workqueue: btrfs-extent-refs btrfs_extent_refs_helper [btrfs] kernel: ffff88009abefa80 00000000ec287b06 ffff88009abefa38 ffffffff81635a0c kernel: ffff88009abefa70 ffffffff8107b200 ffff880036aaf0b0 ffff8800a907a000 kernel: 00000000fffffffb ffffffffa0364f70 0000000000001766 ffff88009abefad8 kernel: Call Trace: kernel: [<ffffffff81635a0c>] dump_stack+0x19/0x1b kernel: [<ffffffff8107b200>] warn_slowpath_common+0x70/0xb0 kernel: [<ffffffff8107b29c>] warn_slowpath_fmt+0x5c/0x80 kernel: [<ffffffffa02b4f6d>] __btrfs_abort_transaction+0xed/0x140 [btrfs] kernel: [<ffffffffa02c811d>] __btrfs_free_extent+0x30d/0xbf0 [btrfs] kernel: [<ffffffff816322f5>] ? __slab_free+0x10e/0x277 kernel: [<ffffffffa02cd760>] __btrfs_run_delayed_refs+0x430/0x1220 [btrfs] kernel: [<ffffffff810be3fe>] ? account_entity_dequeue+0xae/0xd0 kernel: [<ffffffffa02d2693>] btrfs_run_delayed_refs.part.65+0x73/0x270 [btrfs] kernel: [<ffffffffa02d2938>] delayed_ref_async_start+0x88/0xa0 [btrfs] kernel: [<ffffffffa0314f92>] normal_work_helper+0xc2/0x290 [btrfs] kernel: [<ffffffffa0315392>] btrfs_extent_refs_helper+0x12/0x20 [btrfs] kernel: [<ffffffff8109d5fb>] process_one_work+0x17b/0x470 kernel: [<ffffffff8109e3cb>] worker_thread+0x11b/0x400 kernel: [<ffffffff8109e2b0>] ? rescuer_thread+0x400/0x400 kernel: [<ffffffff810a5aef>] kthread+0xcf/0xe0 kernel: [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140 kernel: [<ffffffff81646118>] ret_from_fork+0x58/0x90 kernel: [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140 kernel: ---[ end trace 23a9c37afe62a6dc ]--- kernel: BTRFS: error (device sdb3) in __btrfs_free_extent:5990: errno=-5 IO failure kernel: BTRFS info (device sdb3): forced readonly kernel: BTRFS: error (device sdb3) in btrfs_run_delayed_refs:2792: errno=-5 IO failure kernel: BTRFS critical (device sdb3): could not do orphan cleanup -22 kernel: BTRFS: sdb3 checksum verify failed on 970817536 wanted 497A7806 found D2F04D3 level 0 kernel: BTRFS: sdb3 checksum verify failed on 682786816 wanted 55E62E9B found E743A3AF level 0 kernel: BTRFS: sdb3 checksum verify failed on 10811473920 wanted 64C40467 found B7E215D4 level 0