2013 CLSF会议记录

时间:2013/10/17~2013/10/18

地点:上海LSI办公室

CLSF全称China Linux Storage and Filesystem,可以说是国外的LSF的中国“山寨”版。发起人是Coly,2009年是第一届,所以今年已经是第5年了。会议通过邀请,聚集国内做存储/文件系统方面的内核开发人员,这些人基本活跃在内核开源社区,人数控制在30左右。

Section #1 自我介绍

自我介绍之余,Coly和Robin讲了他们一直在做的工作,对坏盘的自动检测,及时将坏盘从存储系统中踢除。目前检测坏盘只是通过对IO延迟的检测,好像Google有一遍相关的论文,其中列举了包括IO延迟等各种不同的参数。

 

Section #2 XFS (Oracle Jeff Liu)

Jeff Liu介绍了过去一年XFS的变化。

这里有很多特性的新增或者增强。例如user ns支持,这个工作本来是user ns作者Eric做的,但Eric不懂xfs,David Chinner把patchset批了一通后,自己手动做了。

还有,引入CONFIG_XFS_WARN,本来是有CONFIG_XFS_DEBUG,这东西overhead比较大,并且为了debug会改变块分配之类的算法,最大的问题是,xfs检测到问题时因此就会直接panic了,所以DEBUG是不适合在产品环境上打开的。

另外一个很大的变动是增加了crc check,这个特性改变了xfs的disk layout。

其他的特性还有quota的增强、xfs_io支持seek_data和seek_hole、online shrinker、new free inode allocation btree、compressed inode cacche等等

据Jeff说,xfs最大的scalibility问题不是里面的某个算法问题,而是verification的问题。马涛非常关心的问题是xfs有没有做online fsck的想法,答案是否。

去年的时候,我们提到xfs代码太庞大的问题,这次Jeff辩解了一下,这其中一个原因是xfs注重代码注释,注释占了30%的比例,远高于btrfs和ext4。

Oracle 6.0支持了xfs,这是基于xfs的稳定性、对大文件和高并发的良好性能。另一方面,ext4的稳定性似乎有点受到诟病。Redhat也将在RHEL 7把xfs设成默认的文件系统了。

这里还提到xfs社区的一个问题,做为maintainer的SGI开发人员,跟做为xfs实际的技术引领人David和Christoph,之间经常争论不休,以致patch被接受的时间往往要比别的社区多花两倍时间。这个问题可能会好转,因为David已经变成maintainer,这个提议是由Ric Wheeler提出的,Ric是Redhat的文件系统项目组的manager,David也是Redhat的雇员。

Section #3 0day testing (Intel 吴峰光)

峰光这一两年其本上时间都投在这上面了,而且这个工作受到整个内核社区的赞赏,因为0day帮大家在开发中的代码及时发现很多bug。

Intel OTC本来就有做社区内核版本的测试工作,主要是性能方面,当发现有性能退化时,他们就会往内核社区发个report。峰光接手了这个工作后,就把它整成自己的0day了。

峰光介绍了介绍了0day是怎样将各个git tree合并的,在测试的过程中统计了哪些信息,这些信息有不同的权重,然后通过运算公式得到一个分数,这个分数决定了将决定系统要不要自动做git-bisect找到出问题的地方。

从一开始的启动测试,到现在的静态代码扫描、性能测试,这个测试套件还没有完善。

另外,0day是不开源的,马涛问到能否拿来测他们的内核,回答是只能把git tree的链接发给峰光。

Section #4 ext4 (阿里巴巴刘征)

淘宝的刘征介绍了ext4的进展。相比xfs,ext4在特性上的变化就少些了,主要有inline data、extent status tree、extent status cache,另外还有punch hole对non-extent mapping file和bigalloc的支持等。

对于extent status cache,可以用filemap FIEMAP_FLAG_CACHE,或者ioctl EXT4_IOC_PRECACHE_EXTENTS,将一个inode的extents信息全读到内存里面。这样有什么好处?可以避免从磁盘读取extent tree,否则的话,对preallocated的文件使用AIO的时

候,由于有了磁盘操作,AIO就不再是AIO了。

接下来刘征介绍了4月份的ext4 workshop的一些讨论结果:

-          将blocknumber从48位改为64位以支持更大的文件,但这种改动extent tree layout的事情是很麻烦的,而且也没有很迫切的需要。

-          range locking。如果能只锁住文件的一部分,而不是通过i_mutex锁住整个文件的话,并发性应该可以提到比较大的提升。

-          Online fsck。这是淘宝比较迫切的需要。对于数据库之类的东西,他们不希望因为文件系统损坏和修复而中断服务,如果fsck不需要卸载文件系统就好了。这个问题Ted有一些建议,网上可以找到。不过,花不花时间去实现估计就看淘宝自己了。

看起来,ext4最终会被xfs替代,xfs在btrfs成熟前作为最主要的linux通用本地文件系统。(不过btrfs的成熟遥遥无期)

Section #5 zswapzramzcache (Oracle 刘勃)

