今天就跟大家聊聊有關(guān)服務(wù)器操作系統(tǒng)應(yīng)該選擇Debian/Ubuntu還是CentOS,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
10年積累的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有建昌免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
首先,我想請(qǐng)各位玩家,你們不要自己最近新玩上什么就覺得什么好,然后大肆的推薦什么好不好!負(fù)點(diǎn)責(zé)任好不好!人家是服務(wù)器,有些時(shí)候選錯(cuò)一個(gè)發(fā)行版本會(huì)痛苦死一批人!
是,你現(xiàn)在終于發(fā)現(xiàn)有個(gè)版本叫 Ubuntu 了,好爽啊,那么多包,隨便 apt-get , 3萬個(gè)包躺在倉庫里面不用編譯。好爽?。缀跛熊浖加?**版本用!唉?過兩天你發(fā)現(xiàn) Ubuntu 原來是從 Debian 來的,Debian 才叫牛啊,完全社區(qū)運(yùn)作,包的數(shù)量一點(diǎn)都不少啊。再過兩天發(fā)現(xiàn) Gentoo 啦,哇塞,牛?。⌒阅艿?**優(yōu)化,編譯編譯再編譯,configure , configure 再 configure ,精簡(jiǎn)到***。再過兩天 Gentoo 玩膩了,不就是編譯么~ 唉? 原來還有 Arch 啊,這個(gè)不錯(cuò)啊,想編譯的編譯,不想編譯的也有默認(rèn)包。然后2個(gè)月沒 pacman 更新過的系統(tǒng),更新一下全掛了。
你的意識(shí)形態(tài),走在任何一個(gè)階段都認(rèn)為這個(gè)階段是***的選擇。但事實(shí)并不是這樣的,這只是你的興趣而已。
要討論這個(gè)問題,先要知道兩大發(fā)行版本的區(qū)別在哪里。RedHat 和 Debian。
一、版本定義
RedHat 是由紅帽公司維護(hù)的發(fā)行版本。其 RedHat 9 是***一個(gè)以 RedHat 為名的發(fā)行版本。在 RH9 之后,版本開始分為社區(qū)維護(hù)的 Fedora 和 企業(yè)使用的 EL。而我們所說的 CentOS X 就是從 RHEL X 編譯過來的。所以本質(zhì)上,CentOS 的目標(biāo)用戶,就是企業(yè)的服務(wù)器。
CentOS 是有 release 概念的,何為 release 概念?當(dāng)某個(gè)版本定下時(shí),其絕大多數(shù)軟件包,包括 Kernel 在內(nèi),都已經(jīng)確定了版本。在該 release 下,沒有特殊情況,大版本號(hào)不發(fā)生變化。
舉例,CentOS 6 某個(gè) Kernel 版本:
2.6.32-358.el6.x86_64
2.6.32 為 kernel 版本號(hào),358 為打包版本號(hào),打包版本表示該包第幾次打包。對(duì)于 RHEL 來說,一個(gè) kernel 打包個(gè) 500 700 次是很正常的事情。
再比如一些軟件,1.1.3 是版本,如果該軟件自身的定義,***一位是 bugfix 版本,倒數(shù)第二位是功能版本,那么你在 RHEL 里面,很少會(huì)看到功能更新!通常只會(huì)看到 bugfix 更新!也就是只會(huì)看到小版本號(hào)更新。
Debian 是由社區(qū)維護(hù)、貢獻(xiàn)的發(fā)行版本,其從選包、打包、都是由社區(qū)組織,分散行動(dòng)的。
Debian 是沒有真正意義的 release 概念的。Debian 有眾多倉庫,stable,testing,unstable ,experimental. Debian 組織系統(tǒng)的方式是,一個(gè)軟件先進(jìn)入 experimental, 放一段時(shí)間,有 bug 修 bug,沒 bug 了,過段時(shí)間挪入 unstable ,如此循環(huán)最終挪到 stable 里面。所以在這種情況下,Debian 的系統(tǒng)中,是沒有一個(gè)穩(wěn)定版本的概念。今天你用 kernel 3.2.1-87 , 明天就給你更新到 kernel 3.3.2-5 。
-------- 補(bǔ)充內(nèi)容 -------
我覺得我已經(jīng)把我所謂的 release 概念解釋的很清楚了,但是評(píng)論里面還有人在和我說 Debian 是有 release。我說的 release 不是那種自己劃個(gè)時(shí)間線,叫個(gè)名字的概念。而是版本維護(hù)的概念。
@劉世偉 說 Debian 也是這樣的,那好吧,我證明給你看一下。
你從這里 Debian -- 在 wheezy 中的 linux-image-3.2.0-4-amd64 軟件包詳細(xì)信息 可以拿到現(xiàn)在 Debian stable 的 Linux kernel 打包,下載下來,解壓縮,在
usr/share/doc/linux-image-3.2.0-4-amd64 目錄下面有一個(gè) 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=high linux (3.2.41-2+deb7u1) wheezy-security; urgency=high
起碼在 wheezy 里面(stable) 里面,他從 3.2.41 走到了 3.2.57 , 同時(shí)…… 你們可以看到 每個(gè)版本也就打包 1-2 次,1-2次啊!而且 Debian 的 unstable 走到 stable 真的就是隨便走走的。
linux (3.2.41-2+deb7u1) 是***個(gè) stable 版本,他的上一個(gè)版本是
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 也就打兩次。
從這個(gè)過程,你可以看出,Debian 總體上,還是在跟著 Kernel Source 的,為啥?沒人?。】苛闵⒌娜舜?patch 還不如依賴 Kernel 本身的小版本更新。
RedHat 呢?
放一個(gè) 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 的小版本號(hào)的,自己整合 bugfix ,主要是安全相關(guān)的補(bǔ)丁。
為什么不跟 kernel source 呢?
主要還是目標(biāo)用戶的不同,就像我下面驅(qū)動(dòng)這塊要解釋的。RHEL 的目標(biāo)用戶,是企業(yè)的 Server 的,他的 Kernel 里面,已經(jīng)太多的東西被替換掉了。磁盤、網(wǎng)卡、各種各樣的驅(qū)動(dòng)。而 Kernel source 盡管只走小版本號(hào),還是不太靠譜的。頻繁的拿過來風(fēng)險(xiǎn)也大。
kernel 其實(shí)走到 2.6 以后,就沒有一個(gè)真正穩(wěn)定的概念了。反正就是一路往前走。當(dāng)然 2.6.32.xx 的確是以 bugfix 為主的。但是這個(gè)量太大了,各種各樣雞毛蒜皮,RHEL 不是全都拿進(jìn)來的。
你們一定要和我爭(zhēng)論版本的問題,行,我不和你們爭(zhēng),Debian Stable 是有版本的~ 你們滿意了?這種一個(gè) kernel 打包 2次的狀態(tài),你們愛用就用好了。無所謂的。
但是有 版本的也只是 stable,testing 我可從來沒見過。
說實(shí)話,我真的花了心思想多找一點(diǎn) Debian 的信息,
11年進(jìn)入 stable 的 6.0 , 最近確實(shí)還有一個(gè)更新,在 08 Apr 2014 。
http://metadata.ftp-master.debian.org/changelogs//main/l/linux-2.6/linux-2.6_2.6.32-48squeeze5_changelog
09年發(fā)布的 lenny 也就是 5.0 ,根本已經(jīng)連信息都很難找了。如果誰能找到 lenny 麻煩給一個(gè) kernel 的 changelog
----- 補(bǔ)充結(jié)束 -------
而其繼承者 Ubuntu,他是有 release 概念的,比如 9.04 ,10.06 等等,當(dāng)他確定了 release 之后,他也不會(huì)在這個(gè)版本中做太大的版本變化。
但是問題是,他學(xué)到了 CentOS 的形,沒有學(xué)到 CentOS 的精華。為什么?因?yàn)樗窒胱非笮拢ㄒ荒陜蓚€(gè)版本),又想學(xué)人家吃服務(wù)器市場(chǎng)。這是完全相互矛盾的一件事情。
新,好辦,只要跟著 Debian 走,experimental 倉庫里面永遠(yuǎn)是***的東西。拿過來,測(cè)試測(cè)試,重打包,發(fā)布!
穩(wěn)定?(Ubuntu-Server) 這就難了,這需要不斷的人力投入,Debian 自然不會(huì)幫你做這件事。自己做?Ubuntu 嘗試了幾次,目前我沒看到成功。幾乎都是草草放棄。
二、維護(hù)的力量
你們知道什么叫維護(hù)一個(gè)服務(wù)器用的發(fā)行版本么?
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個(gè)月
你說好的 LTS 呢???
Ubuntu 10.04 LTS April 29, 2010
Ubuntu 10.04.4LTS February 16, 2012
說好的 LTS 呢?
說 End of the Date 是3年整就是一個(gè)笑話,只要下個(gè) release 一出,上個(gè) release 收到的更新數(shù)量就可憐。
這才是 RedHat 的實(shí)力!你只要用我的發(fā)行版本,你不用有后顧之憂!Ubuntu 呢?開玩笑,即使是 LTS,在新版本出來以后 LTS 幾乎不更新好么。補(bǔ)丁?從來沒見過!也就是 LTS 的真正壽命也就 6個(gè)月-1年。你敢用?你敢給你們公司用?
某天某個(gè)軟件爆出類似最近 openssl 的漏洞,用 CentOS 5 的用戶第二天拿到了升級(jí)的 rpm。用 Debian 的用戶收到了一個(gè)大版本更新,同時(shí)由于依賴關(guān)系必須更新 glibc, kernel 等等包。用 Ubuntu 的用戶收到官方回復(fù):“apt-get dist-upgrade”
這就是這幾種發(fā)行版本在維護(hù)上的區(qū)別。
我們?cè)僬f回 RHEL,很多人不懂,以為 Ubuntu “新”,RHEL “老” 。
你的服務(wù)器上有一塊 Broadcom 的網(wǎng)卡,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.bin firmware: 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 帶的是哪個(gè)版本的 tg3 驅(qū)動(dòng)么?
#define DRV_MODULE_VERSION "3.102" #define DRV_MODULE_RELDATE "September 1, 2009"
CentOS “老”么?誰在將***的驅(qū)動(dòng)打入老的 kernel?誰在測(cè)試新驅(qū)動(dòng)與老 kernel 的兼容性?RH?。。∵@些都是人力啊,這些都是財(cái)力啊。
RH 在保證穩(wěn)定、兼容的同時(shí),盡可能的給服務(wù)器用戶最全的設(shè)備匹配,***的驅(qū)動(dòng)支持。而這一切!你都不用擔(dān)心穩(wěn)定性、兼容性,因?yàn)?RH 沒有更新大版本,沒有帶來 龐大 feature 的更新。
還有一個(gè)例子:
google RFS patch in linux kernel Linux 2.6.35 中的 RPS 功能。
這簡(jiǎn)直就是 Linux 服務(wù)器用戶夢(mèng)寐以求的功能好不好,你不用再擔(dān)心多核CPU被浪費(fèi),你不用花很多錢買昂貴的多 irq 網(wǎng)卡。但是要 2.6.35 才有哦~
但是你不用擔(dān)心,CentOS 6 (2.6.32) 已經(jīng)將RPS整合進(jìn) 2.6.32 的內(nèi)核中了。
你看到Ubuntu做這種事情了?Ubuntu 在忙什么?在忙著今年再發(fā)一個(gè)版本??!
RHEL 為什么做?因?yàn)樗挠脩羰欠?wù)器!RPS 這種事情PC根本就用不到好不好。
我回到最開頭。我也用 Ubuntu 做過產(chǎn)品,雖然不是服務(wù)器。但是***的結(jié)果并不好。我聽說過一個(gè)同事的上家公司用 Ubuntu 做服務(wù)器,千級(jí)別的量。聊了一下發(fā)現(xiàn)和我預(yù)測(cè)的差不多,痛苦不堪。
基本的痛苦流程是這樣的
遇到一個(gè)問題->發(fā)現(xiàn)只有更新軟件版本才能解決->這個(gè)自己當(dāng)前的版本已經(jīng)不提供該軟件版本->發(fā)現(xiàn)自己編譯不過,依賴太重->決定 dist-upgrade -> 發(fā)現(xiàn)需要跨度N個(gè) release -> 測(cè)試 dist-upgrade -> 10臺(tái)機(jī)器,2臺(tái)成功,8臺(tái)失敗,失敗的現(xiàn)象不同 -> 痛苦的解決各種問題-> 成功 dist-upgrade -> 發(fā)現(xiàn)公司業(yè)務(wù)程序需要重新編譯->與開發(fā)人員溝通 解釋升級(jí)的重要性 -> 開發(fā)人員重新調(diào)試、測(cè)試一些列用到的庫的新版本->交付新版本
看完上述內(nèi)容,你們對(duì)服務(wù)器操作系統(tǒng)應(yīng)該選擇Debian/Ubuntu還是CentOS有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。