怎样用上ext4 bigalloc

有位叫“summer77”的同学发邮件询问我如何使用ext4的bigalloc特性,主要是不方便直接把内核从2.6.28升到3.2去,跨度太大。但是我给他的回信用gmail死活发不出去(summer77同学,是不是你的邮箱有问题呀),我只能在这里做答了。

bigalloc是在3.2版以后的linux kernel才有的,因为公司要用,所以我们backport到了淘宝kernel上——淘宝kernel是基于rhel6的2.6.32-kernel的
(跟这则新闻提到的所谓“淘宝linux发行版”没有任何关系,我们自己也不知道那个“发行版”是谁做的),我们backport了一些业务部门要用到的内核组件(比如netoops、drbd等),也fix了一些功能性能bug(这些bug都已经反馈给了redhat和内核社区)。

淘宝linux kernel的代码是公开的:http://kernel.taobao.org/git/?p=taobao-kernel.git;a=summary 有兴趣的同学可以

2. cd taobao-kernel
3. ./scripts/package.py --buildid 20120921 (buildid可以自己随意)
4. cd taobao-kernel-build
5. rpmbuild -bb kernel.spec --with rhel5 --with baseonly --without dracut --define="_sourcedir `pwd`" --define="_builddir `pwd`" --define="_rpmdir `pwd`/rpm"

这样就能编译出基本的包了,具体参考淘宝@内核开发的“本地编译方法”
(第5步执行中可能会提示需要你跑一下“ rngd -r /dev/urandom”)

先装kernel-firmware,再装kernel,重启,新内核就生效了。

要使用bigalloc,还需要安装最新stable的e2fsprogs-1.42.5(bigalloc要求用户态工具也是新的) 
然后就可以:

mke2fs -O extent,bigalloc -C 65536 /dev/sda
mount -t ext4 /dev/sda /test/

了。



=== 2012.09.24 ===

tina: 请问你们porting的工作量大概多少人周?因为没有找到这个patch包,不知道涉及的修改工 作量到底有多少?另外你们是从哪里找到资料做这个backport工作的?谢谢

答:@tina,bigalloc的全套工作是我负责的,backport本身只用了不到一个月,再就是两个月的功能和性能测试(我们组没有QA,测试全靠自己),然后是长达数月的线上稳定性验证和收集性能测试报告——不要小看这性能测试报告,说实话,采集数据和整理报告比backport累人多了,也枯燥多了。当然,线上验证不用人守着,那段时间我又去搞overlayfs和hadoop集群的kernel优化了(不然老大们肯定会嫌我工作不饱满)。

我们backport的那些bigalloc的patch是从ext4的maintainer——Ted的代码库里的一个临时分支里找来的(那个临时分支是他给linus的),但是现在这个临时分支可能已经被删掉了。如果您有兴趣,可以直接看upstream的git log,里面从 021b65bb1e4e4b625c80bbb82651e5e155721ef3 到 5356f2615cd558c57a1f7d7528d1ad4de3640d96,是最初的十几个patch,后面还有一些小fix就只能靠自己整理了。

=== 2012.10.19 ===

claire:我能否放弃rpmbuild的编译方式,通过make menuconfig重新配置编译,而进行安装?以及,64位能否改成32位?

答:可以自己用源代码编译,步骤如下
   2. cd taobao-kernel
   3. ./scripts/seq-patch.py
   4. cd tmp/linux-2.6.32-279.9.1.el5/
这里面就是源代码了,可以自己make menuconfig编译。


相关文章

分类

7 Comments

深蓝加菲 said:

确认一下:淘宝kernel虽然支持bigalloc ,但是还不支持 1MB block size 是吗

DongHao Author Profile Page said:

@深蓝加菲,支持的,只要有了bigalloc,cluster size可以一直往上,1MB、2MB、4MB甚至8MB(通过 -C 指定),当然,我们实际最多也就用到1MB,生产上应该不需要8MB那么多

tina said:

请问你们porting的工作量大概多少人周?因为没有找到这个patch包,不知道涉及的修改工作量到底有多少?另外你们是从哪里找到资料做这个backport工作的?谢谢

tina said:

如果方便,可以留一个沟通方式么?比如MSN。很多技术问题想请教,谢谢!

DongHao Author Profile Page said:

@tina,很抱歉,我们上班时间只能用旺旺,别的IM不允许使用,而且msn我也不能保证即刻回复。如果有技术问题,可以直接发到我博客右上角的那个邮箱,我会尽快反馈。谢谢!

深蓝加菲 said:

原来 mingming cao 有一个64KB block size 的patch, 请问cluster size 和这个是差不多的机制吗? 我理解cluster size 是可以分配连续块,但是64K block size就是block 64K?

DongHao Author Profile Page said:

Ted的这个bigalloc跟mingming cao的patch完全不同,在bigalloc里,所谓64k的cluster,并非block真的变成了64k,而仅仅是分配单位从4k变成了64k,block bitmap里的一个bit以前代表4k,现在代表64k了。而block这个单位还是保留了,比如extent里的start和length都还是以block(4k)为单位,如果一个extent有64k那么长,它的length还是16,而在block bitmap里只占1个bit。 我曾经提patch想让Ted把extent里的单位也换成cluster,最后被否了。

留言:

关于文章

This page contains a single entry by DongHao published on 09 21, 2012 5:06 PM.

hadoop集群上捉到linux kernel bug一个 (答读者提问) was the previous entry in this blog.

EMC USD组 招聘 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.