Tag Archives: btrfs

恢复btrfs的一次记录

昨天尝试systemd,有次关机不利,又没启用magic key,于是强关。重开机btrfs 报open_ctree error…无法mount根分区 于是开手机上网搜解决方案。http://www.spinics.net/lists/linux-btrfs/msg07572.html 然后掏出以前留下的archboot,usb进系统。 archboot真是好,可以用pacman,于是pacman了gcc,git,make,httptunnel(为了上sb的国际网),btrfs-progs-unstable(更新btrfsck的版本,archboot里面的没有-s参数)。然后 git clone git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs-unstable.git next 进去make btrfs-select-super。 btrfsck -s 1 /dev/sda2,看看super block的备份好使不。完成之后 ./btrfs-selects-super -s 1 /dev/sda2 重启开机进系统。done。

Posted in Linux | Tagged | 4 Comments

与btrfs的小斗争

最近买了新笔记本,gateway i43a06c,同时也想用ssd爽一把,于是也买了kingston的sv100s2。安装ssd的过程非常顺利,内部的设计结构使得换硬盘非常容易。顺利换下ssd之后,当然就是安装一个archlinux来用,用的是archboot 2010.12。选择的文件系统是btrfs,主要是出于对ssd寿命的考虑。虽然现在各种负面的新闻说btrfs的性能问题(benchmark败给ext4等),不过目前在这里ssd因素似乎暂时掩盖了这个问题。为了避免问题,我还用虚拟机预演了一次,自带的grub2不支持btrfs,于是单独分区了boot,ext2。那会考虑内存有2g,顺手分了500m的swap,以防memory burst。 最近查了查资料,因为想编译个kernel26-ck来玩的缘故,于是用了tmpfs,没想到编译内核还真占空间…于是内存不够用了…也就导致今天我加了2g的内存。这下我想把swap彻底废掉,顺便看看btrfs的在线resize。当然我想的有点简单了,也就引出了下面的故事。 因为分区大小是不能在线调整的,于是我还是先gparted删掉了swap,但似乎修改分区表之后应该grub-install下(我也不是太清楚,大概是要的吧)。于是重启之后进不了grub了,没法,只好掏出我的老神器gparted的livecd,结果又我槽了,大概是人品不好呢还是年久失修呢,总之我的livecd的sector io error。不过上次安装留下的archboot的usb还在(不在了我也能现做一个),又想到这货有btrfs支持(刚刚用gparted的思想其实完全不靠普,因为既没法读取btrfs,也没有grub2)。 这下好了,liveusb进去,先修改分区大小,这改分区真有点提心吊胆。因为是fdisk先删除再创建,分区start的边缘可不能乱动,这大概需要注意。然后就是chroot进去,mount,实际上我用了chroot之后的btrfs的工具,也算是在线resize了。有意思的是,btrfs的uuid没有修改(我以为会变化的,还改了下fstab),然后grub-install,重启。进系统,对比分区大小之后(因为我没记住原来分区大小……),判断应该是resize成功了。然后就是重新改回用uuid的grub和fstab。 btrfs的resize真是出人意料的简单: btrfs filesystem resize [delta size] [mount path] 同时还有好用的参数max,帮你直接resize到最大。大概管理上来说,btrfs确实要比lvm和ext高那么一筹吧。至于性能问题,可以慢慢改进。我在一个benchmark里面明显的看到btrfs每次都还在改进当中。 由于btrfs被宣传的比较多,另外一个也有ssd优化的nilfs2反而在我安装之前还……没能耳闻……总之都是unstable啦。据说ssd性能不错,不过既然都安装好了,我就不这么冲动再当小白鼠了。 顺便说下我查到的相关优化: 把firefox cache扔tmpfs(毕竟频繁读写,对非ssd也适用) io scheduler用noop或者deadline,建议来看用deadline。fifo_batch改成了1 fstab mount参数加上 noatime。(ext系也有效,atime算是linux里面一个需要频繁维护但是却没什么用的属性,也能有效减少io)。 然后就是把/tmp扔tmpfs,小心不要让它暴了哦。

Posted in Linux | Tagged , | 9 Comments