Linux運維:現狀、入門和未來之路
今天想談談「運維」這一行,我將從以下五個部分來和大家分析一下目前Linux這個行業的現狀以及如何學好Linux、成為專業運維人員和雲服務對運維的影響。
一、linux行業現狀
我們知道Linux誕生於1991年,它在國外的發展是非常迅速的,即使目前國內越來越多的應用轉向linux平台,但Linux在大多數人的眼中還是不太了解,甚至一個多年從事windows平台下的開發人員,可能也從未使用過。究其原因主要有以下幾點:
1.入行門檻較高
由於linux是類UNIX操作系統,我們都知道UNIX是一個相對早期的操作系統,它的設計本身就不是針對普通大眾的而是從事計算機的專業人員。雖然linux相對UNIX對大眾已經相對友好,但仍然不是普通人能夠輕鬆掌握的操作系統。由於很多人受Microsoft的windows操作系統影響太深,對於linux這種主要以命令行形式操作的系統非常不習慣。所以Linux這行的門檻還是較高。
另一個重要的因素是由於絕大多數的發行版中對中文的支持並不好,其實換句話說是沒辦法對中文的支持太好。由於Linux涉及的知識相對底層,除去GUI所能提供的中文界面,基本上我們看到的都是英文。如果你是一個Linux運維人員,你很清楚的知道,你每天打交道的linux很少能夠看到中文。所以英文是學習Linux一大障礙,尤其是計算機英語與我們上學所學的英文完全是兩碼事。為什麼這麼說呢?
應試英語著重語法,考過CET-4的人都知道,幾乎每一題都是變著法的考語法。而計算機英語其實是非常厚道的,計算機告訴你的一定是一個陳述句而不是作死的提示你一個反問句或者複雜的語句。比如,你在輸入一個命令執行時,如果這個命令計算機沒有找到,它會直接的告訴你:xxx
command is not found 它不會問你: 這個命令難道真的存在嗎?這種想抽它的語句。所以計算機英語關鍵在於需要掌握大量的名詞和術語。
2.精通難
國內目前的狀況是大家都知道windows的運維相對不如Linux運維的薪資水平。所以很多想做運維和windows運維的人員都想選擇Linux運維,目前也有很多的相關培訓機構,網上的書籍視頻層出不窮。但是真正想要深入到高級的linux運維卻並非一件容易的事情,究其原因主要如下:
能力與工作成正比。「能力有多大,責任就有多大」,在運維這一行,沒有人一畢業就是大神,要知道運維不同與其他行業,運維需要的不是「天賦異稟」而是「經驗豐富」。運維這行要的是一個穩字,一個好的運維人員應該是一個好管家,他最好的狀態是保證家裡一切正常的前提下「無所事事」。沒有情況就是最好的情況,但我們通常無法決定能不能出問題,所以出現問題第一時間找到解決方案並實施是一個專業運維人員所需具備的。在這種大前提下,越是有大項目經驗越是能力越強,說白了越有經驗越能hold住場面。而這種能力的成長與你工作的環境息息相關,如果你是一個小公司,你再怎麼做可能也無法接觸大集群運維,如果你在一個大公司,一個大項目就能帶領你提升一個檔次。想要精通難的不是學習的能力而是磨練的機會。
3.前景好
十年前所有的公司都注重網路技術,所以那個時候網路工程師大熱。如今大公司的網路都早已成形,市場上的CCIE到處可見,網路技術的門檻越來越低。如今,linux行業崛起,在雲計算大環境下,市場上對linux高級運維人員的需求將越來越大。這樣的人才是不可批量生產的,高級運維不是你想做,想做就能做的。一個職位最怕的是從事其他職位的人可以輕鬆取代你,如果是這樣,這個職位就不值錢。如果你是不可取的的,那麼薪資自然也是不可取代的。在Linux運維的初級階段,其實是可以取代的,Linux畢竟是一個操作系統,只是一個工具。一個經常在linux下做開發的開發人員就可以取代一個linux初級運維人員。但如果高級運維,開發人員是無法取代運維人員的。高級運維是一個非常專業職位,高級運維需要掌握相當多的知識,包括但不限於網路技術、系統編程、運維流程及思想、虛擬化、自動化運維體系構建、資料庫管理,雲計算平台應用,大數據等。一個運維人員需要具備有開發人員的思想,但一個開發人員是否能夠掌握常年積累下來的運維流程、思想和經驗體系就不是一朝一夕的事情了,所以高級linux運維絕對是目前大公司的稀缺人才。可能有人會反駁我的話說:一個高級的開發人員是更稀缺的。沒錯,我同意你的觀點,那麼我會為你分析為何我認為linux高級運維更加稀缺。
分析:一個行業從業人員是否稀缺我們要從供需的角度來看,我們首先看需求。
需求。目前國內越來越多的應用應用在linux上,某些大公司更是將整個平台從原來的windows轉移到Linux上,windows運維也許你可以找一些別的人員兼做,但我相信不管你是大公司還是小公司,絕不會對Linux運維不重視。大公司不差錢,小公司壓根就不懂,你不懂的東西你越想找個專業的人幫你打理。所以雖然需求基數不大,但需求意願強烈。
供給。現在哪個大學沒有開設編程課程,但是Linux相關課程卻少之又少。而目前從事Linux運維的多半是半路出家,一出校門就去做Linux運維的太少,這是因為運維是一門以經驗為主導以能力為輔助的行業,由於是高級Linux運維,不經過多年的鍛煉達不到較高的境界。而linux高級運維人員往往隨著公司的項目一同成長,而這種人往往都是公司中的關鍵崗位,試想一個公司的高級Linux運維掌握了公司的大量運維資料和項目經驗,公司不想輕易放人,個人也不會輕易跳槽。每家公司不一樣,換一家公司你要適應新的運維團隊,開發新的運維工具和平台,這種風險個人也不會輕易嘗試,所以高級Linux運維的人員流動性不大。
還有一個很重要的原因,一流高手不屑於做運維,確實運維是一個後勤部門,就像大家踢足球都喜歡踢前鋒,很少有人喜歡當後衛,畢竟這種吃力不討好的事情大家都不喜歡做。而且在同一水平線上開發確實比運維的工資高。然而正是因為如此,像我們這種普通人才有機會做大神不願做的事,不用和那些學霸大神們競爭。
所以,我個人覺得,linux高級運維將是雲計算大環境下的稀缺人才,注意我說的是高級。
二、學習Linux兩種人
就我身邊的圈子而言,大多數學習Linux的其實分為兩種情況:
1.興趣
這種情況下以學生居多,有一些是通過老師了解到linux覺得很感興趣,然後去學習linux。由於學生時間多,大多數不會去報專門的培訓班,所以以自學居多。我身邊的這種例子很少有學的好的,多半會進入一個誤區,去研究GUI哪種好看哪種絢麗去了。導致這種情況的原因是在學習了linux的基礎知識後,很多人會進入一個瓶頸,由於沒有工作實踐的機會,不知道該用自己所學的知識做哪些事情。一旦我們所學的知識不知所用,那便會對所學的知識產生排斥心理,覺得沒用,產生了玩GUI的誤區。不過我認識的也有學的好的例子,不過這個學生是做開發的,學習linux只是因為需要在linux下開發,所以學的很快很好,但他將來會是一個優秀的後端開發人員,卻不一定會做運維。
關於linux的GUI,我想啰嗦幾句。GUI是一個好東西,但對於linux的初學者來說並不好。學習Linux第一要克服的一點就是擺脫windows的所長久影響的使用習慣。對於linux來說,GUI其實也是一個shell,只不過是圖形化的shell,所以說不能說命令行就好,GUI就不好。如果你真的是做GUI方面的開發,那麼研究GUI無可厚非,如果你只是個菜鳥,也就是玩玩壁紙,換換主題,這些東西對於學習linux毫無用處。
2.工作需要
這種情況下多半是工作中需要使用Linux系統,不得不學。有一些會選擇自學,不過由於上班了大多數還是有一些經濟基礎,也有不少人上培訓班以達到短時間的速成。這些人員入門會較快,有不少人都能夠學好,並慢慢發展為一名不錯的linux運維人員。
以上這兩種情況,後者其實更容易學好linux,根本原因在於:如果是興趣使然,學與不學不會對你的生活有很大的影響,你該上課上課,該上班上班,沒有人督促你學習,沒人迫使你學習。即使對Linux失去興趣,也可以去學別的感興趣的知識,這其實是一個愛好問題。
但後者不同,公司要求的,不會就沒法交代,不會就沒法幹活。老闆吩咐的任務就在那,學會了就能幹活,學不會就走人,你說這種壓力下你能學不會嗎。我相信你加班加點不睡覺也想學會Linux,不會就沒工作,沒工作就沒飯吃,這是一個生存的問題。所以兩者本質上是不同的,由於後者是由於實際工作需求來驅使學習,所以學到的東西馬上就可以在實際的工作中應用,所以會覺得學到的東西很有用,那麼學習就更加的有動力,當你的boss給你加工資的時候,你就會更有動力,這一切都是學習Linux帶給我的財富,有什麼理由不更好的學習它呢?
三、如何入門
這其實是一個老生常談的問題,說的簡單一點:只要功夫深鐵杵磨成針。學習不是一朝一夕的事情,長時間的堅持才會給你彙報。但我依然想給那些想自學linux的同學一點建議:
1.不管你基礎多差,找一本系統的書籍從頭到尾的看一遍,不管能不能看懂至少混個臉熟。如果你覺得很吃力,可以去找找網路上的視頻教程。切記看視頻是效率最低的學習方法但卻是最容易入門的自學方法。如果看書我強力推薦《鳥哥的Linux私房菜》,很系統很詳細很深入。
2.不要碰GUI
3.多提問多思考,自己尋找答案不要輕易求助於他人。你問的問題都不會是國家機密,百度以及google上都會有大把的資料供你學習,要知道你求教的那個大神他也是從網路上獲取的這些知識,你不想有一天能成為和他一樣的大神嗎?
4.不要擔心英文,只要你堅持看英文文檔,不會的單詞去查字典,用不了多久你會發現看英文比看中文理解的更好。(即使你和我一樣CET-4都沒過^_^)
5.堅持就是勝利,半途而廢不如不學,想好了就走下去,否則請不要邁出第一步。
6.多和別人交流討論,幫助別人也是一件開心的事情同時也能夠提升自己,也許他問的問題就可能是你下一個要遇到的問題。
7.關於培訓班,如果想了解RHCE證的話請移步我的另一篇博文《關於紅帽RHCE考試的那些事兒》http://blog.csdn.net/apache0554/article/details/7740405
四、如何成為一名專業的linux高級運維人員
如果你有機會和條件,請大膽的做你從未做過的項目,每一個項目都是對自身的極大提升,環境能夠磨練一個人的能力和意志。有好的環境資源不要浪費,好好把握,慢慢進步。
如果你暫時沒有這些機會,請努力提升自己的能力,做一個有準備的人,也許機會不久後就會來臨。
如果你感到毫無發展的空間,嘗試改變現狀,安逸的環境不會使一個專業的運維人員進步。
不管何時何地始終保持好的心態,細心、冷靜、自信、上進、謙遜,性格決定命運,習慣影響成就。
五、雲服務對linux運維的影響
地球人都知道,未來至少十年都是雲計算的黃金時期。一個事物的發展必定要棄舊迎新,尤其在互聯網時代,設備與技術的更新日新月異。雲服務不僅改變了中小公司的運營方式,同樣對大公司也起到了衝擊作用。中小公司傳統情況下,一個互聯網項目在開始階段需要網路設備,伺服器設備,機房設備,CDN和線路設備,線上運維人員、IDC機房運維人員等。也許一個項目還沒開始賺錢,光這些亂七八糟的設備和流程就已經耗費了相當多的人力和財力,項目成本自然提高,項目壓力也就越來越大。如果項目成功,自然苦盡甘來;但若項目失敗這些投資也就全打了水漂,也就大大增加了開發和創業的成本。而大公司雖然不差錢,但這些機構在長年的人員流動、機構擴充的影響下也越來越臃腫。
如果企業使用雲服務,那麼線下運維將由雲服務商全程統一負責,極大的精簡了一個項目開始階段的投入。雖然多數大公司目前並不會使用公有雲,轉而開發自身的私用雲。但本質上是一樣的,都是將線下運維進行集中和整合,通過雲技術提供給各個項目人員使用,達到資源的最大化合理利用。
如果雲服務被越來越多的企業應用,那麼對傳統運維的影響是非常巨大的。
1.運維人員精減
公司不需要為買個項目單獨配置設備和人員,運維人員更多的情況下需要的是線上運維而不需要再去機房干苦力。第一批被淘汰的就是IDC線下運維人員,因為你的活已經被雲服務商做了,當然大公司的IDC機房還是不可或缺的。
2.運維人員要求提高
由於第一個影響,運維人員雖然不需要做線下運維,但線上運維的難度將更大。首先,如果是使用Amazon aws或者Microsoft Azure這種大型公有雲,對於平台的配置和使用就具有比較高的專業性。由於雲服務帶來的資源整合,自動化運維勢必是以後高級運維的發展趨勢。運維人員不僅需要掌握公有雲的熟練配置,某些情況先下還需要掌握OpenStack這種私有雲。配合這些雲服務需要開發和管理新的自動化運維平台,這就對運維人員提出了相當高的要求。
3.大膽的猜想—第三方運維
就傳統運維而言,沒有公司會放心將涉及核心業務的運維部門交給第三方外包,但如果雲服務發展到一個相當成熟的階段,大部分的企業都採用雲服務,那麼對於高級運維的人員的需求將非常大。我們都知道使用雲服務是沒有地域限制的,就算你在一個小山溝只要有網路,你同樣可以使用雲服務,而線上運維同樣也可以擺脫地域限制。舉一個小例子:在小城市一個公司使用雲服務,想要招到符合雲服務要求的專業運維人員是比較困難的,因為這些人員大部分都集中在發達城市。但公司又不得不需要這些專業的人員,只能尋找線上運維。(目前其實國內已經出現了一些第三方運維團體,但只針對於小公司和個人。)一旦線上運維的需求發展到一個程度,勢必會形成產業鏈。也許不久的將來國內會有專門做運維的公司出現,當然這只是我的個人猜想,腦洞大開而已。
總結:只是隨心的一些想法,說出來只為自娛自樂,只希望那些想做運維和已經成為運維的朋友們在這一行能夠越走越好,畢竟運維目前在國內不是一個被重視的行業,走一步算一步吧。
推薦閱讀: