您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關linux升級內核的原因,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
由于現在需要使用docker,部分功能在低版本的linux不支持,如namesapce,cgroup等 。因此需要升級內核.
為什么要升級內核?
是的,非常多人并不允許這樣的觀點。可能他們覺得使用內核提供的最持久最穩定的接口就已經足夠,多數的定制特性須要自己在用戶空間開發。當然這也符合UNIX的哲學,而且,他們覺得用戶態寫自己的so而不是bash。python腳本會提高自己軟件的競爭力。由于你看不到源碼。一個so就能實現OpenVPN的負載均衡,你又不知道他是怎么做的,所以這樣的神奇感的背后,人們會覺得其技術及其高深。反之。假設使用了內核提供的特性,他們便會覺得這樣的技術誰都能夠使用,并非自己獨占獨享的。做出來的東西便失去了競爭力。
這樣的觀點是徹頭徹尾錯誤而且及其錯誤且幼稚的。
關鍵不是你保留了多少別人不知道的技術細節。關鍵在于你能多快推出一個能夠使用的五臟俱全的最簡版本號,而且能以多快的頻率持續更新,持續優化,而這一切非常大的分量上并非你自己閉門頓悟的。而是來自使用者的反饋。快。才是根本!
怎么才干快?
簡單,能不自己寫的就直接拿來,能利用的現成特性就直接用。這樣就節省了自己非常大的工作量。要把心思花在怎樣簡單地擴展功能滿足需求上,而不是花在鉆研某個技術細節上。
難道你用C寫so的時候,不也是調用了人家C庫以及第三方(甚至是你的同事寫的)庫提供的API么?這不也是拿來?你隱藏的不過怎樣組裝這一切的細節,而這不過一條路而已,沒人在乎你是怎樣將組件組裝成功能的,用戶在乎的是能夠使用。
舉例來講。
我在Linux 2.6.32內核上吭哧幾個星期也搞不定怎樣讓多個OpenVPN進程共享一塊TUN網卡,其實我改寫過TUN驅動,可是沒有經過穩定性壓力測試,所以能不能用還不知道。我所完畢的可能不過可行性預研罷了,后來由于沒有項目或者個人原因推動,這樣的成果也只能停留在紙面上。可是那畢竟消耗了我的時間和精力,盡管我沒有占用我的工作時間(到了后期就不一樣了),那個時候老婆和女兒又長期不在身邊。就我自己在家,我下班后或者周末有的是時間。可是畢竟由于搞這個東西讓我直到如今還欠了幾部關于古羅馬的紀錄片沒有看!我花了非常長時間研究怎樣實現UDP服務的并發,《UNIX網絡編程》上的方案也看過,對于OpenVPN這樣的服務而言根本不切實際,我想過通過fork讓子進程繼承父進程的UDP描寫敘述符,可是會有驚群問題,我知道有SO_REUSEPORT這個option,可是Linux的實現并不能滿足我的需求(這是實現問題,而不是接口問題),于是我又花了非常長實現寫出了UDP多port的負載均衡內核模塊,同一時候想出了利用iptables的random DNAT方案。然而只要我將內核版本號升級到3.9.6這個版本號或者以上,全部問題都攻克了,我只須要在UDP socket上設置一個SO_REUSEPORT選項就可以,同一時候我也不再須要寫代碼了。
高版本號的內核具有三方面的效用,更高效,很多其它新的特性。
以前bug的修復,可是對于新引入的特性,可能會引入新的bug。不過你只須要謹慎使用新特性就能夠了。舉例來講。我實際中會使用到的功能,比方TCP的Fast open,網絡的命名空間,多隊列的TUN網卡,這些在2.6.32內核上就不支持(命名空間有是有。可是接口使用時太不方便)。你是想花一月時間自己寫一個多隊列的TUN驅動呢?還是希望有一個直接能夠用的呢?誠然,高版本號內核自帶的TUN驅動不是你寫的,不能代表你的實力。不能給你帶來競爭力,可是你的目的決不不過用上一個多隊列的TUN而已,你的目標可能是搞一個另類的OpenVPN。別人不曾想到的那些易用的功能,你自己提煉出來的可能的新的需求。這些才是競爭力,而不是其實現。我通過阿皮亞大道到達羅馬。而你輾轉阿爾卑斯山,是的,你比我更能體現什么是力量和毅力。可是。我先到了。
看完上述內容,你們對linux升級內核的原因有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。