伺服器作業系統應該選擇CentOS還是Debian/Ubuntu

來源:互聯網
上載者:User

標籤:

首先的首先,我想請各位玩家,你們不要自己最近新玩上什麼就覺得什麼好,然後大肆的推薦什麼好不好!負點責任好不好!人家是伺服器,有些時候選錯一個發行版本會痛苦死一批人!

是,你現在終於發現有個版本叫 Ubuntu 了,好爽啊,那麼多包,隨便 apt-get , 3萬個包躺在倉庫裡面不用編譯。好爽啊!幾乎所有軟體都有最新版本用!唉?過兩天你發現 Ubuntu 原來是從 Debian 來的, Debian 才叫牛啊,完全社區運作,包的數量一點都不少啊。再過兩天發現 Gentoo 啦,哇塞,牛啊!效能的極致最佳化,編譯編譯再編譯,configure , configure 再 configure ,精簡到極致。再過兩天 Gentoo 玩膩了,不就是編譯麼~ 唉? 原來還有 Arch 啊,這個不錯啊,想編譯的編譯,不想編譯的也有預設包。然後2個月沒 pacman 更新過的系統,更新一下全掛了。

你的意識形態,走在任何一個階段都認為這個階段是最好的選擇。但事實並不是這樣的,這隻是你的興趣而已。

MINOLTA DIGITAL CAMERA

要討論這個問題,先要知道兩大發行版本的區別在哪裡。RedHat 和 Debian 。
一、版本定義

RedHat 是由紅帽公司維護的發行版本。其 RedHat 9 是最後一個以 RedHat 為名的發行版本。在 RH9 之後,版本開始分為社區維護的 Fedora 和 企業使用的 EL。而我們所說的 CentOS X 就是從 RHEL X 編譯過來的。所以本質上, CentOS 的目標使用者,就是企業的伺服器。

CentOS 是有 release 概念的,何為 release 概念?當某個版本定下時,其絕大多數軟體包,包括 Kernel 在內,都已經確定了版本。在該 release 下,沒有特殊情況,大版本號碼不發生變化。

舉例, CentOS 6 某個 Kernel 版本:

2.6.32-358.el6.x86_64

2.6.32 為 kernel 版本號碼,358 為打包版本號碼,打包版本表示該包第幾次打包。對於 RHEL 來說,一個 kernel 打包個 500 700 次是很正常的事情。

再比如一些軟體,1.1.3 是版本,如果該軟體自身的定義,最後一位是 bugfix 版本,倒數第二位是功能版本,那麼你在 RHEL 裡面,很少會看到功能更新!通常只會看到 bugfix 更新!也就是只會看到小版本號碼更新。

Debian 是由社區維護、貢獻的發行版本,其從選包、打包、都是由社區組織,分散行動的。

Debian 是沒有真正意義的 release 概念的。 Debian 有眾多倉庫,stable,testing,unstable ,experimental. Debian 組織系統的方式是,一個軟體先進入 experimental, 放一段時間,有 bug 修 bug,沒 bug 了,過段時間挪入 unstable ,如此迴圈最終挪到 stable 裡面。所以在這種情況下, Debian 的系統中,是沒有一個穩定版本的概念。今天你用 kernel 3.2.1-87 ,明天就給你更新到 kernel 3.3.2-5 。

——– 補充內容 ——-

我覺得我已經把我所謂的 release 概念解釋的很清楚了,但是評論裡面還有人在和我說 Debian 是有 release。我說的 release 不是那種自己劃個時間軸,叫個名字的概念。而是版本維護的概念。

@劉世偉 說 Debian 也是這樣的,那好吧,我證明給你看一下。

你從這裡 Debian — 在 wheezy 中的 linux-image-3.2.0-4-amd64 軟體包詳細資料 可以拿到現在 Debian stable 的 Linux kernel 打包,下載下來,解壓縮,在

usr/share/doc/linux-image-3.2.0-4-amd64 目錄下面有一個 changelog. Debian ,grep 一下:

grep wheezy changelog.Debian
linux (3.2.57-3) wheezy; urgency=medium
linux (3.2.57-2) wheezy; urgency=medium
linux (3.2.57-1) wheezy; urgency=medium
linux (3.2.54-2) wheezy; urgency=high
linux (3.2.54-1) wheezy; urgency=high
linux (3.2.53-2) wheezy; urgency=high
linux (3.2.53-1) wheezy; urgency=medium
linux (3.2.51-1) wheezy; urgency=low
linux (3.2.46-1+deb7u1) wheezy-security; urgency=low
linux (3.2.46-1) wheezy; urgency=low
linux (3.2.41-2+deb7u2) wheezy-security; urgency=highl
inux (3.2.41-2+deb7u1) wheezy-security; urgency=high

