IT部门应该如何select标准的Linux发行版?

有许多社区对Linux发行版适用于生产服务器环境感到满意,但是这种感觉似乎没有宗教信仰,很less提供支持性证据。

假设我们试图select一个Linux发行版进行标准化(因为我们有兴趣使自己的环境尽可能保持同质化),那么什么样的标准很重要,以及如何确定不同的发行版如何满足这些标准?

我目前在使用Linux十多年的环境中工作。 办公室里的每个人都在桌面和服务器上使用不同的发行版。 因此,分配的select倾向于围绕许多事物而不是特定的顺序:

  1. 历史 – 很明显像RedHat和Debian这样的系统已经存在很久了。 因此,可以使用“如果没有破坏,不修复”的格言。 如果软件在发行版上得到很好的支持,升级变得更容易。
  2. 熟悉 – 类似历史,但是我们都有我们的最爱。 我削减了Debian的工作,并迁移到Ubuntu(当时是一个艰难的决定,因为我倾向于一个社区)。 相反,要记住如何在十几个不同的发行版上做事情(更不用说从头开始创build)是一件很痛苦的事情。
  3. 支持 – 我迁移到Ubuntu主要是因为我赞赏他们正在做什么提供付费支持。 如果客户长期担心系统运行的话,这是一个卖点。 类似于RedHat的方法(但当时RPM正在进行)。 由于这个原因,我们也有许多RedHat服务器。
  4. 依赖关系 – 一些软件更容易在一些发行版上使用,因为依赖软件包更容易获取或构build。 作为例子,这将是RedHat的oVirt。 在某些发行版上没有一些软件包。 而且你可以编译它,但是为什么如果这个软件包在另一个发行版上呢?
  5. 粒度 – 像Gentoo这样的发行版可以更好地控制版本控制和软件交换粒度。 其他发行版以各种forms“钉住”,但仍然不可控或可靠。
  6. 绑定 – 虽然可以从大多数发行版本的源代码进行编译,但是一些发行版比其他发行版更好。 例如,如果您的项目为扩展function修补现有的库,这可以产生效果。
  7. 漂亮 – 一些发行版只是更好看。 每个极客都知道这只是一个松散的东西(而且这些天你可能会以一个networking应用程序的身份逃脱),但是有些客户却被这个东西所吸引,我们都知道。
  8. 稳定性 – 一些发行版“稳定”版本的软件,而不是“testing”,“实验性”等等。这可能意味着很多,如果你知道你正在build立的版本将最终达成一致的稳定性。 你可以在“实验性”的基础上发展,知道当你的项目完成的时候,它会达到“稳定”,并且很好的依靠。
  9. 软件包pipe理 – 如果你每天都在开发一些东西,而且它将一次性发送到1000台机器,那么你可能需要一些能够在这些系统中轻松地构build,维护和跟踪软件包的东西。
  10. 一致性 – 对于同一个发行版来说,这更像是一个争论。 当人们可以把注意力集中在一个发行版而不是几个发行版上时,犯的错误就会减less(并且安全性的错误更less)
  11. 可预测的发布时间表 – 如果您想确保您的软件保持支持状态,则计划的升级将提供某种types的稳定性。
  12. 安全性 – 一些发行人拥有积极的安全团队,他们的工作是立即对任何批准的软件包中的真正安全风险做出响应。

这些只是我头上的一些事情,关于select每个系统的原因。 在这个决定中,我没有看到任何一个人指导一个发行版或者更喜欢一个发行版。 多元化和select可以是很好的,并为您提供一些非常好的select,以便快速启动一个项目,但这也是可以挂你的绞索。 确保你提前想到你将需要什么。 规划系统的需求以及系统何时升级或退役。 不要以为你永远是维护它的人。

我将分享我作为一个技术专家在几个不同领域的经验…

(注意:这是一个关于红帽的故事,以及我如何在专业上成长)

我在2000 – 2002年开始专业从事Linux的工作。 这是在红帽和红帽专业版(6.x,7.x,8.0)的广泛采用期间。 这些可以免费下载以及盒装套装。 他们很容易在电脑零售店find。

对我来说,这有利于吸引业余爱好者和家庭用户使用与企业中出现的产品相同的产品。 我目前的工作是将客户服务器系统从商业联合(HP-UX,AIX和SCO)转移到红帽平台。

节省的成本是相当可观的! 用4万美元的康柏ProLiant英特尔服务器取代价值10万美元的HP9000 PA-RISC服务器,在成本和性能方面是绝对的胜利。

那么,为什么红帽?

红帽是第一个进入这个市场,获得关键业务,供应商和硬件支持。 看到大型应用程序供应商使用红帽作为目标平台来达成交易。 像我这样的爱好者用户可以轻松地将家中的技能转移到我们的工作环境中。 社区正在成长。 Slashdot , Freshmeat和LAMP堆栈统治! 这对于Linux来说是个好时机。

至此,我负责将Linux发行版的开发和评估作为专有ERP软件解决scheme的平台。 我坚持与红帽。 每隔一段时间,我都会尝试使用另一个发行版( Mandrake , SuSE , Debian , Gentoo ),但会发现与打包,硬件支持(服务器或外设), 社区规模)或其他交易断路器有关的问题。

举个例子:我使用的是配有Digi串行扩展PCI-X卡和Esker VSIfax制作传真软件的 Compaq / HP ProLiant硬件。 后两者只有驱动程序支持红帽操作系统。 在某些情况下,软件仅以二进制或RPMforms交付,不能在其他Linux变体上轻松使用。

