為生產服務器選擇合適的Linux發行版
51CTO編者按:本文轉載自淘寶曹宇偉的博客:花開的地方。原文地址出于未知原因無法訪問,本文內容系RSS閱讀器中提取。以下為正文。
拋出這個問題,是因為之前與同事的爭論以及最近與同事的爭論——我可保持沉默,但不可以停止思考。
我想大多數有經驗的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存在的原因,所以還是有機會“都一樣”的,只是時間問題罷了。
第二,不關心OS層面,只關心應用,比如Apache、MySQL等。
不關心OS層面,有掩耳盜鈴的嫌疑。主要還是因為不了解“Linux發行版的發行商在發行的過程中做了哪些工作”。不然,你就不會認為OS層面不需要關心。當然,就不會抱怨為什么企業發行版不用最新的軟件(可能是由于嚴謹的態度,也可能是因為運營策略,也可能是因商業目的,可以肯定的是,追趕的太急,發行商的工作負何就會很大。與桌面版不同,安全穩定必須被放在第一位。),為什么發行版會有跨大版本升級的問題。也會理解為什么有的版本在裝服務器的時候偶爾會驅動不了RAID或者SCSI控制器從而發現不了磁盤無法安裝,或者偶爾會進入系統后發現識別不到網卡。這樣的煩惱,在使用企業版的時候,遇到的可能性會小很多。
所謂“都一樣”,跟沒回答一樣,不是誠懇的討論、解決問題的態度 。
正確的態度應該是什么樣的呢?“實事求是”、“務實”的做事態度。
Linus 本人在 《Linux系統管理手冊》中提出了選擇Linux發行版的意義以及幾個問題,覺得很客觀,很實事求是,很有道理:
“當用戶采用了一種發行版本之后,就是在某個特定發行商的做事方式上進行了投資。不要只看到軟件安裝以后的功能,而是要明智地考慮到,自己的單位和那家發行商在未來的數年里共事。”因此要取得一些重要問題的答案。
- 該發行版本能夠在今后5年內繼續存在嗎?
- 該發行版會有最新的安全補丁嗎?
- 該發行版會迅速發布更新軟件嗎?
- 如果我有問題,發行商會幫助我嗎?
而根據我的經驗,還有另個的兩個問題值得思考:
該發行版的第三方支持怎么樣?
- 比如服務器制造商的驅動支持是基于哪個發行版的?這個對于生產、管理通常很有用。
- 但是這些支持,通常不是必須的。就是說,沒有這些支持,系統也可以運行良好,只是可能會沒有辦法使用某些“高級”功能。服務器的功能不能極致發揮。
- 雖然這些支持往往也能被其他版本解決,或者被其他人解決,但仍然會是一件相當頭痛的事情。而且需要一個相對水平較高的Sa。并不是每個公司都具條這樣的條件。
- 通常服務器制造商只提供兩種Linux的支持,那就是RHEL和SUSE企業版。相信不久的將來,Ubuntu也將被支持。
假如是大型企業,那么必然要考慮:該發行版有沒有“批量部署”解決方案?(這個問題,貌似有第三方軟件可以解決,但是不知道效果如何,據說SystemImager很可靠。)
- RedHat 有 kickstart
- SuSE 有 yast
- Debain、Ubuntu 有 preseed
- 還有第三方解決方案 SystemImager:http://wenku.baidu.com/view/a6c3a98583d049649b6658d7.html
- 以及 Clonezilla : http://www.clonezilla.org/
思考了上面的問題,還要立足于自己的實際情況,下面的問題,都可能會遇到。
1. 這個發行版,熟悉的人多么?你需要一個能被廣泛接受的發行版本,而不是鮮為人知的版本,這樣便不會遇到招不到Sa的尷尬。當然,與其他同事溝通、合作起來,也會少很多麻煩。
2. 你需要廠家提供技術支持么?技術支持,可以不用,但是用的時候需要有的可用。當然,只要肯付費,沒人官方支持的,也有第三方支持。
3. 部署方便么?假如只有很少量的設備,那這個問題不關鍵。但是假如設備數量很多,特別是增長很快,那這個問題就會凸現。你需要一個可以“無人執守”自動部署的發行。當然通過第三方的解決方案,似乎所有的部署都可以無人執守。
4. 是企業級的么?不建議使用一個沒有經過嚴格測試的發行,也不鼓勵一味的追求最新。生產需要的是保證性能的同時保證安全和穩定。
5. 你使用的是高端的設備么?高端設備通常比較少見,因此也不像PC那樣被普遍兼容。一定要選擇硬件廠家支持的 Linux發生版,通常是 RedHat 和 SuSE,這兩個發行版是全球最大的兩家 企業Linux 發行商。可以確信,在未來不久的日子里,Ubuntu/Debian會成為第三個眾多硬件制造商支持的 企業Linux 發行版。但是在沒有支持之前,有待考慮。 假如不,那么你選擇的Linux發行版,有可難會發揮不了你的硬件的功能,甚至有可能會驅動不了某些硬件(內核是一樣的,但是發行版定制的內核卻是有差異的,甚至內核版本也是有差異的)。此時,假如非要使用其他發行版,將會花費自己額外的時間去解決這些問題,而此時,自身的技術水平將起到關鍵性作用。
好了,差不多到此已經把問題說明白了。
舉幾個例子,阿里集團(b2b、阿里云、淘寶網)使得的是 RedHat 企業版,騰訊使用則是 SuSE。
當然,當企業發展到一定時期,會自己定制發行版,也不是不可能。不過,聰明之舉,是在某發行版的基礎之上定制。而不是從零開始。
下面是一份網站使用Linux發行版的統計數據:http://w3techs.com/technologies/details/os-linux/all/all
CentOS |
|
||
---|---|---|---|
Debian |
|
||
Red Hat |
|
||
Ubuntu |
|
||
Fedora |
|
||
SuSE |
|
||
Gentoo |
|
||
Mandriva |
|
||
Turbolinux |
|
Debian的用戶這么多,是出乎我的意料的。使用Debian,第三方支持的問題比較雞肋。
說說第三方支持吧,我最近一直在做這方面的相關的工作。比如,你需要調整服務器的BIOS,你怎么做?假如你不想去現場,不想插顯示視,或者你有很多設備需要改BIOS,怎么辦?
這時,我們會要求第三方支持,支持可以在OS層面設置BIOS的工具(實際上,硬件提供商的網站上就有這樣的工具提供)。不要是以為這個問題很極端,肯定不止我們一家公司遇到過這個問題。
同樣的問題,假如你需要調整遠程管理卡怎么辦?同樣的需要第三方軟件支持。不需要到現場,不需要重啟系統。
而這種支持,官方通常只提供 RedHat和SuSE的,我個人認為Ubuntu很快也會被支持。好在這些需求,普通的用戶可能會遇不到,或者根本就不知道有這些功能可以使用。
當然,我們討論的論題是為“生產環境選Linux發行,而不是桌面”,假如是你自己PC或者筆記本上用的,那么請參考下面的兩篇文章:
選擇Linux需要考慮的十件事:http://os.51cto.com/art/200804/69907.htm
如何選擇最適合你的Linux發行版:http://www.kuqin.com/shuoit/20090507/50077.html
【編輯推薦】