与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性能不错,不过既然都安装好了,我就不这么冲动再当小白鼠了。

顺便说下我查到的相关优化:

  1. 把firefox cache扔tmpfs(毕竟频繁读写,对非ssd也适用)
  2. io scheduler用noop或者deadline,建议来看用deadline。fifo_batch改成了1
  3. fstab mount参数加上 noatime。(ext系也有效,atime算是linux里面一个需要频繁维护但是却没什么用的属性,也能有效减少io)。
  4. 然后就是把/tmp扔tmpfs,小心不要让它暴了哦。
This entry was posted in Linux and tagged , . Bookmark the permalink.

9 Responses to 与btrfs的小斗争

  1. 右京样一 says:
    Google Chrome 9.0.597.94 GNU/Linux

    印象中EXT4的话,不仅开头不能乱动,结尾也不能乱动……当然扩容就无所谓了。

    另外为啥我印象中甲骨文号称btrfs比EXT快……所以ubuntu刚支持btrfs那一阵子我有点想转投,不过后来觉得可能出现自己搞不定的问题,还是用了EXT4……

  2. csslayer says:
    Firefox 4.0b12 GNU/Linux x64

    @右京样一 基于benchmark的测试其实有时候很难说明问题,尤其是针对桌面系统。phoronix和open-benchmark有很多测试,你可以自己看看。

    另外btrfs至今没有发布的fsck哦……ext4不知道。ext3都可以扩容的。

  3. xndcn says:
    Firefox 3.6.13 Windows 7

    Ubuntu 10.10出来的时候,曾经装过一把btrfs。
    结果大失所望啊,明显感觉慢了不少….
    希望它能越来越完善吧,毕竟SSD在逐渐普及啊

  4. csslayer says:
    Firefox 4.0b12 GNU/Linux x64

    @xndcn btrfs并不是一个专门针对ssd的文件系统,ssd也只是其中的一个参数,这个参数的主要目的是让文件的分配能够考虑到ssd的特性,从而延长ssd的寿命。一些传统文件系统对磁盘某块进行频繁读写则不利于ssd的寿命。

  5. stufever says:
    Google Chrome 8.0.552.237 GNU/Linux

    btrfs还是不太稳定,要注意数据的备份啊

  6. xndcn says:
    Firefox 3.6.13 Ubuntu 10.10

    @csslayer 是这么个意思,不过我是想说,根据我的亲身体会,不是SSD的话,性能和ext4差得太远了…当然那是半年前的事了,希望半年过去了能有大的进步吧。

  7. 书痕 says:
    Google Chrome 10.0.648.127 GNU/Linux

    目前貌似ext4还是比btrfs快,即使在ssd上也比btrfs快,只是不知道ext4有没有针对SSD的保护。

  8. techlive says:
    Firefox 4.0 GNU/Linux

    能不能详细说下 chroot;mount;brtfs resize 这部分,我想扩大根分区的大小,我已经用 fdisk 调整了分区的大小,并保证 start cylinder 不变,但接下来就不知道怎么操作了,分区不能挂载,说不能读取超级块,不能用 btrfs filesystem resize

  9. csslayer says:
    Firefox 4.0 GNU/Linux x64

    @techlive 调整分区有风险……需谨慎。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.