信息技术世界的势头很重要
没有人希望成为推荐失败的解决scheme或最终成为孤儿的项目的人,所以你坚持安全的select。 我正在pipe理一个需要可靠工作的技术栈,并且有几层支持。 在这一点上select一个不同的分布就可以了。 是。 不负责任的。


红帽的蜜月在2003年结束了我的软件的专业版本中断 。 红帽企业Linux是替代品,并带来了相当多的包袱…成本(昂贵的订阅模式),可访问性(缩小用户群和社区)以及对未来的普遍困惑…

我开始寻找替代品,重新评估Gentoo,Debian和SuSE。 我无法在我们的技术堆栈的所有组件上获得正确的支持。 我不得不坚持使用红帽生态系统……由于与红帽企业Linux相关的巨大成本转移,最终我运行了一个经过高度修改的Red Hat 8.0,这个Red Hat 8.0已经超过了其使用期限。 直到RHEL克隆成熟( Whitebox Linux ,后来, CentOS ),我才准备好了离开我的标准。

红帽衍生产品的主要优势在于与已付费的RHEL版本二进制兼容。 甚至可以在RHEL和CentOS之间执行就地转换,反之亦然。 我继续使用类似RHEL的系统,直到我下一个职业生涯…


后来我发现自己处于高频金融交易行业,在那里我负责关键自动交易系统的研发和Linux工程。 通过仔细的testing和调整,这个世界的重点是速度 。 同样,硬件支持是关键。 我有特定的网卡 , 专门的硬件 ,服务器硬件或应用程序库,只有经过RHEL或类似RHEL系统的authentication。 即使在其他Linux变体可以编译的情况下,也会出现社区因素。 当我需要研究一个问题的时候,在红帽Bugzilla的报告中,往往是一个可以追溯到笔记或者评论的问题,或者有时候我只是提交一个补丁或者下一个版本的请求。

当我开始深入研究低延迟networking和内核调优时,我开始分析股票RHEL内核和RHEL MRG实时内核。 我注意到在发布版本中有多less工作…对一个vanilla kernel.org内核有200多个补丁。 阅读评论和提交笔记。 你可能会暴露一些小的东西像sysctl参数,或者更适合的理性默认值。 红帽支付人们补丁,testing和解决这些问题。 我没有看到来自其他Linux发行版的相同承诺…添加这样一个事实,即企业平台保证有真正的安全性,bug修复和backport支持多年


于是我最终搬到了另一个几乎全是Gentoo的服务器桌面上的金融公司……这对我来说是一场灾难。 来自Red Hat和CentOS的世界,我遇到了Gentoo安装程序中的大量稳定性和pipe理问题。 版本控制是最大的问题,但社区支持的减less以及缺乏真正的testing也是令人担忧的问题。 我开始将RHEL引入到环境中,因为我们的一些第三方软件需要它…

但有一个问题…我的开发人员习惯了Gentoo,并且具有相对简单的核心库和应用程序版本的升级path。 他们无法适应红帽企业Linux标准化的固定主要版本。 开发和发布过程中存在的问题是为什么GLIBC 2.7无法移植到RHEL 5.x上,或者为什么某些编译器或库版本不可用。 当被告知主要版本的RHEL / CentOS之间的升级基本上需要完全重build时 ,他们对该解决scheme失去了很大的信心。

在这一点上,我意识到,对于那些想要在stream血/领先的开发者来说,红帽正在变得太慢。 RHEL 6.x是一个非常需要和受欢迎的升级版本,但是一旦我开始采访采用DevOps原则的创业公司和公司,这个主题就变得更加明显了。


今天…
越来越多的开发人员和Linux用户来自非红帽非SuSE非企业Linux环境。

  • 他们使用Ubuntu或Debian …
  • 他们不必处理老派硬件或大厂商的支持。
  • 他们从头开始编写自己的应用程序(自我支持)。
  • 虚拟化和云计算抽象了硬件层,所以担心时髦的RAID控制器驱动程序,PCI-X外围设备或二进制分布式pipe理代理甚至不在考虑之列。
  • 这些用户需要他们习惯的工具和用户空间。

所以有冲突…这些用户不明白为什么他们会被限制在应用程序或库版本。 老学校行政人员仍在适应新的范式 。 似乎扎根于宗教的争论实际上只是人们如何发展其各自技能的function。

我今天看到了一份DevOps Linux高级工程师的招聘广告,内容是:

必须熟练使用基于Debian的Linux发行版(Ubuntu和各种版本,红帽可以通过 ,但不是首选)

所以我想这两种方法都有效…我已经离开了工作机会,因为我将要pipe理的800个CentOS服务器将被转换为Ubuntu。 当然,Linux是Linux的……但是我并不觉得自己会有效……我已经摸索到了Debian的安装,并希望基于RPM的发行版正在被使用。 关于各种平台的优点,我曾经有过激烈的争论(通常把Gentoo放在列表底部)。

那么什么是适合你的环境? 这取决于。 我一直在系统工程师推动决策的公司,以及开发者都是王者的组织。 我认为最好的安排是开发者和支持系统的人们在平台上达成一致。 但除此之外,请考虑长期支持,可用性,社区以及以最合适的方式适应您的应用程序堆栈的内容。

有才华的开发人员应该能够在类似RHEL或Debian的环境中工作。 而且,开发平台应该反映生产环境。 你从那里走