为生产服务器选择合适的Linux发行版

标签: Linux | 发表时间:2010-10-23 08:09 | 作者:洪川 Derek
出处:http://www.bsdmap.com

抛出这个问题,是因为之前与同事的争论以及最近与同事的争论——我可保持沉默,但不可以停止思考。

我想大多数有经验的Linux用户,会觉得这个问题不是问题,那么请不要急,待会儿我会让你知道这个问题为什么是个问题。

首先,在讨论这个问题之前, 我们一定要先了解自己的自身的条件:即我们自身的技术能力——假如我们有能力像RedHat、Google一样,自己跟踪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存在的原因,所以还是有机会“都一样”的,只是时间问题罢了。

第二,不关心OS层面,只关心应用,比如Apache、MySQL等。

不关心OS层面,有掩耳盗铃的嫌疑。主要还是因为不了解“Linux发行版的发行商在发行的过程中做了哪些工作”。不然,你就不会认为OS层面不需要关心。当然,也就不会抱怨为什么企业发行版不用最新的软件(可能是由于严谨的态度,也可能是因为运营策略,也可能是因商业目的,可以肯定的是,追赶的太急,发行商的工作负何就会很大。与桌面版不同,安全稳定必须被放在第一位。),不会疑问为什么发行版会有跨大版本升级的问题。也会理解为什么有的版本在装服务器的时候偶尔会驱动不了RAID或者SCSI控制器从而发现不了磁盘无法安装,或者偶尔会进入系统后发现识别不到网卡。这样的烦恼,在使用企业版的时候,遇到的可能性会小很多。

所谓“都一样”,跟没回答一样,不是诚恳的讨论、解决问题的态度 。

正确的态度应该是什么样的呢?“实事求是”、“务实”的做事态度。

Linus 本人在 《Linux系统管理手册》中提出了选择Linux发行版的意义以及几个问题,觉得很客观,很实事求是,很有道理:

“当用户采用了一种发行版本之后,就是在某个特定发行商的做事方式上进行了投资。不要只看到软件安装以后的功能,而是要明智地考虑到,自己的单位和那家发行商在未来的数年里共事。”因此要取得一些重要问题的答案。

  1. 该发行版本能够在今后5年内继续存在吗?
  2. 该发行版会有最新的安全补丁吗?
  3. 该发行版会迅速发布更新软件吗?
  4. 如果我有问题,发行商会帮助我吗?

而根据我的经验,还有另个的两个问题值得思考:

该发行版的第三方支持怎么样?

  • 比如服务器制造商的驱动支持是基于哪个发行版的?这个对于生产、管理通常很有用。
  • 但是这些支持,通常不是必须的。就是说,没有这些支持,系统也可以运行良好,只是可能会没有办法使用某些“高级”功能。服务器的功能不能极致发挥。
  • 虽然这些支持往往也能被其他版本解决,或者被其他人解决,但仍然会是一件相当头痛的事情。而且需要一个相对水平较高的Sa。并不是每个公司都具条这样的条件。
  • 通常服务器制造商只提供两种Linux的支持,那就是RHEL和SUSE企业版。相信不久的将来,Ubuntu也将被支持。

假如是大型企业,那么必然要考虑:该发行版有没有“批量部署”解决方案?(这个问题,貌似有第三方软件可以解决,但是不知道效果如何,据说SystemImager很可靠。)

思考了上面的问题,还要立足于自己的实际情况,下面的问题,都可能会遇到。

1. 这个发行版,熟悉的人多么?你需要一个能被广泛接受的发行版本,而不是鲜为人知的版本,这样便不会遇到招不到Sa的尴尬。当然,与其他同事沟通、合作起来,也会少很多麻烦。
2. 你需要厂家提供技术支持么?技术支持,可以不用,但是用的时候需要有的可用。当然,只要肯付费,没人官方支持的,也有第三方支持。
3. 部署方便么?假如只有很少量的设备,那这个问题不关键。但是假如设备数量很多,特别是增长很快,那这个问题就会凸现。你需要一个可以“无人执守”自动部署的发行。当然通过第三方的解决方案,似乎所有的部署都可以无人执守。
4. 是企业级的么?不建议使用一个没有经过严格测试的发行,也不鼓励一味的追求最新。生产需要的是保证性能的同时保证安全和稳定。
5. 你使用的是高端的设备么?高端设备通常比较少见,因此也不像PC那样被普遍兼容。一定要选择硬件厂家支持的 Linux发生版,通常是 RedHat 和 SuSE,这两个发行版是全球最大的两家 企业Linux 发行商。可以确信,在未来不久的日子里,Ubuntu/Debian会成为第三个众多硬件制造商支持的 企业Linux 发行版。但是在没有支持之前,有待考虑。 假如不,那么你选择的Linux发行版,有可难会发挥不了你的硬件的功能,甚至有可能会驱动不了某些硬件(内核是一样的,但是发行版定制的内核却是有差异的,甚至内核版本也是有差异的)。此时,假如非要使用其他发行版,将会花费自己额外的时间去解决这些问题,而此时,自身的技术水平将起到关键性作用。
6. 你自己可以承担风险吗?系统出错导致的问题,你可以解决吗?后果你可以承担吗?假如不,那么建议使用企业版。

