这个Arch,虽然之前多次濒临挂掉(开testing,玩文件系统什么的……),但都一一化解了。这次算是真的挂了。
上星期给部分挂载点换了btrfs+raid0。虽然按说实验这种危险的东西应该备份一下,可是劣根性一发作就懒得干了。于是,悲剧就不可避免地发生了。
前天貌似是温度太高,SATA硬盘忽然出故障,控制台一直输出貌似坏道无法读取的信息,无法关机(reisub也不行),干脆直接按重启。重启后,/var分区就挂掉了,无法挂载,btrfsck也修复不了(好吧,这玩意儿根本不能指望的……)。
btrfsck输出:
cuihao@cuihao-gentoo /media/arch_root $ sudo btrfsck /dev/sda5
failed to read /dev/sr0
failed to read /dev/sr0
parent transid verify failed on 199712768 wanted 11832 found 10385
parent transid verify failed on 199712768 wanted 11832 found 10385
Ignoring transid failure
parent transid verify failed on 199950336 wanted 11832 found 10387
parent transid verify failed on 199950336 wanted 11832 found 10387
Ignoring transid failure
parent transid verify failed on 199696384 wanted 11832 found 10385
parent transid verify failed on 199696384 wanted 11832 found 10385
Ignoring transid failure
checking extents
leaf parent key incorrect 42799104
btrfsck: btrfsck.c:1933: check_owner_ref: Assertion `!(rec->is_root)' failed.
挂载的内核错误信息:
[ 1628.373835] parent transid verify failed on 199712768 wanted 11832 found 10385
[ 1628.373848] parent transid verify failed on 199712768 wanted 11832 found 10385
[ 1628.374702] btrfs: open_ctree failed
切换到备份的Gentoo系统,搜索资料尝试修复。最成功的算是btrfs-restore工具了,修复了abs文件夹(嘛,最没用的……)。邮件列表上有类似的问题,没找到一个解决的。
虽然丢了/var系统也不是完全死掉、pacman数据库也有修复的脚本,不过我也懒得试验了。反正也用了一年多了(根据ls输出,确切日期是2011年5月29日),寿命比周围OS的平均水平应该算长久了,直接重装得了。
当初在Arch里装了Gentoo,今天在Gentoo里装Arch~~~