IT部门应该如何选择一个标准的Linux发行版?

关于哪些Linux发行版适合生产服务器环境,哪些不适合,社区中存在很多争议。然而,很多争议似乎是基于信仰,很少有支持证据。 假设我们想选择一个Linux发行版作为标准(因为我们希望环境尽可能一致),那么哪些标准是重要的?如何确定不同发行版在这些标准上的表现如何?

4我希望其他人能向我解释一下他们是如何为自己的组织选择一个适合的Linux发行版的。我正处于这种情况之中,"常识"告诉我应该选择RHEL或CentOS,但除了商业支持之外,我还没有听到很多关于为什么其中一个更好的实际论断。 - wfaulk
http://serverfault.com/questions/53954/centos-vs-ubuntu - user9517
2个回答

我将分享一下我在几个不同领域担任技术工作者的经验...

(注意:这是一个关于红帽公司以及我如何在其中成长职业生涯的故事。)

我于2000-2002年开始专业使用Linux。这正是人们广泛采用红帽公司的Red Hat Professional Editions (6.x, 7.x, 8.0)时期。这些版本可以免费下载,也可以购买打包套装,它们很容易在电脑零售店中找到。

对我来说,这带来了一个好处,就是让爱好者和家庭用户与正在逐渐出现在企业中的相同的产品产生了共鸣。当时我的工作是将客户服务器系统从商业版的UNIX(HP-UX、AIX和SCO)迁移到红帽平台上。

节省的成本是惊人的!用$40k的康柏ProLiant Intel服务器替换掉价值超过$100k的HP9000 PA-RISC服务器在成本和性能方面是绝对的胜利。

那么,为什么选择红帽?

红帽是第一个进入这个市场的,获得了关键的商业、供应商和硬件支持。看到大型应用程序供应商将红帽作为目标平台使用,使交易达成。像我这样的业余用户能够轻松地将在家中培养的技能转移到工作环境中。社区正在壮大。Slashdot、Freshmeat和LAMP堆栈统治着!对于Linux来说,这是一个好时代。 到这个阶段,我负责开发和评估Linux发行版作为专有ERP软件解决方案的平台。我一直坚持使用Red Hat。偶尔我会尝试其他发行版(MandrakeSuSEDebianGentoo),但总是会遇到打包问题、硬件支持(服务器或外设)、社区(规模)或其他无法忍受的问题。 一个例子:我使用的是配备了Digi串行扩展PCI-X卡Esker VSIfax生产传真软件的Compaq/HP ProLiant硬件。后两者只支持Red Hat操作系统的驱动程序。在某些情况下,软件只以二进制或RPM形式提供,无法轻松在其他Linux变体上使用。 在信息技术世界中,势头至关重要
没有人想成为推荐最终被遗弃的“失败”解决方案或项目的人,所以你选择安全的选择。我管理着一个需要可靠运行并具有多层支持的技术堆栈。在那个时候选择不同的发行版只会是不负责任的。
我的红帽之蜜月在2003年以专业版软件的停产结束。Red Hat Enterprise Linux成为了替代品,但带来了很多问题...价格昂贵(订阅模式),可用性下降(用户群和社区缩小)以及对未来的普遍困惑... 我开始寻找替代方案,重新评估Gentoo、Debian和SuSE。然而,在我们的技术堆栈的所有组件上都无法得到正确的支持。我被迫继续使用红帽生态系统...由于Red Hat Enterprise Linux的巨大成本转移,我不得不长期运行一个经过高度修改的Red Hat 8.0,甚至超过了它的生命周期。直到RHEL克隆产品成熟(Whitebox Linux,后来是CentOS),我才准备真正摆脱我的标准配置。 Red Hat衍生版本的主要优势是和付费的RHEL版本具有二进制兼容性。甚至可以在RHEL和CentOS之间进行就地转换,反之亦然。直到我迈出下一步职业发展之前,我一直在使用类似RHEL的系统工作...

后来我发现自己身处高频金融交易行业,在那里我负责关键自动化交易系统的研发和Linux工程。这个世界强调的是速度,通过仔细的测试和调优实现。再次强调,硬件支持至关重要。我需要特定的网络卡专用硬件、服务器硬件或仅适用于RHEL或类似系统的应用程序库。即使在可以编译为其他Linux变体的情况下,也会涉及到社区因素。当我需要研究一个问题时,通常能在红帽Bugzilla报告的注释或评论中找到解决方案,或者有时,我会提交一个补丁或请求下一个版本的修复。