对系统使用的越深,越细,越会觉是“发行版”是不一样的,尽管你可以把他们“整”得一样,但他们确实是不一样的,要把他们“整”一样,几乎等于“整”一个发行出来。

致此,我也有些疑惑了。不能说谁对谁错。应该说“从宏观上讲(应用层面),Linux发行都差不多,越宏观,越相似;从微观来讲(系统构架层面),他们又是不一样的,越微观,越不一样。但是到了代码级别以后,似乎又开始“一样”了。”

举几个现实中“选择”的例子,阿里集团(b2b、阿里云、淘宝网)使得的是 RHEL,腾讯使用则是 SuSE。河南网通使用的是SuSE以及RHEL,blogbus 使用的是CentOS(应该归于 RHEL 的范畴)。

“豆瓣”使用的是Gentoo Linux。这种使用源代码编译的系统曾经在Sa中风靡一时。不否认Gentoo是一个相当“好玩儿”和“磨练技术”的版本,但是要用好,就得有技术力量,并且Leader愿意将在“这件事儿”上花费精力才行,或者已经有一个相当熟悉Gentoo的Sa。

当然,当企业发展到一定时期,会自己定制发行版,也不是不可能。不过,很难让人相信,哪个发行版是“纯正”的。几乎都是Debian、RedHat、Slackware三大分支中的一员。

下面是一份网站使用Linux发行版的统计数据:http://w3techs.com/technologies/details/os-linux/all/all

CentOS
33.2%
Debian
26.3%
Red Hat
15.7%
Ubuntu
10.7%
Fedora
7.2%
SuSE
4.4%
Gentoo
2.1%
Mandriva
0.2%
Turbolinux
0.1%

Debian的用户这么多,是出乎我的意料的。使用Debian,第三方支持的问题比较鸡肋(最近发现HP、Dell的都开始支持Debian了,还是一直都有我没有注意到?)。

说说第三方支持吧,我最近一直在做这方面的相关的工作。比如,你需要调整服务器的BIOS,你怎么做?假如你不想去现场,不想插显示视,或者你有很多设备需要改BIOS,怎么办?

这时,我们会要求第三方支持,支持可以在OS层面设置BIOS的工具(实际上,硬件提供商的网站上就有这样的工具提供)。不要是以为这个问题很极端,肯定不止我们一家公司遇到过这个问题。

同样的问题,假如你需要调整远程管理卡怎么办?同样的需要第三方软件支持。不需要到现场,不需要重启系统。

而这种支持,官方通常只提供 RedHat和SuSE的,我个人认为Ubuntu很快也会被支持。好在这些需求,普通的用户可能会遇不到,或者根本就不知道有这些功能可以使用。(当然你问厂家要源代码,自己编译,应该也是可以的。但是又要花费自己的时间了,而且假如版本不一样,编译是否顺利,也会是一个问题。)

当然,我们讨论的论题是“为生产环境选Linux发行,而不是桌面”,假如是你自己PC或者笔记本上用的,那么请参考下面的两篇文章:

选择Linux需要考虑的十件事:http://article.pchome.net/content-615746.html

如何选择最适合你的Linux发行版:http://www.kuqin.com/shuoit/20090507/50077.html

相关 [生产 服务器 选择] 推荐:

为生产服务器选择合适的Linux发行版

- Derek - 花开的地方
抛出这个问题,是因为之前与同事的争论以及最近与同事的争论——我可保持沉默,但不可以停止思考. 我想大多数有经验的Linux用户,会觉得这个问题不是问题,那么请不要急,待会儿我会让你知道这个问题为什么是个问题. 首先,在讨论这个问题之前, 我们一定要先了解自己的自身的条件:即我们自身的技术能力——假如我们有能力像RedHat、Google一样,自己跟踪Linux以及开源社区,那么,我们完成可以搞个自己用的发行出来.

Tomcat 生产服务器性能优化

- - ITeye博客
增加JVM堆(heap). 线程池(thread pool)的设置. Tomcat原生库(native library). 第一步  – 提高JVM栈内存Increase JVM heap memory. 要更改文件(catalina.sh) 位于"\tomcat server folder\bin\catalina.sh",下面,给出这个文件的配置信息,.