起碼在 wheezy 裡面(stable) 裡面,他從 3.2.41 走到了 3.2.57 , 同時…… 你們可以看到 每個版本也就打包 1-2 次,1-2次啊!而且 Debian 的 unstable 走到 stable 真的就是隨便走走的。

linux (3.2.41-2+deb7u1) 是第一個 stable 版本,他的上一個版本是

linux (3.2.41-2) unstable ,好,3.2.41 第二次打包,加了一次 patch 就變成 stable 了

linux (3.2.41-1) unstable , 得,41 就打了一次

linux (3.2.39-2) unstable , 39 也就打兩次。

從這個過程,你可以看出, Debian 總體上,還是在跟著 Kernel Source 的,為啥?沒人啊!靠零散的人打 patch 還不如依賴 Kernel 本身的小版本更新。
RedHat 呢?

放一個 RHEL 6.4 的 Release Note

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.4_Technical_Notes/kernel.html

RHEL , 是不跟 kernel source 的小版本號碼的,自己整合 bugfix ,主要是安全相關的補丁。
為什麼不跟 kernel source 呢?

主要還是目標使用者的不同,就像我下面驅動這塊要解釋的。RHEL 的目標使用者,是企業的 Server 的,他的 Kernel 裡面,已經太多的東西被替換掉了。磁碟、網卡、各種各樣的驅動。而 Kernel source 儘管只走小版本號碼,還是不太靠譜的。頻繁的拿過來風險也大。

kernel 其實走到 2.6 以後,就沒有一個真正穩定的概念了。反正就是一路往前走。當然 2.6.32.xx 的確是以 bugfix 為主的。但是這個量太大了,各種各樣雞毛蒜皮,RHEL 不是全都拿進來的。

你們一定要和我爭論版本的問題,行,我不和你們爭, Debian Stable 是有版本的~ 你們滿意了?這種一個 kernel 打包 2次的狀態,你們愛用就用好了。無所謂的。

但是有 版本的也只是 stable,testing 我可從來沒見過。

說實話,我真的花了心思想多找一點 Debian 的資訊,

11年進入 stable 的 6.0 , 最近確實還有一個更新,在 08 Apr 2014 。

http://metadata.ftp-master.debian.org/changelogs//main/l/linux-2.6/linux-2.6_2.6.32-48squeeze5_changelog

09年發布的 lenny 也就是 5.0 ,根本已經連資訊都很難找了。如果誰能找到 lenny 麻煩給一個 kernel 的 changelog

—– 補充結束 ——-

而其繼承者 Ubuntu ,他是有 release 概念的,比如 9.04 ,10.06 等等,當他確定了 release 之後,他也不會在這個版本中做太大的版本變化。

但是問題是,他學到了 CentOS 的形,沒有學到 CentOS 的精華。為什麼?因為他又想追求新(一年兩個版本),又想學人家吃伺服器市場。這是完全相互矛盾的一件事情。

新,好辦,只要跟著 Debian 走,experimental 倉庫裡面永遠是最新的東西。拿過來,測試測試,重打包,發布!

穩定?( Ubuntu -Server) 這就難了,這需要不斷的人力投入, Debian 自然不會幫你做這件事。自己做? Ubuntu 嘗試了幾次,目前我沒看到成功。幾乎都是草草放棄。
二、維護的力量

你們知道什麼叫維護一個伺服器用的發行版本麼?

CentOS 4.0 2005-03-09

CentOS 4.9 2011-03-02

6年

Ubuntu 8.04 LTS April 24, 2008

Ubuntu 8.04.4 LTS January 28, 2010

1年9個月

你說好的 LTS 呢???

Ubuntu 10.04 LTS April 29, 2010

Ubuntu 10.04.4 LTS February 16, 2012

說好的 LTS 呢?

說 End of the Date 是3年整就是一個笑話,只要下個 release 一出,上個 release 收到的更新數量就可憐。

這才是 RedHat 的實力!你只要用我的發行版本,你不用有後顧之憂! Ubuntu 呢?開玩笑,即使是 LTS,在新版本出來以後 LTS 幾乎不更新好麼。補丁?從來沒見過!也就是 LTS 的真正壽命也就 6個月-1年。你敢用?你敢給你們公司用?

某天某個軟體爆出類似最近 openssl 的漏洞,用 CentOS 5 的使用者第二天拿到了升級的 rpm。用 Debian 的使用者收到了一個大版本更新,同時由於依賴關係必須更新 glibc, kernel 等等包。用 Ubuntu 的使用者收到官方回複:“apt-get dist-upgrade”