当我开始深入研究低延迟网络和内核调优时,我开始剖析原始的RHEL内核和RHEL MRG实时内核。我注意到在发布过程中有多少工作量...对于一个vanilla kernel.org内核来说,需要200多个补丁。阅读评论和提交说明。你可能会发现一些小细节,比如暴露sysctl参数或者应用更合理的默认值。Red Hat付钱给人们来修补、测试和解决这些问题。我没有看到其他Linux发行版有同样的承诺...再加上企业平台保证拥有真正的安全性、错误修复和后移支持,可以持续多年
最后我终于转到了一家几乎完全使用Gentoo服务器和桌面环境的金融公司...对我来说这简直是一个灾难。由于之前一直在使用Red Hat和CentOS,我在Gentoo环境中遇到了许多稳定性和管理问题。版本控制是最大的问题,但逐渐减少的社区支持和缺乏真实测试也是令人担忧的。为了满足第三方软件的需求,我开始将RHEL引入环境中... 但是问题出现了...我的开发人员习惯于Gentoo,他们习惯了对核心库和应用程序版本进行相对容易的升级。他们无法适应Red Hat Enterprise Linux固定的主要版本。开发和发布过程中充斥着关于为什么无法将GLIBC 2.7移植到RHEL 5.x上的疑问或者为什么某个编译器或库版本不可用的问题。当被告知在RHEL/CentOS的主要版本之间进行升级基本上需要进行全面重建时,他们对这个解决方案失去了很多信心。 在这一点上,我意识到红帽对于那些想要追求最前沿技术的开发人员来说进展得太慢了。RHEL 6.x 是一个非常需要和受欢迎的升级,但是当我开始面试那些订阅DevOps原则的初创公司和企业时,这个主题变得更加明显。

今天...
越来越多的开发人员和Linux用户来自于非Red Hat、非SuSE、非企业级Linux环境。

  • 他们使用Ubuntu或Debian...
  • 他们不必处理老式硬件或大型供应商支持的问题。
  • 他们从零开始编写自己的应用程序(自行支持)。
  • 虚拟化和云计算将硬件层抽象化,因此对奇怪的RAID控制器驱动程序、PCI-X外围设备或二进制分布式管理代理的担忧甚至不在考虑范围内。
  • 这些用户希望使用他们习惯的工具和用户空间。

所以存在冲突... 这些用户不明白为什么他们会受限于应用程序或库版本。老派管理员仍在适应新范式。看起来像是宗教信仰根源的论点实际上只是人们发展自己技能集的方式。

我今天看到了一则招聘广告,招聘一个非常高级的DevOps Linux工程师职位:

必须精通至专家级别的基于Debian的Linux发行版(Ubuntu和其变种可以接受。Red Hat勉强可以,但不是首选)。 所以我猜这两种方式都可以……我曾经放弃了一些工作机会,因为我将要管理的800台CentOS服务器被计划转换为Ubuntu。当然,Linux就是Linux……但我觉得我可能不会像我本可以那样有效。我曾经在Debian安装中遇到困难,希望使用基于RPM的发行版。我曾经就各种平台的优点进行过激烈的争论(通常把Gentoo排在最后)。 那么对于你的环境来说什么才是正确的选择呢?这取决于情况。我曾经在一些公司里,系统工程师主导决策,也有一些组织里开发人员为王。我认为最好的安排是开发人员和支持系统的人员在平台上达成一致。但除此之外,还要考虑长期支持、易用性、社区以及以最合适的方式适应你的应用堆栈。 一个有才华的开发人员应该能够在类似RHEL或Debian的环境中工作。而且,开发平台应该与生产环境相一致。从那里开始……