移动互联网创业公司的服务器选择

- - 五四陈科学院-坚信科学,分享技术
以下内容由 [五四陈科学院]提供. 小公司,三五个人,扯开嗓子开干的情况下,不妨参考一下过去我们淌过的坑. 在中国,网络成本是比较贵的(包括托管费用). 分析你的目标用户,如果用户是特别集中在南方或者是北方,这能省些钱,多线机房还是很贵的. 同时,移动互联网,特别是中国特色的情况下,各种运营商挂js,各种基站网络不通,如果所在的机房在搜索引擎上一条记录都没有的话,那会很惨,基本上你的用户在手机上是很难过去的.

如何选择服务器操作系统(Linux/Unix)

- - 标点符
Linux的发行版有上百种,如何选择也是一种难题. 一、Ubuntu Desktop 和 Ubuntu Server. 这个是最方便,也是最快捷的方式. 如果刚开始使用Ubuntu,且不太熟悉命令行的可以选用Ubuntu Desktop来学习. 继而转为Ubuntu Server. 对于初学者,Ubuntu可以更好地上手,并且提供了很好提供了apt软件管理方式(这个是目前最好的软件管理方式),使用起来非常方便,同事Ubuntu的社区也非常的活跃,使用的人数也较多.

服务器操作系统应该选择 Debian/Ubuntu 还是 CentOS?

- - 知乎每日精选
早期,我们使用 Debian 作为服务器软件,后来转向了CentOS,主要原因如下:. 1、CentOS/RHEL的生命周期是7年,基本上可以覆盖硬件的生命周期,也就意味着一个新硬件安装以后,不用再次安装操作系统. 要知道重新折腾一个生产机是很麻烦而且有风险的事情. [2012.2.1]今天刚刚收到红帽子的通知邮件,RedHat 5, RedHat 6的生命周期,延长到10年,太牛叉了.

百万级运维经验四:服务器的选择和部署

- - CSDN博客系统运维推荐文章
对服务器的选择,我曾经盲目过. 流量大了服务器顶不住怎么办,我那时候的想法就是加配置,4核变8核,8核变16核,内存也加,4GB变8GB变16GB,为什么不加服务器呢,麻烦嘛,觉得提高服务器配置的效果也是一样的. 后来我才明白,这种想法是错误的,还是停留在个人电脑的思维. 我发现,增加了服务器配置并不能给我带来相应的性能提升,我对服务器和操作系统没有特别深的了解,我个人觉得原因如下:.

MySQL数据库开源软件版本 生产环境GA版本如何选择

- - MySQLOPS 数据库与运维自动化技术分享
很多技术朋友向我咨询过关于选择MySQL数据库软件产品的版本事宜,他们对于开源软件产品的版本选择没有头绪,不知道从何下手. 不过,我们本文主要是介绍开源数据库产品的版本如何选择,如何选择生产环境的MySQL数据库版本. MySQL数据库版本的选择需要经过那些工序. 顺道分享下我们DBA团队是如何为生产环境,选择合适的MySQL数据库版本.

kernel.org服务器遭入侵

- Lamo - Solidot
kernel.org网站首页发布公告,声称多台服务器在本月初(8月12日前)遭黑客攻击,他们在8月28日发现了入侵. 入侵者利用一位用户凭证获得了服务器根访问权限,他们正在调查黑客是如何提升权限的;系统启动脚本被加入了一个木马启动文件;ssh相关文件被修改. kernel.org声称,他们相信Linux kernel源代码库未受影响,因为git分布式版本控制系统的特性决定了它可以很容易注意到代码变化.

Ubuntu下赌ARM服务器

- Tim - Solidot
今日无数手机平板使用的低能耗处理器能否撑起未来的服务器市场. Canonical计划推出支持ARM架构的Ubuntu服务器版本. Ubuntu Linux并不是x86服务器市场的重量级选手,Red Hat才是. 但通过与ARM合作打造ARM服务器,Canonical正努力赢得更多市场份额. 计划于2011年10月发布的Ubuntu Server 11.10,将同步推出支持x86、x86-64和ARM架构的版本.

Windows 搭建VPN服务器

- 洋白菜 - iGFW
Windows XP搭建PPTP VPN. 普通用户,在家里也可以搭建自己的VPN. 需要将服务器端的电脑直接放置于外网访问下,若是ADSL拨号的话,可以用此电脑直接拨号,中间不接路由器. 若是接路由器的话,可以启用NAT(网络地址转换)中的DMZ,将该服务器IP地址填入此处,那么外网访问到本路由Wan口时,就会直接转到该服务器上.