歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux教程:ArchLinux不適合當作服務器操作系統的四大原因

Linux教程:ArchLinux不適合當作服務器操作系統的四大原因

日期:2017/8/19 9:39:49   编辑:Linux教程

  為什麼Arch Linux不適合當作服務器操作系統?可能很多用戶都發現了,Linux服務器操作系統一般都是Ubuntu Server、Cent OS、Fedora或者Red Hat等,為什麼很少看到Arch Linux呢?因為Arch Linux在服務方面確實存在一些劣勢,下面我們來看看Arch Linux不適合當作服務器操作系統的四大原因。

Arch Linux不適合當作服務器操作系統的四大原因

  為什麼Arch Linux不適合當作服務器操作系統?

  1、過分激進的滾動更新

  滾動更新是Arch Linux最大的優勢,但同時也是最大的劣勢之一。鑒於Linux屬於一類完全開放的項目,技術人員的能力參差不齊,貢獻的代碼質量當然也是參差不齊的。對於其它的發行版來說,軟件包需要經過社區完善的測試才會被發布至軟件源從而被用戶更新;然而,Arch Linux的滾動更新機制過分激進,而Arch社區對軟件包的測試並非絕對完善(有多少人滾掛過?)。從某種意義上來講,Arch這個發行版,相當依賴其用戶群體作為測試對象;它的用戶群體就是類似測試人員的存在。Arch社區鼓勵用戶向上游反饋Bug,也是這種特殊的體系的表現。下圖是Arch官網時不時會發布的、用以幫助技術人員手動解決更新問題的“臨時解決方案”:

Arch Linux不適合當作服務器操作系統的四大原因

  假如一台Arch服務器在更新時滾掛了,技術人員頂著Boss的壓力,不僅要一邊努力恢復服務器,還要一邊向Arch社區的上游反饋Bug、提Issue。這種事情誰都不願意干的吧。

  2、激進的內核更新機制

  很多Linux桌面用戶不止一次地問過我,為什麼他們的桌面Linux在更新的時候不會像Arch一樣立即刪除舊的內核?這樣不是會浪費空間嗎?

  這種立即刪除舊內核的更新機制也是Arch作為服務器的劣勢之一。首先,新的內核不一定都能正常工作。萬一你的新內核造成崩潰,你沒有辦法立即加載舊的內核,而必須重新安裝舊的內核。這個過程是非常麻煩的,你不僅需要從安裝介質啟動,還必須設法弄到舊版內核的軟件包。對於遠程服務器來說,幾乎無解。下面是來自Arch Wiki的解決方案。可以看得出來這有多麼麻煩:

Arch Linux不適合當作服務器操作系統的四大原因

  其次,立即刪除舊的內核要求系統必須重啟來加載新的內核,否則容易發生詭異的問題。這是因為Linux所謂的“內核”包含有大量的動態加載模塊,如果在某次啟動後,某個模塊沒有被加載過,然後系統內核更新了,刪除了舊的內核,那麼這些模塊將永遠不能被加載了——除非你重啟系統完整切換到新的內核——因為它們隨著舊內核被刪掉了。

  如果你手頭有Arch系統,你可以嘗試一下在某次啟動之後不插任何USB設備,然後更新內核。你會發現,如果你不重啟系統,無論你怎麼努力,新插上去的USB設備總是不會被加載——因為需要被加載的模塊已經隨著舊內核刪掉了。重新啟動系統能完整切換到新的內核,以使用新版的動態加載模塊。

  但是對於服務器來說,不可能三天兩頭重啟;然而Arch Linux卻又是一個一周一小更,一月一大更的快速迭代的操作系統。這就使Arch不適合作為服務器操作系統。

  3、軟件包管理體系

  Arch Linux被推崇很大一部分的原因是便於使用的軟件包管理體系。不同於Debian系列的apt/dpkg和Red Hat系列的dnf(yum)/rpm包管理體系,Arch Linux只用了一個工具pacman就解決了獲取和安裝兩個功能。這降低了為Arch Linux制作軟件包的門檻,這也是AUR幾乎能涵蓋整個Linux軟件生態的主要原因。

  既然一個工具就能完成工作,那為什麼另外兩個主流系列都依然存在兩個工具來管理軟件包體系?這是因為,這種兩個工具來管理軟件包的體系中,那個負責處理本地依賴和本地包的部分,不僅僅是為了管理依賴、安裝軟件包而存在的。它還有更有用的功能:提供“虛包”支持。提到“虛包”就不得不提到Java這個平台,因為Java的開放,常見的Java運行時環境有兩種:一個是Oracle官方的JRE,另一個是開源社區創建的Open JRE。它們都對Java提供很高程度的支持,但是依然存在微妙的差別。比如Android Studio使用Open JRE運行就會偶爾出現奇怪的Bug,而另外有一小部分軟件則不能正常運行在Oracle JRE上。它們都提供JRE的支持,但是對於Debian或者Red Hat來說,二者是能共存的:dpkg或者yum可以決定對於哪些應用程序選取哪個JRE為應用程序提供JRE依賴。

  但是對於pacman來說,虛包支持什麼的,不存在的。只能有一個軟件包提供JRE支持:安裝一個就必須刪除另一個。對於服務器來說這就相當尴尬了:並不能保證所有的程序都能找到完美的依賴。

  4、打包粒度

  雖然最近幾年有所改善,但是Arch Linux的打包粒度對於服務器來說還是過分大了。我們也許只會用到某軟件包的一部分,但是pacman會把整個軟件包給你裝上——你還沒得選。對於服務器來說,為實現功能所安裝的軟件包越少越好——一來節省資源,二來可以減少由軟件體系帶來的漏洞。這也是Arch不適合作為服務器操作系統的原因之一。

  就小編目前的經驗,以上理由可以充分打消在服務器上使用Arch Linux的想法。但是對於桌面系統,特別是對於開發人員,Arch還是相當不錯的選擇。

  上述便是Arch Linux不適合當作服務器操作系統的四大原因,大家現在曉得Arch Linux為什麼很少被當作服務器操作系統了吧!

Copyright © Linux教程網 All Rights Reserved