总的来说,这几样东西做的事情是将需要swap出来的内存压缩,然后放到一个内存池里,而不是真的swap出来,通过尽量避免使用swap提高系统性能。

zswap的压缩率最多只能到50%,而zram可以更高,但代替是page reclaim很困难。

目前主线的状态是,zcache已经从staging tree去掉,zram还在staging里。Bob Liu希望把zram和zcache整合在一起。

Section #6 From Industry (科达 Ma Jianpeng)

科达的Ma Jianpeng给我们讲了他们在存储/文件系统上的需求和应对。

对于图片,他们在前端是6张/秒,一张图片是50K,使用的是FAT32文件系统。后端则是100张/秒,用的是IPSAN,ext4文件系统。

由于IPSAN太贵,他们已经放弃了,而是自己研发了一个文件系统,将图片这样的小文件合并成大文件。

Jianpeng提到,对于他们这个行业,在存储上,客户是不大关心数据丢失或者损坏的,但唯独不能接受RAID5损坏,因为这一损坏就表示系统不能写了。

Section #7 btrfs (Oracle 刘博)

这个Section用了两个小时都还不够。。

作为一个还在积极开发中的文件系统,刘博列了一大堆的新开发的特性,诸如让人望穿秋水的raid5/6,还有snapshot-aware defrag、online device replace、dio speedup、send/receive、offline dedup、online dedup、skinny extents等等。

目前offline dedup已经进主线了,更复杂困难的online dedup还在开发中,估计也会进主线,两者可以用在不同的场景下。对于dedup,大家关心的是它对cpu占用率的影响,倒不一定是怕太耗cpu,而是让cpu占用率一会儿高一会儿低,这样就不可控,产生严重的抖动。

当然,btrfs最大的问题是稳定性问题,什么时候能够商用。虽然Chris Mason等人一再表示btrfs现在挺稳定的了,每年都会说到年底就能商用了,但到目前为止都没有一个实际可预期的未来。Chris本人现在在btrfs上花的时间看来太少了,Josef最近也没见他多发几个patch。

总之,对于btrfs只能审慎的观望。

Section #8 ocfs2 (华为沈灿泉)

我司的沈灿泉介绍了我们在ocfs2上做的工作,除了稳定性的增强外,我们还将ocfs2的重启机制改为将文件系统置为无效(即不可读也不可写)、支持dlm划分多分区、一个文件只允许被一个主机写(防止脑裂)。

目前我们还正在做支持多lun、dlm增加网络序列号、支持ATS等工作。后续还想支持SCSI Fence、集群的write back cache等。

ocfs2的maintainer及主要开发人员陆续离开Oracle后,ocfs2的开发和维护就基本就停滞了,而ocfs2在Oracle内够用了,也就不太关心了。

但我们在选用了ocfs2用来存放虚拟机镜像后,发现当压力和节点规模增大以及各种异常情况发生时,ocfs2问题多多,并且ocfs2也缺乏一些我们需要的功能,这些都只能由我们自己解决,从社区可以得到的帮助很少。

我们遇到的ocfs2的问题集中在dlm,这也是我们目前想加固dlm及使用ATS代替DLM的原因。

这里有个故事,Oracle招聘了一个人维护ocfs2,此人看了一段时间的ocfs2代码后,毅然离职。。这个故事大概可以告诉我们,文件系统的维护是一件很困难的事情。

这里还有一件事情,当我在CLSF组委会里提名灿泉参加会议时,有人觉得有些奇怪,因为他们看到往ocfs2社区发patch的是某几个人而不是灿泉。殊不知,是因为我司的SE经常是不写代码的,或者即使想写也无奈没有时间精力。

Section #9 Ceph (Ubuntu麒麟汪黎)

天河二号是准备选择Ceph作为存储方案的,不过我们好奇的问Ceph到底能不能在商用环境下用在PB级别的存储系统上,汪博和严正似乎都没什么信心。汪博自己只在32个节点上部署过Ceph,而计划将来是6000个节点。

Section #10 Fast Swap (Fusion-IO 李少华)

这是硬件又一次对内核发展的驱动。我们都知道Swap是一件非常耗时的事情,我们自己用浏览器、拷贝文件时也应该遇到因为swap而机器卡住的时候,所以我们总是想避免swap,例如之前提过的zswap。但另一方面,如果我们用高速SSD作为swap disk,那还怕什么呢。

但是真的这样做时,会发现内核有一些瓶颈阻碍了SSD发挥最好的性能。少华在这方面就做了不少工作,其中一部分进主线了,一部分还没有(甚至不大乐观)。

这些瓶颈包括一些锁的竞争、过多的TLB flush等等。

Section #11 From Industry: LSI (唐杰)

唐杰介绍了一些LSI的存储相关的产品:raid卡、flash控制器、nvram。

其他参会人员的CLSF report可供参考阅读:

https://blogs.oracle.com/linuxkernel/entry/clsf_clk_2013_trip_report

CLSF 2013讨论会纪要(一)

CLSF 2013讨论会纪要(二)

原文地址:https://www.cnblogs.com/lizf-kernel/p/3433945.html