Linux運維的必備技能
無論你是準備從事Linux運維工作的菜鳥,還是早已入門的老鳥。在網際網路時代,裝置和IT技術更新永無止境。作為一個Linux運維人員你無法阻止技術的更新,但是我們可以有“工欲善其事,必先利其器”的覺悟,腳踏實地走自己的道,修自己的行。
Linux運維人員主要劃分為:初級、中級和進階三個等級,不同級别的Linux運維人員需要掌握的技能不同。本文主要為大家介紹各個等級人員需要掌握的必備技能,進而指引同行朋友在修行的過程中少走彎路。隻屬于個人多年的領悟,由于時間問題難免有不足之處,如有不足之處請發表評論!我會加以修正,進而達到寫本文的初衷。
俗話說“隔行如隔山”,尤其對于一個計算機小白的話,入門很不容易。建議你先科普一下計算機的組成和工作原理、處理器的體系結構及原理、存儲器、I/O裝置、記憶體原理和檔案系統等。通過這些的學習至少能夠讓你對計算機有一個基本的認識,如果你能更深入的了解這方面的知識對于你日後對Linux系統調優起着不可取代的作用。當然你也可是試着做一次伺服器的裝置選型,也能夠讓你去了解更多關于硬體的知識。
技術關鍵詞:CPU、記憶體、磁盤、IO、檔案系統
推薦讀物<<現在作業系統>>和<<深入了解計算機系統>>。
接下來就是Linux作業系統的選擇,将核心、源代碼及相關的應用程式組織構成一個完整的作業系統,讓一般的使用者可以簡便地安裝和使用Linux,這就是所謂的發行版本(distribution)。我們一般談論的Linux系統便是針對這些發行版本。在衆多的發行版中選擇一個适合入門學習的版本也不是一件容易的事。對于學習Linux初期推薦選擇RHEL或CentOS這些“老牌”的作業系統;如果你隻是為了看看Linux的華麗的桌面,推薦選擇适合大衆的Ubuntu;如果你想定制一個作業系統,那不防試試Gentoo。也就說Linux有迎合大衆各種口味的作業系統,隻有你想不到的,沒有它沒有的!
<a href="http://s3.51cto.com/wyfs02/M01/71/3A/wKioL1XJh5rjx-j0AADls2b52GE757.jpg" target="_blank"></a>
目前,CPU和記憶體的發展速度可以說是一日千裡,固态硬碟的出現,擺脫了機械硬碟使用機械轉子帶動多個磁盤矽片的時代。但是其昂貴的價格,不能将其普及到所有的伺服器上。很多伺服器依然使用機械硬碟,機械硬碟的I/O速度取決于其轉速。轉速的增加,會使資料的讀寫效率有所提高,但與CPU的速度相比,磁盤的速度相對來說越來越慢了。這個速度差異導緻單個磁盤無法與CPU速度比對。解決磁盤速度問題的方法是使用磁盤陣列(RAID),可以減少維護時間,增強資料安全性,保證應用的性能。
對于中小型系統,無論使用怎樣部署都沒有多大的問題,重點是把握可恢複性。磁盤陣列支援的I/O通路次數和I/O資料傳輸與RAID設計算法有關。業務的不同,讀和寫操作的頻繁次數自然不同,對于讀操作頻繁的系統适用于RAID1和RAID5(例如:Web伺服器),對于寫操作頻繁的系統适用于RAID10(例如:資料庫)。
安裝系統前,避免不了合理的選擇RAID陣列級别,提高儲存設備的可靠性和效率,同時還要考慮預算,盡量的降低成本。
Linux作業系統有GUI和字元界面的安裝方式,初期推薦你使用GUI和中文的安裝方式快速的掌握作業系統的安裝,之後就使用英文和字元的安裝方式進行安裝,這樣就可以将安裝過程看的更清楚和專業。最終的目标是實作定制化安裝作業系統,按照伺服器上跑的業務,合理的規劃磁盤分區和選擇要安裝的軟體。定制化安裝系統可以提高系統的安裝速度,給予我們意想不到的穩定性和安全性。
<a href="http://s3.51cto.com/wyfs02/M00/71/3A/wKioL1XJh8mRctuuAAFr8Jj2LHY654.jpg" target="_blank"></a>
技術關鍵詞:開源、GNU、GPL、POSIX、Linux核心、RAID、RAID等級、磁盤、磁盤原理、塊、超級塊、檔案系統、i節點
推薦讀物<<鳥哥的私房菜>>和<< RedHatEnterprise Linux5系統管理寶典>>。
恭喜你,你已經掌握的Linux系統的安裝。安裝後你輸入使用者名和密碼登入系統後,第一眼看到的使用者界面就是Shell,這個時候有必要知道Linux系統的組成、Shell解析指令的過程、常見的Shell版本、Shell的功能、Shell的元字元等。
Linux作業系統是一個可以放棄滑鼠的作業系統,一切皆是檔案, 一切皆是指令, 指令就是一切, 就像李甯的廣告詞一樣“一切皆有可能”。Linux系統上有成百上千的指令,分為内置指令和外置指令,雖然這些指令的功能不同,幸好它們的使用方式和規則都是統一的,這就是Linux指令的文法。了解Linux指令的文法和養成使用Linux指令的好習慣是學習Linux運維的第一步,例如:指令和參數嚴格區分大小寫、合理的使用Tab鍵補全指令和善用Linux幫助手冊快速擷取指令的幫助。對于Linux初級運維來說不止要掌握這些人人皆知的使用習慣,實際上我們可以認為Linux初級人員就是一個單機管理者或者稱為Linux系統管理者,對于Linux的單機管理至少要掌握如下技術。下圖中顯示了Linux初級運維需要掌握的技術:
這些知識隻是讓你步入運維行業中最基本的一步,本來初級和中級運維在很多時候很難細緻的去區分,對于國中級運維除了掌握以上的技術,還需要掌握企業常見的網絡服務(例如:DHCP、DNS、FTP、Samba、Mail、NFS等)和網站架構LAMP、LNMP的部署及安全加強。使用Shell編寫常用的安裝、監控(CPU、記憶體、磁盤)腳本;正規表達式、sed、awk、sort、uniq、cut、find、grep等工具的使用。
<a href="http://s3.51cto.com/wyfs02/M01/71/3F/wKioL1XJwfywMNfaAAIkRslbGKM086.jpg" target="_blank"></a>
上圖中主要介紹了Shell腳本程式設計和LAMP的學習方向,通過Shell編寫日常CPU、記憶體、硬碟和服務的監控腳本和報警、統計Web伺服器的通路次數和通路排名、MySQL資料庫備份腳本等。掌握LAMP和LNMP的部署和日常維護。防火牆的使用,例如:iptables和硬體防火牆的原理和規則的添加。
技術關鍵詞:DHCP、DNS、FTP、Samba、Mail、NFS、Apache、MySQL、PHP、Nginx、Shell
推薦讀物:<<鳥哥的私房菜服務>>、<<MySQL資料庫開發、優化與管理維護>>、<<更安全的Linux網絡>>、<<實戰Nginx_取代Apache的高性能Web伺服器>>、<<Unix.Shell程式設計>>、<<LINUX與UNIX SHELL程式設計指南>>、<<進階Bash腳本程式設計指南>>
雲計算和大資料時代的來臨,未來對運維人員的要求隻能是越來越高,多次看到“學會運維自動化、走遍天下都不怕”給人一種運維不自動化就不是運維,企業不雲計算就不叫企業。事實并非如此,很多技術隻能說是一個趨勢,并未形成大勢。隻不過作為技術的我們需要關注未來的趨勢,在空閑的時間去掌握這些技術。
對于進階運維來說,不僅需要豐富的知識體系還需要一線的經驗,是以說精通還是很難的,不是我們看到很多剛畢業的學生在履歷中寫出了各種精通,由于是進階Linux運維,不經過多年的鍛煉是達不到較高的境界。是以進階運維是稀缺型人才,對于企業來說也很難找到适合自己的人才。
進階運維是一個非常專業職位,進階運維需要掌握相當多的知識,包括但不限于網絡技術、系統程式設計、運維流程及思想、虛拟化、自動化運維體系建構、資料庫管理,雲計算平台應用,大資料等。
技術關鍵詞:高可用、高并發、負載均衡、雲計算、大資料、自動化、監控工具、虛拟化、中間件、架構、讀寫分離、動态分離
推薦讀取:<<建構高性能Web站點>>、<<高性能MySQL>>、<<精通Puppet配置管理工具>>、<<高性能Linux伺服器建構實戰運維監控性能調優與叢集應用>>、<<CDN技術詳解>>、<<實用負載均衡技術>>、<<高性能網站建構實踐>>、 <<大型網站技術架構>>、<<Openstack實戰指南>>
寫之前就感覺不好界定運維的等級,結果寫完之後這種感覺更加強烈,有些技術你既可以說他是進階技術也可以說他很基礎。我認為,技術沒有等級,隻要我們願意去還原技術本身的面目,再簡單的技術你也會感覺“有點意思”。最後祝願各位,在技術的不歸路上,我的技術我做主。
本文轉自yjlsy 51CTO部落格,原文連結:http://blog.51cto.com/baidu/1683613,如需轉載請自行聯系原作者