在开源的世界里,一个软件版本的兴衰更替就如人的生老病死一样自然。ext4文件系统在Ubuntu与Fedora率先启用做为默认的文件系统一年多后,如今已经成为主流发行版的默认文件系统。ext4的成熟与稳定也意味着它的前任ext3与ext2将逐渐淡出历史舞台。当然从用户角度来说,只要有一个稳定可用的文件系统,他们通常不太关心这些旧的文件系统是否还保留着。但是从kernel开发人员的角度来看,这些文件系统的代码在kernel里存在,就必然要花时间与人力来维护。当ext4还不太成熟时,保留这些旧的文件系统是必要的,当ext4成熟稳定后,或许总有一天我们要跟它们说再见。
最近SUSE的Jan Kara就率先提出了这个问题,他建议在即将召开的kernel存储,文件系统与内存管理的峰会上讨论是否可以在内核中去掉ext2与ext3文件系统实现的那部分代码。Kara的问题是:是否应该丢弃这部分代码,如果是的话,在什么条件下丢弃它们是没有问题的。
对于这样的问题,有的用户也许会提出抗议,因为至少在目前看来,仍然有大量的ext3甚至ext2文件系统存在,从kernel里去掉这部分代码显然不合适。但是需要注意的一点是,从kernel里移除这部分代码并不等于从kernel里移除对ext3与ext2的支持,ext4在设计及实现的时候充分考虑了后向兼容性,使用ext4提供的工具,可以mount ext3文件系统进行读写,并且在umount后,仍然可以使用ext3进行mount,所以并不会因为去掉ext2/ext3的代码而使得大部分ext3/ext2的文件系统无法工作。
ext4这样的设计是相当值得称赞的,特别是如果你经历过那些令你头痛欲裂的升级(比如从ipv4到ipv6,或从python2到python3),你会体会到保持后向兼容性是多么的贴心与方便。既然这样,也许用户会问,提出这样的问题还有必要吗,直接去除这部分代码就行了。
对此有开发人员表示,仍然有理由继续保持这部分代码,其中最关键的一点是,虽然ext4后向兼容ext3/ext2,但这部分功能并没有像ext4本身的功能那样经过充分的测试,尤其是ext3的部分选项。此外ext4虽然稳定了,但并不表示ext4的开发就此为止。ext4仍然有可能进行一些大的改动,而这样的改动有可能引发不稳定,尤其是后向兼容的那部分功能。
不过这并不表示开发人员希望永远保留ext2/ext3代码,有开发人员指出相当多的ext2代码里存在着与今天的代码不一样的实现方法,这些旧的实现方法非常有可能引入bug,但可惜没人有兴趣来清除这些问题,因为这么做没有明显的价值。此外ext2的代码量相对较少,所以相当一部分学习kernel文件系统甚至编写新文件系统的开发人员有可能将ext2做为一个范本,但显然ext2并不是一个好的例子。
最后的结果是开发人员都赞成,一旦ext4未充分测试的后向兼容功能经过了充分的测试,那么去除ext2/ext3代码将是一个自然的结果,因为使用旧文件系统的用户将获得更好的性能,开发人员也会减轻代码维护的负担从而更好的支持与开发ext4。这是一个双赢的结局,为此我们得感谢ext4保持后向兼容的设计以及开发人员辛勤的工作。
Source:LWN
转自:http://fosschef.com/2011/02/say-goodbye-to-ext2-ext3/
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/42469.html