所有文章

btrfs损坏之后的一系列麻烦

上周六晚上玩电脑的时候忘记插上电源了,直接导致笔记本意外断电关机,本来这只是一件小事,重启电脑即可,个人电脑一般没有多大的磁盘IO,数据基本都是在内存中读写的,但是等我重启电脑的时候却发现没法进系统了,一直卡在fsck那步,然后就是一直提示出现多少个block error,心立刻亮了半截,我用的arch没有做备份,如果硬盘损坏,里面的重要文件就都没了。于是重启进入win8下载了一个system-rescue-cd打算进入livecd修复分区,进去之后执行btrfs check --repair /dev/sda3,倒是检查出了一个块错误,但是没有修复,尝试重启电脑,结果出现bad super block, unknown fs,似乎问题加重了,上网搜了一下superblock损坏的话要找备份的superblock来替换,但是我没有定时做文件系统备份,行不通,后来尝试给btrfs check加上--init-scum参数,重启之后一大堆错误,死心,对数据不报期望了。

上一个系统用了1年多没换,好不容易有一次机会折腾可不能放过,先尝试安装funtoo,和以前无数次一样,都是到最后驱动不了我的博通无线网卡,后面尝试sabayon这个桌面系统,自带了桌面肯定自带了所有驱动。尝试安装,这回小心了,把/boot单独放到一个ext2的分区中去了,然后/用的是xfs,毕竟SGI的技术还是非常可以的。安装之后果然不需要手动装驱动,这种傻瓜式操作我最喜欢了,gnome中总是配置不好fcitx,而且ghc编译的时候总是会报错,也是莫名其妙的问题,supervisor的配置都得自己手动写,一大堆反人类的事情真是头疼,被arch的KISS哲学熏陶得simple且stupid之后,实在是受不了gentoo的diy思想。用btrfs restore /mnt/arch /mnt/arch_bak备份大部分数据之后,继续重装arch。

备份分区之后就多出了一个分区可以用来安装第三个系统,对于懒人来说肯定不愿意折腾文本安装界面,直接下载antergos的livecd开始图形化安装,一步一步做,选文件系统的时候还是不死心,不愿意放弃心爱的btrfs,又做死选了它。系统倒是很快就装好了,麻烦的地方是配置,不过默认的gnome3界面用得真心不习惯,所有应用窗口挤在一个桌面上,反复切换实在是太麻烦了。在安装fcitx输入法的时候不小心systemctl stop dbus.service,结果gnome桌面自动推出了,卡在一个黑乎乎的界面,对于一切操作都没有响应,强制关机之后发现又进不了硬盘了,满头黑线。

反正这个新安装的系统没有什么数据,重装即可,这回发誓在也不用btrfs了,试试ext4这个根正苗红的linux传人,果然一切OK,有线无线网卡自动激活,电源管理自带,安装xmonad没问题,安装fcitx一切顺利,安装dmenu用来管理菜单,安装urxvt,复制之前的Xresources文件,安装fish,安装vim,安装emacs,安装supervisor,安装shadowsocks,安装proxychains,github上面拷贝spf13的vim配置,prelude的emacs配置,oh-my-fish,一切都是这么简单,几乎不需要自己做额外的配置。进入熟悉的xmonad界面之后内心久久不能平静,我就喜欢这种一份配置一直使用的wm。最大的遗憾就是没能找回原来用的rsa密钥对,也就是说我的服务器连接都得重新来一遍,password-store也不能用了,几十个密码没法导出来。

从周日开始一知道今天(周四),花了太多时间,上班也用的是公司的电脑,太影响效率了,不过还好一切都解决了。总结一下这场事故中学到的东西吧:

  1. 数据无价,平时得定时做好数据备份工作。鉴于xfs和ext4都没有磁盘快照功能,所以只能备份文件了,btsync似乎是一个不错的选择。
  2. 不要把/boot和/放在一起,其实最好的分区规范应该是分为/boot, /usr, /这3块,这样就算/挂了,还能进入内核利用/usr里面的软件来修复自身。
  3. btrfs最近2年都不会再去碰了,虽然有很多很新的特性,但是一个礼拜伤我2次,这份大仇2年内都不能忘记。
  4. 配置文件非常重要,最好是保存在网上,之前仅仅star了一下prelude的配置导致后面很多本地的自定义都没有提交到自己的仓库,分区崩溃之后自己写的代码都没了。
  5. 最后再赞美一下xmonad,这是我用过的最好的桌面了。