3@dyasny 很有趣听到Debian的观点。 - ewwhite
@ewwhite 你可能想要请sourceforge的管理员帮忙。你认识任何人吗? - dyasny
@dyasny 没有评论 :) - ewwhite
哇,我现在想要将我的服务器切换到RHEL!很棒的帖子。 - squareborg
4这位先生,这是我迄今在Serverfault上遇到的最好的帖子。我想我会把它打印出来放在书架上和我的工作台上。您回应了一个时代中系统工程师们的心声。真是太棒了,太棒了! - Soham Chakraborty
1@SohamChakraborty 哦,我只是感觉自己老了...但是今天,在这个网站上看到一则招聘广告后,我突然意识到,我当初选择使用Red Hat的原因与人们今天在他们的系统上要求Ubuntu等操作系统的原因是一样的。这是他们在桌面上熟悉的! - ewwhite
在桌面上,是的。我也在某种程度上赞同这种理念,但在服务器上几乎不适用。事实上,令人惊讶的是,RHEL严格遵循RFC标准,并成功地获得了所有供应商和硬件的支持。也许,我们应该在聊天中见面谈一谈 ;) - Soham Chakraborty

我目前在一个使用Linux超过十年的环境中工作。办公室里的每个人都在他们的台式机和服务器上使用不同的发行版。因此,选择发行版往往涉及一些事情,没有特定的顺序。
  • 历史 - 显然,像RedHat和Debian这样的系统已经存在很长时间了。因此,可以用“如果它没坏,就不要修理”这句格言来形容它们。如果软件在一个发行版上得到良好支持,升级会变得更容易。
  • 熟悉度 - 类似于历史,但我们每个人都有自己的偏爱。我从Debian开始入门,后来迁移到Ubuntu(当时是一个艰难的决定,因为我倾向于致力于一个社区)。相反,要记住如何在十几个不同的发行版上完成各种任务是一件麻烦事(更不用说那些自定义构建的发行版了)。
  • 支持 - 我主要迁移到Ubuntu是因为我欣赏他们在提供付费支持方面所做的努力。这是一个卖点,如果客户对长期运行系统有顾虑的话。类似于RedHat的做法(但当时RPM地狱正在进行中)。出于同样的原因,我们也有一些RedHat服务器。
  • 依赖关系 - 有些软件在某些发行版上更容易使用,仅仅因为相关的软件包更容易获取或构建。例如,RedHat上的oVirt就是一个例子。有些发行版上没有某些软件的软件包。你可以编译它,但如果另一个发行版上已经有了这个软件包,为什么还要自己编译呢?
  • 粒度 - Gentoo等发行版提供更细粒度的版本控制和软件切换控制。其他发行版以各种形式提供“固定版本”,但这仍然不如可控性和可靠性高。
  • 编译能力 - 虽然大多数发行版都可以从源代码编译,但有些发行版在这方面做得比其他发行版更好。这可能会产生影响,比如如果你的项目为现有库打补丁以实现扩展功能。
  • 美观度 - 有些发行版看起来更漂亮。每个极客都知道这只是花里胡哨的东西(而且现在可能可以将其作为Web应用程序完成),但有些客户对此感到惊叹,我们都知道这一点。
  • 稳定性 - 一些发行版流式传输“稳定”版本的软件,而不是“测试”、“实验”等版本。如果你知道你正在构建的版本最终会达到稳定性共识,这可能意味着很多。你可以在“实验”版本上开发,因为你知道当你的项目完成时,它将变成“稳定”并且可以依赖。
  • 软件包管理 - 如果你每天都在开发某个东西,并且它将一次性部署到数千台机器上,那么你可能希望有一种能够轻松构建、维护和跟踪这些系统上软件包的方法。
  • 一致性 - 这更多是针对“相同”的发行版的论点。当人们只需专注于一个发行版而不是几个发行版时,就会 这只是我脑海中关于选择每个系统的原因的一小部分。在这个决定中,我没有看到任何一个指导灯或对某个发行版的偏好。多样性和选择可以很棒,并为您提供一些快速启动项目的好选择,但它也可能成为绞索。确保您提前考虑到您将需要什么。计划系统的需求以及系统何时升级或退役。不要假设您将永远是维护者。

  • 而且第7点,对于那些在桌面上使用Linux的普通用户群体来说,美观确实是一个更重要的因素。 - Magellan
    3我还要补充一个可预测的发布计划。你不希望开始多服务器部署项目,结果下周就有新版本的发行版发布了。或者使用同样古老的发行版和陈旧软件包运行几年(咳嗽RHEL5/CentOS5),却没有明确的升级日期。例如:Ubuntu每6个月发布一个新版本,并在4月份每2年发布一次LTS版本。了解这些信息可以帮助你更好地安排项目和资源。 - Mxx