這就是這幾種發行版本在維護上的區別。
我們再說回 RHEL,很多人不懂,以為 Ubuntu “新”,RHEL “老” 。

你的伺服器上有一塊 Broadcom 的網卡, CentOS 6(2.6.32-358.el6.x86_64) 使用者 modinfo 了一下

filename: /lib/modules/2.6.32-358.6.1.el6.x86_64/kernel/drivers/net/tg3.ko
firmware: tigon/tg3_tso5.bin
firmware: tigon/tg3_tso.binfirmware: tigon/tg3.bin
version: 3.124

Debian testing(3.12-1) 使用者 modinfo 了一下

filename: /lib/modules/3.12-1-amd64/kernel/drivers/net/ethernet/broadcom/tg3.ko
firmware: tigon/tg3_tso5.bin
firmware: tigon/tg3_tso.bin
firmware: tigon/tg3.bin
version: 3.133

你知道 http://kernel.org 的最新的 2.6.32 帶的是哪個版本的 tg3 驅動麼?

#define DRV_MODULE_VERSION "3.102"
#define DRV_MODULE_RELDATE "September 1, 2009"

CentOS “老”麼?誰在將最新的驅動打入老的 kernel?誰在測試新驅動與老 kernel 的相容性?RH啊!!這些都是人力啊,這些都是財力啊。

RH 在保證穩定、相容的同時,儘可能的給伺服器使用者最全的裝置匹配,最新的驅動支援。而這一切!你都不用擔心穩定性、相容性,因為 RH 沒有更新大版本,沒有帶來 龐大 feature 的更新。
還有一個例子:

google RFS patch in linux kernel Linux 2.6.35 中的 RPS 功能。

這簡直就是 Linux 伺服器使用者夢寐以求的功能好不好,你不用再擔心多核CPU被浪費,你不用花很多錢買昂貴的多 irq 網卡。但是要 2.6.35 才有哦~

但是你不用擔心, CentOS 6 (2.6.32) 已經將RPS整合進 2.6.32 的核心中了。

你看到 Ubuntu 做這種事情了? Ubuntu 在忙什麼?在忙著今年再發一個版本啊!

RHEL 為什麼做?因為他的使用者是伺服器!RPS 這種事情PC根本就用不到好不好。

我回到最開頭。我也用 Ubuntu 做過產品,雖然不是伺服器。但是最後的結果並不好。我聽說過一個同事的上家公司用 Ubuntu 做伺服器,千層級的量。聊了一下發現和我預測的差不多,痛苦不堪。
基本的痛苦流程是這樣的

遇到一個問題->發現只有更新軟體版本才能解決->這個自己當前的版本已經不提供該軟體版本->發現自己編譯不過,依賴太重 ->決定 dist-upgrade -> 發現需要跨度N個 release -> 測試 dist-upgrade -> 10台機器,2台成功,8台失敗,失敗的現象不同 -> 痛苦的解決各種問題-> 成功 dist-upgrade -> 發現公司業務程式需要重新編譯->與開發人員溝通 解釋升級的重要性 -> 開發人員重新調試、測試一些列用到的庫的新版本->交付新版本

CentOS 使用者基本是這樣的:以下是最近真實對話

“xxx,新聞你看到了麼 openssl 爆漏洞了”

“啊?不知道啊,我看看去”

—-

puppet 操作一下 10分鐘以後

“老闆,補丁已經出來了,更新了,有 ssl 的 apache 都已經自動重啟過了”

結束~

最後再解釋一下,我之前的評論

“不會用就別怪系統不好。推薦 Debian/ Ubuntu 跑 Server 是一件很不負責的事情。”

任何 Linux 發行版本,在理論上都是一樣的。只不過操作有的方便,有的麻煩!是,yum 是比 apt 弱(這就是企業維護和社區維護的區別,企業自己維護不需要這麼多功能)但是任何能在 A 發行版本上實現的效果,一定是能在 B 上實現的。你甚至可以按照玩 Gentoo 的思路玩 CentOS ,編譯麼!你自己打 RPM 啊,你自己縮減依賴關係啊,你可以說麻煩,但是你不可能說不能實現。

所以,我還是要重說一遍:“不會用就別怪系統不好”!這不是歧視,這不是嘲諷,這是讓你認清事實之後能把時間花在更加有用的地方!

第二句!“推薦 Debian/Ubuntu 跑 Server 是一件很不負責的事情。” 這是血和淚的教訓!你不想聽無所謂,但是總有一些人冒著要被戴“不友善”的帽子,也要告訴你這個事實!

