我想大多数有经验的Linux用户,会觉得这个问题不是问题,那么请不要急,待会儿我会让你知道这个问题为什么是个问题。 首先,在讨论这个问题之前, 我们一定要先了解自己的自身的条件:即我们自身的技术能力——假如我们有能力像RedHat、Google一样,自己跟踪Linux以及开源社区,那么,我们完成可以搞个自己用的发行出来(参考专题:制作自己的Linux发行版)。 必须承认,每个人都是有局限性的。开源社区充斥着技术狂热分子,甚至狂热到失去理智,依然一副无所不能、唯我独尊的架式——恐怕我的论调会遭受攻击。 对于“选择发行版”这个问题,下面的局限性会成为“一叶障目”的那片树叶。 1. 做为一名Sa,只熟悉某一种Linux发行版。把自己不熟悉当成“不好用”,以自己的喜好为准。 2. 做为一名Sa,管理的设备数量有限。数量有限,不会思考“效率”的问题。你管理几十台,和管理几百台、几千台、几万台甚至更多,所要面对的主要问题,会发生转变。 3. 做为一名Sa,管理的设备比较低端。设备低端,通常不需要思考“第三方支持”的问题。 4. 公司只有你一名Sa。不用与他人沟通、合作,不会思考和别人“统一习惯”、乃至“培训新人”的问题。 5. 做为一名程序员,根本不会从Sa的角度思考问题。“都一样”等于没有观点。 6. 做为一名程序员或者一名熟悉各个发行版而没有没有管理过大规模、高端设备的Sa,口气大,一副无所不能、牛B哄哄的样子。不实事求是地面对问题,不是解决问题之道。 7. 你只是一位桌面用户。完全不知道我们在讨论什么! 首先要驳斥的,是说“所有发行版都一样”的人。通常这类人是“程序员”——要么是根本不会从Sa的角度思考问题,要么是牛B哄哄;或者是熟悉各种Linux发行版的Sa,但是却只管理着为数不多的服务器,而且这些服务器还比较普通,极有可能还是自己攒的兼容机,并且极有可能公司只有一个Sa。 之所以会这样,正是因为局限性。程序员所要表达的是“我不关心底层是什么Linux发行版”,或者是“什么版本我都能应付”。而Sa表达的是“什么版本我都会用”,“我不在乎你让我部署什么版本”。 持“都一样”观点的人的依据是什么呢? 第一,因为Linux内核是开源的,Linux发行版里集成的软件绝大多数也都是开源的,并且必须是开源的。源材料是一样的,所以完全可以“都一样”。 发行商做的事情,从外面看就像是打包商,将散落在各处的开源软件、GNU工具集合到一起。可我们忽略了,即使如此,发行版里的集成组合也仍然是 不尽相同的。当然,你可以自己搞得相同,但是那超出来了我们所说的“发行版”的范畴。认为Linux各发行版都一样的前提是,自己有时间、有精力、有能力处理所有的问题,自己有能力和时间来做发行商的事情,让他们变得一样或者来解决掉自己所有可能遇到的的问题。时间、精力和能力,缺一不可。 举几个例子。在RedHat 9的时代,内核还是2.4的时候,LVS还只是内核的一个补丁,要想使用它需要自己重新编译内核,并且客户机上,也需要额外的打一个可以用来关闭arp影 响的补丁,而当时的SuSE发行版,已经将LVS功能集成到了自己的发行里,不需要自己动手来做这个事情。另一个是reiserfs 文件系统的支持,记得RedHat 9同样需要自已来编译内核才能支持,而当时的SuSE已经集成了。 技术狂热者,会因为这样的挑战而欣喜若狂,初学者也会在鼓动之下跃跃欲试……但是不要忘了,不要在生产环境里做实验,并且要注意考虑风险(编辑注:参考系 统运维秘诀的技术篇)。 另一件案例是因为某种原因将原来的系统换成另一个,更糟的是换到另一个不同的体系,比如从RedHat换到Debian或者从Debian换到 RedHat。我们知道Debian沿用的是BSD风格,RedHat沿用的是System V风格,虽然发展到今天,已经互相融合了许多特性,但是还是有一定差别的。后果就是,Sa没有反对,因为Sa曾经“玩”过N个不同的版本,相信即使遇到问 题,也可以自己解决。可实际上,这已经提高了成本,Sa有可能需要查资料才能完成之前能很熟练完成的工作,另外极有可能将习惯带过来,想当然,并引发事 故。而对系统不是特别熟悉、精通的开发人员,就更郁闷了,可能连如何启动服务都不知道……(开发需不需要有权力登录服务器,该不该有权力重启服务,在这里 不讨论)。 这些例子都说明了,发行版还是有差别的。而差别的本质是由于 时间、和技术能力的限制——因为Linux是开源的,大家的源材料是一样的,并且由于GPL的保护,即使是某发行商做了修改,做了优化,那么发行之后,也 仍然是要公开源代码的——这就是CentOS存在的原因,所以还是有机会“都一样”的,只是时间问题罢了。 |