天天看點

是時候根據負載類型将Linux拆分為二了

桌面工作負載與伺服器工作負載各自擁有不同的實際需求。為什麼非要利用同一套發行版同時為這兩者提供必要支援呢?

過去幾十年來,微軟一直針對桌面與伺服器兩類工作負載釋出完全獨立的作業系統方案。誠然,二者共享一部分代碼内容,但使用者絕不可能單純通過安裝一部分軟體包并摒棄另一部分軟體包的方式直接将Windows 7系統轉化為Windows Server 2008 R2系統。桌面與伺服器本身就完全不同,整個技術業界也一直秉持着與微軟相同的打理方式。

當然,這種狀況并沒能阻止一部分開發人員将伺服器工作負載交由Windows XP系統加以處理的嘗試與懷疑性态度,但從宏觀角度來看、桌面系統與伺服器系統之間的差異是顯著而且真實存在的。然而在Linux領域,這種界線則一直非常模糊。

大家可以選擇任何一套Linux發行版并在安裝後将其作為伺服器作業系統,也能夠随時根據需要安裝并解除安裝其中部分軟體包再将其轉化為适用于工作站裝置的桌面版本。整體而言,作業系統核心依然如故、而可靠性與性能表現也幾乎沒有差別——當然,前提是大家能夠以正确的方式對系統進行調整。雖然看起來沒有什麼問題,但這兩類工作負載實在差別明顯,而且随着計算能力的不斷提升、兩類工作負載的具體狀況也在朝着不同方向進一步偏離。

也許現在是時候将Linux拆分為二了。我曾經在上周的systemd探讨文章當中表達過這一觀點(并在文章中提到,FreeBSD有可能在伺服器領域取得更積極的接納态度),但除了systemd之外、還有更多其它客觀因素推動着這股潮流。這一切從引導裝載程式開始就出現了差異。我們看到很多類似于嵌合體般的作業系統費盡心力在充當伺服器系統的同時,又得準備好讓那些突發奇想的使用者将其作為桌面系統使用。此類情況出現得越多,我們就越是希望能把這兩類使用方式區分開來。大家可以在自己的筆記本或者64路伺服器上運作同一套Debian Jessie系統——這樣做到底有何必要?集中所有精力顧好一方面難道不是更有意義嗎?

如果大家利用systemd将所有Linux系統發行版統一起來,那麼它們彼此之間的差別将變得非常細微——僅存的差異可能隻展現在軟體包管理器以及檔案系統布局等方面。姑且不論将Linux桌面系統作為獨立業務線所帶來的巨大風險,如果能讓一部分Linux發行版專注于解決桌面類型負載、再讓另一部分重點打理伺服器類型負載,這樣的結果難道不是更好?當然,Ubuntu及其它少數發行版已經開始提供“伺服器”與“桌面系統”兩類版本,或者在安裝時準備更多方案供使用者選擇,但事實上二者之間的惟一差別就是所安裝軟體包的不同。在目前的大多數發行版當中,兩類方案的核心甚至完全一緻;沒錯,二者被硬性合而為一。

随着大人氣遊戲架構Steam釋出Linux版本,我們開始感受到一部分對計算機遊戲及計算機通用技術抱有濃厚興趣的家夥在努力把桌面Linux系統獨立出來。他們至少開始嘗試對Linux的桌面特性以前所未有的方式加以強調,并且在一定程度上取得了成功。

然而他們同時也要求這些以桌面系統為核心的工作負載擁有更為出色的性能表現、特别是在圖形處理方面,而且希望每款獨立應用程式的處理負載對磁盤及網絡I/O的要求得到縮減——這種處理思路與在伺服器上一味追求高I/O與多線程處理效果的業務負載完全不同。如果想讓Linux在桌面領域實作市場佔有率方面的突破,那麼此類需求必須得到滿足、而且核心也需要與伺服器系統版本劃分出更為明确的界線。

要實作以上提及的全部目标,新的系統版本需要在硬體支援能力、外部裝置支援能力、電源管理以及其它各大桌面系統考量重點當中有所建樹,而這又會使桌面與伺服器兩類發行版走向更為相背的兩條發展道路。此外,我敢打賭,運作在虛拟機環境下的Linux伺服器系統數量與運作在桌面系統中的數量相比,前者規模可達後者的數十倍乃至上百倍。在對發行版進行開發與調整時,這也應當被視為一種完全不同的使用場景并加以考量。

話說回來,Linux真的有能力實作這一切嗎?答案是肯定的。那我們又能否讓每一套Linux發行版都擁有開箱即用的各類支援能力?可能,非常有可能。目前以Mint為代表的、專注于桌面方向的發行版已經出現,而以Gentoo與Debian(特指某一部分Debian版本,至少是在systemd出現之前)為代表的部分發行版也開始将重點轉移到伺服器方向。雖然它們還沒有完全邁出單一指向這決定性的步伐,但至少已經在兩類關鍵性工作負載類型中作出了自己的選擇或者說傾向性。沒錯,我們很難将RHEL 7視為一套真正的以伺服器為核心的發行版,因為其中仍然摻雜有systemd以及面向桌面環境的軟體包,但至少能夠肯定的是它并不屬于真正的桌面系統。從許多方面來看,RHEL 7走的仍是一條兩手抓、兩手都要硬的中間道路。

目前業界對于systemd的抗拒情緒非常強烈,适時推出一套主流Linux發行版的fork将systemd與GNOME依賴性徹底清理出去、并在忽略桌面支援能力的同時為使用者提供一套更為傳統且穩定的伺服器平台已經成為當務之急。在Linux發行版的樹狀開發圖形當中,我們真的不應該把時間浪費在為偏向伺服器環境的版本提供數百上千桌面軟體包的管理與支援能力,也沒必要把數不勝數的外部裝置及顯示卡驅動程式納入考量範圍(舉例來說,RHEL 6.3就提供57款xorg開源DirectX驅動程式)。

安全問題同樣值得關注。在桌面系統與伺服器系統當中,對于安全問題的考量方式及權重存在巨大差别——事實上,不同類型的伺服器之間對于安全事務的要求也有所差別,具體情況取決于每台伺服器所負載的業務内容。不過我們幾乎可以肯定地說,對于Memcached伺服器而言、針對點選惡意網頁實施惡意軟體防護絕對不可能在安全威脅優先清單中占據一席之地。

相信大家跟我一樣、都已經意識到使用者對于桌面Linux版本在改善使用體驗方面所提出的要求,其中包括引入更多外部硬體支援能力、改進圖形處理性能、強化聲音表現、縮短啟動時間以及降低維護與管理的難度等等。這些對于桌面層級的關注隻适用于桌面發行版,如果吸取意見并加以實施能夠确切實作上述目标,那麼我們沒有理由對此加以抗拒。然而,同樣的關注重點在伺服器級别的系統當中顯然沒有立足之地或者說加以考量的理由。這種朝令夕改的頻繁變動隻會給系統本身帶來短視與危險等弊端。

打造專有以及經過針對性調整的伺服器發行版顯然是個很好的主意——無論是否将systemd引入其中。而如果技術業界能夠以此為前導,建立出一套足以邁入主流行列且僅适用于伺服器環境的Linux發行版、并繼續像過去四十五年那樣堅持承繼源自Unix的各項優良傳統作為固有基因,那麼我們無疑會為這樣的成就和魄力拍手叫好。換言之,能有這樣的成果,也代表着我們對于systemd的熱烈讨論并不是在浪費唇舌。