我再來補充一句,沒有不尊敬的意思。但是大多數圈內用 Gentoo — 類似豆瓣還是 VeryCD 這樣的公司,你們當時做出這個決策的人基本上都是把自己的 興趣 > 公司 利益了。潛在的,這其實是一種不負責任的行為,會直接的導致公司的維護成本的增加。

你真的以為你用 Gentoo 做到的效能, CentOS 做不到麼?

你真的以為你們一個小 team 打包的品質會一定比 RH 一家公司的工作人員要牛麼?

如果你當時真的這麼以為,只能證明你當時還不會用罷了。

如果我今天告訴大家,我要做一個 http 的伺服器,我不用 apache 不用 nginx,為了效能我要用 xxx 為基礎重寫一套出來。我相信絕大多數人會問同樣的問題,“你覺得你寫的能比 ng 好麼?”

再回頭看看那時候你們自己吧。

我不希望,把這個回答變成用各個版本的人的之間的爭執,其實沒有意義。我只是說,在現在的狀態下首推的依舊是 CentOS 。我個人在 PC vm 上,用 Gentoo,家裡的 HomeServer 用 Debian,公司自然都是 CentOS

至於 Debian 上伺服器,你們要是喜歡也 OK,不會有太大的問題。但真心不如 CentOS 省心。

Ubuntu ……. 真的很慘

Gentoo ……. no zuo no die

關於 Debian 的補充:

評論1:

Debian 其實在很多不是那麼重要的環境中是很好的選擇方案。[不是那麼重要的意思是,即使宕機十幾分鐘、半小時老闆也不會和你數鈔票的損失。]

為什麼?

1. 足夠數量的包。

2. testing 具有可以接受的可靠性。(與 Arch 相比) 3. testing 具有非常好的軟體更新速度。

3. testing 不具有 release 特性,永遠平滑升級(與 Arch Gentoo 一樣)。

而 Fedora 與 Ubuntu 類似,具有 release 特性,但一旦新版本出來,老版本維護很少。同時 dist-upgrade 過程並不友好,體驗很糟糕。所以如果讓我個人選擇,學校機房我也會用 Debian。我回答中,也提到我的 HomeServer 是用 Debian 的。其實以前是用 Arch 的,但是 Arch 穩定性真的很差,一個 pacman -Syu 玩死你。在嘗過痛苦以後,切換到 Debian Testing,跑了2年左右了,感覺還是很可靠的。

@戴雲傑 回答下的評論:

Gentoo 能夠激起情懷->於是工作效率大增->公司利益得到保障。哈哈哈,你贏了。還是要分場合的,60 還過得去 6000呢?我也用 Gentoo 做過產品啦,不過不是伺服器。TVU networks 的 x86 產品就是我決定轉移到 Gentoo 的。在這個產品上,很好的利用了 Gentoo 定製方便,平滑更新的特性,因為 TVUPACK 需要適配最新的 USB Modem。唯一遺憾的是,我沒有來得及給它一套二進位分發系統。如果下次還有機會,我一定會想辦法做一套。在 Server 上編譯,不是我的風格,太髒。我曾經把 CentOS 5 精簡到 96 個 RPM 依舊可以開機。CentOS 6 只能做到 100 以上了。

但是,還是要分事情的。我也會花很多時間調試 VIM 寫 bash 寫 python,但是我開始寫 Cocoa 了,我果斷放棄 VIM,必須 xcode。

我猜測很多新手(好吧,show B ge 的時候到了)覺得發行版本之間的討論會類似於早期各種開發語言之間的類似宗教性的討論[抨擊]。

其實並不是這樣的,因為熟悉使用一個發行版本的代價遠小於熟悉一門開發語言。5-10年的時間,足夠你熟悉主流的發行版本。足夠讓一個高手做到物盡其用,適宜即可。

我不是任何發行版本的粉,我在公司伺服器用 CentOS,我在 HomeServer 用 Debian,我在 CubieBoard 用 Debian,我在路由器上用 openwrt ,我在 PC 上用 OSX,我在 PC VM 上用 Gentoo。因地制宜,此乃最高境界。

其實戴雲傑是把個人利益==公司利益了哈,我給了個贊,贊是贊這份情懷。有很多事情,你喜歡就夠了,我尊重每一個人的喜歡,你其實不需要太多理由的,當初我幹這行也僅僅是為了“喜歡”。

再說了,戴雲傑老闆都出來給點贊了,我還有啥好說的,哈哈。

@素包子 下的評論:

我能夠理解你,但是我不贊同你。為什麼?

因為我也有把用 XXX 當魄力的年紀,我覺得這樣很有趣,很Cool,很特別,我希望自己與眾不同,或者我告訴自己我能學到更多的東西(是的,的確可以)。

但是當我經曆了這個階段,回頭看的時候。我知道了兩點,1. 這個過程是有價值的,沒有這個過程,不會成為今天的我。2. 這個過程太花時間了。我投入了比別人多 100% 的經曆,來擷取比別人多 30% 的知識。可能還有更好的路可以走?

今天我的同事來告訴我,他要自己編譯 apache 放到線上,我告訴他。你不要這麼做,用 CentOS 內建的就可以了,節約下來的時間你可以真的搞清楚 apache 各種效能相關的參數(相信我,很多人都搞不清),你還可以研究一下如何讓開發人員在受控的環境下自由的發布新的版本,且同時具有良好的回退功能而不用讓運 維介入。你還可以寫一套系統每周驗證一次備份的資料庫是否能夠正常載入。

相信我,實際的營運工作中,有太多值得做而沒有人做的工作了。他們都比你在那裡 configure 來的有意義的多。

嗯,論年齡,應該是前輩了,RH 6 啊?查了一下 1999 年的東西,我還在念初中呢。

@紙糊

1.“RedHat系列好使我沒意見,可是你給使用者付錢啊?”

所以我們在談 CentOS 啊?你不知道他們之間的關係?去看看吧。

2. “關於支援時間的問題,支援時間短一點也是已經告訴你的,這個不至於成為噴點吧” 啊?“Ubuntu 嘗試了幾次,目前我沒看到成功。幾乎都是草草放棄。”

Ubuntu 說 LTS 是 3年,可以從曆史的維護時間看,很少維護到三年。

這是我要表達的。你不知道 LTS 是 3年?

3. “某天某個軟體爆出類似最近 openssl 的漏洞“

嗯,你引用了我的原話,請注意我想說的是 ”類似“。而並不是就是這次的 openssl。

說道 openssl 的修複,你的表述是不正確的。

這次的 openssl 修複有兩個方式,其一是更新至 openssl 小版本,其二是重新編譯將引發問題的功能關閉。並不只是上遊修複這一種方式。

RedHat 應該是採用了第二種,因為他更新的是 1.0.1e-16 只是打包號增加了。(注意 RedHat 還是儘可能的維護版本,我不知道 Debian 是不是這麼做的,還是升級到了 1.0.1f?可能答主知道?)

這是題外話…… 我在這裡想表達的是,Debian 的組織方式,可能會受到連帶更新,尤其是在 Testing 環境中,因為 Debian 在Testing中是不斷往前走的。比如 A 依賴 B,B 在不斷的往前走,A 遇到了 Bug,於是在下次更新中 A 和 B 有可能會被同時更新。在 Testing 中這種現象是存在的。Stable 中應該不會。

同時我已經在某些評論中認可,我對 Debian 的描述有誇張的成分。

4. 你想用 squeeze、wheezy 是你的事情,因為你這麼用了,所以我不這麼用,就體現出了我不懂?我BB?你太抬舉你自己了,好歹給點理由吧。

而且我答題的最後也已經說了 ,你用 Debian 做伺服器,沒什麼大問題。

我不推薦的原因我已經描述的很清楚了,kernel 上比 RedHat 弱很多,你們想有反駁意見衝著這個來。

這這麼短的針對我的答案評論的答題中,至少體現了三點你”不懂“的東西,我覺得你還是多看看再說吧。

另外,禮貌一點,沒有人會把你當傻子。 有很多人都會陷入一種境地,通過攻擊別人來體現自己的高大。其實真正內心強大的人,根本不需要這樣做。

就像一個評論 Gentoo 的主,一定要說我在攻擊 Gentoo,但是其實評論中,盡一切機會顯示他有多麼多麼懂 Gentoo,自己多麼多麼會用。至於麼?你體現自己能力的方式一定是先要將別人放置在你的對立面?low……

我建議大家看看《河南人惹誰了》這本書,裡面提到,地區歧視的深層心裡,其實是通過歧視別人來提高自己的地位。就像一個美國街頭流浪人,跑來歧視中國人,當他說出、做出歧視性的語言、行為的時候,其實潛在的內心是利用這樣的機會來提高自己心裡的優越感。

而這樣的心裡狀態,在我們生活中是無處不在的。“我必須貶低你!才能體現我的正確性。”

    • 本文來自:愛好Linux技術網

伺服器作業系統應該選擇CentOS還是Debian/Ubuntu

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.