對於新手系統管理員:如何在混亂中創建秩序

對於新手系統管理員:如何在混亂中創建秩序

我是 FirstVDS 系統管理員,這是我關於幫助新手同事的短期課程的第一個介紹性講座的文本。最近開始從事系統管理的專家面臨許多相同的問題。為了提供解決方案,我著手撰寫這一系列講座。其中的一些內容是特定於託管技術支援的,但總的來說,它們可能有用,即使不是對每個人來說,也是對許多人來說。因此,我改編了講座文本以在此處分享。

你的職位叫什麼並不重要——重要的是你實際上參與了管理工作。因此,讓我們從系統管理員應該做什麼開始。它的主要任務是整理、維持秩序並為未來秩序的增加做好準備。沒有系統管理員,伺服器就會變得一團糟。日誌沒有寫入,或者寫入了錯誤的內容,資源沒有得到最佳分配,磁碟上充滿了各種垃圾,系統開始慢慢地因如此混亂而死亡。冷靜!您身邊的系統管理員開始解決問題並消除混亂!

系統管理的支柱

然而,在開始解決問題之前,有必要熟悉管理的四個主要支柱:

  1. 文件
  2. 模板化
  3. 最佳化
  4. 自動化

這是基礎知識。如果您不根據這些原則建立工作流程,它將是低效的、低效的,並且通常與真正的管理沒有相似之處。讓我們分別看一下每一項。

Документация

Документация 並不意味著閱讀文件(儘管你離不開它),而是維護它。

如何儲存文件:

  • 您是否遇到過以前從未見過的新問題?寫出主要症狀、診斷方法及排除原則。
  • 您是否針對常見問題提出了新的、優雅的解決方案?把它寫下來,這樣一個月後你就不用重新發明它了。
  • 他們是否幫助您解決了您不明白的問題?寫下重點和概念,自己畫一個圖表。

主要想法是:在掌握和應用新事物時,你不應該完全相信自己的記憶。

您將採用什麼格式來執行此操作取決於您:它可以是帶有註釋的系統、個人部落格、文字檔案、實體記事本。最主要的是您的記錄符合以下要求:

  1. 別太長。突顯主要思想、方法和工具。如果理解某個問題需要深入了解 Linux 中記憶體分配的低階機制,請不要重寫您從中學到的文章 - 請提供指向該文章的連結。
  2. 您應該清楚這些條目。 如果線 race cond.lockup 不允許您立即理解您用此行描述的內容 - 請解釋。好的文檔不需要半小時就能理解。
  3. 搜尋是一個非常好的功能。 如果您寫部落格文章,請添加標籤;如果在實體筆記本中,請貼上帶有說明的小便利貼。如果您在文件中尋找答案所花費的時間與從頭開始解決問題所花費的時間一樣多,那麼文件就沒有什麼意義了。

對於新手系統管理員:如何在混亂中創建秩序

這就是文件的樣子:從記事本中的原始註釋(上圖),到帶有標籤、搜尋和所有可能的便利功能的成熟的多用戶知識庫(下圖)。

對於新手系統管理員:如何在混亂中創建秩序

您不僅不必兩次尋找相同的答案,而且記錄將對學習新主題有很大幫助(注意!),將提高您的蜘蛛意識(一眼就能診斷出複雜問題的能力),並將為您的行動新增組織。如果您的同事可以使用該文檔,那麼他們就可以在您不在場時弄清楚您在那裡堆積了什麼以及如何堆積。

模板化

模板化 是模板的創建和使用。為了解決最典型的問題,值得建立一個特定的操作模板。應使用標準化的步驟序列來診斷大多數問題。當您修復/安裝/優化某些東西時,應該使用標準化檢查表檢查該東西的性能。

模板化是組織工作流程的最佳方式。透過使用標準程序來解決最常見的問題,您會得到很多很酷的東西。例如,使用檢查表將允許您診斷對您的工作重要的所有功能,並放棄對不重要功能的診斷。標準化的程序將最大限度地減少不必要的投擲並減少出錯的可能性。

第一個重要的一點是程序和檢查表也需要記錄下來。如果你僅僅依靠記憶,你可能會錯過一些非常重要的檢查或操作並毀掉一切。第二個要點是,如果情況需要,所有模板實踐都可以而且應該進行修改。不存在理想且絕對通用的模板。如果有問題,但模板檢查沒有發現問題,這並不意味著沒有問題。然而,在開始測試一些不太可能的假設問題之前,先進行快速模板測試總是值得的。

優化

優化 不言而喻。工作流程需要在時間和勞動成本方面盡可能優化。有無數的選擇:學習鍵盤快速鍵、縮寫、正規表示式、可用工具。尋找這些工具的更實際用途。如果您每天呼叫某個指令 100 次,請將其指派給鍵盤快速鍵。如果您需要定期連接到相同的伺服器,請用一個單字寫一個別名來將您連接到那裡:

對於新手系統管理員:如何在混亂中創建秩序

熟悉可用的工具的不同選項 - 也許有更方便的終端用戶端、DE、剪貼簿管理器、瀏覽器、電子郵件用戶端、作業系統。了解您的同事和朋友使用哪些工具 - 也許他們選擇它們是有原因的。一旦你擁有了這些工具,就學習如何使用它們:學習按鍵、縮寫、提示和技巧。

充分利用標準工具 - coreutils、vim、正規表示式、bash。對於最後三個,有大量精彩的手冊和文件。在他們的幫助下,你可以很快地從「我感覺自己像一隻用筆記型電腦敲堅果的猴子」的狀態轉變為「我是一隻用筆記型電腦給自己點堅果鉗的猴子」。

自動化

自動化 將把困難的操作從我們疲憊的雙手轉移到不知疲倦的自動化手中。如果某個標準過程是用五個相同類型的命令執行的,那麼為什麼不將所有這些命令包裝在一個文件中並調用一個下載並執行該文件的命令呢?

自動化本身 80% 是編寫和優化您自己的工具(另外 20% 是試圖讓它們正常工作)。它可能只是一個進階的單行工具,也可能是具有 Web 介面和 API 的巨大萬用工具。這裡的主要標準是,創建一個工具所花費的時間和精力不應超過該工具為您節省的時間和精力。如果您花費五個小時編寫一個您永遠不再需要的腳本,而對於一個在沒有腳本的情況下需要花費一兩個小時才能解決的任務,這是一個非常糟糕的工作流程優化。只有當任務數量、類型和時間允許時,您才可以花費五個小時來創建工具,但這種情況並不常見。

自動化並不一定意味著編寫成熟的腳本。例如,要從清單中建立一堆相同類型的對象,您所需要的只是一個聰明的單行程式碼,它將自動執行您手動執行的操作,在視窗之間切換,並進行大量複製貼上。

實際上,如果您在這四個支柱上建立管理流程,您可以快速提高效率、生產力和資格。然而,這份清單還需要補充一項,沒有它,從事 IT 工作幾乎是不可能的——自我教育。

系統管理員自我教育

想要在這方面有一點能力,就需要不斷學習和學習新的東西。如果你沒有絲毫的慾望去面對未知並找出答案,你很快就會陷入困境。 IT領域不斷出現各種新的解決方案、技術和方法,如果你不至少從表面上研究它們,你就走上了失敗之路。資訊科技的許多領域都建立在非常複雜和龐大的基礎上。比如網路運營。網路和網路無所不在,你每天都會遇到它們,但一旦你深入研究它們背後的技術,你就會發現一門龐大且非常複雜的學科,研究它絕非易事。

我沒有將此項目包含在清單中,因為它對於一般 IT 而言非常關鍵,而不僅僅是對於系統管理而言。當然,你不可能立刻就學會所有的東西──你根本沒有足夠的時間。因此,在自學時,您應該記住必要的抽象層次。

您不必立即了解每個實用程式的內部記憶體管理如何運作,以及它如何與 Linux 記憶體管理交互,但最好了解 RAM 的概念以及為什麼需要它。您不需要知道 TCP 和 UDP 標頭在結構上有何不同,但了解協定工作方式的基本差異將是一個好主意。您不需要了解光學中的訊號衰減是什麼,但最好了解為什麼實際損耗總是跨節點繼承。知道某些元素如何在一定的抽象層級上工作並沒有必要在根本沒有抽象的情況下完全理解所有層級(你會發瘋),這並沒有什麼問題。

然而,在你的領域,在抽象層面上思考「嗯,這是一個允許你顯示網站的東西」並不是很好。以下講座將專門概述系統管理員在較低抽象層級工作時必須處理的主要領域。我會盡力將複習的知識量限制在最低抽象程度。

系統管理的 10 條戒律

所以,我們已經了解了四個主要支柱和基礎。我們可以開始解決問題了嗎?還沒有。在此之前,建議您熟悉所謂的「最佳實踐」和良好禮儀規則。如果沒有它們,您可能弊大於利。那麼,讓我們開始吧:

  1. 我的一些同事認為首要規則是「不傷害」。但我傾向不同意。當你試圖不去傷害時,你就無能為力——太多的行為可能具有潛在的破壞性。我認為最重要的規則是—— “進行備份”。即使你造成了一些傷害,你也可以隨時回滾,一切都不會那麼糟。

    您應該始終在時間和地點允許的情況下進行備份。您需要備份您將要更改的內容以及由於潛在的破壞性操作而可能丟失的內容。建議檢查備份的完整性以及所有必要資料的存在。檢查完所有內容後不應立即刪除備份,除非需要釋放磁碟空間。如果該位置需要,請將其備份到您的個人伺服器並在一周後將其刪除。

  2. 第二個最重要的規則(我自己也常違反)是 “別隱藏”。如果您做了備份,請寫下備份位置,這樣您的同事就不必尋找它。如果您做了一些不明顯或複雜的操作,請寫下來:您將回家,問題可能會重複或出現在其他人身上,並將使用關鍵字找到您的解決方案。即使您做了自己熟悉的事情,您的同事也可能不會。
  3. 第三條規則無需解釋: “永遠不要做一些你不知道、想像或理解其後果的事情”。如果你不知道指令的作用,不要從網路複製指令,先呼叫 man 並解析它們。如果您無法理解現成的解決方案的作用,請不要使用它們。將混淆程式碼的執行保持在絕對最低限度。如果您沒有時間弄清楚,那麼您就做錯了,您應該閱讀下一點。
  4. “測試”。新的腳本、工具、單行程式碼和命令應該在受控環境中進行測試,而不是在客戶端電腦上進行測試,即使破壞性操作的可能性很小。即使您備份了所有內容(並且確實做到了),停機也不是最酷的事情。為此創建一個單獨的伺服器/虛擬/chroot 並在那裡進行測試。有什麼東西壞了嗎?然後你就可以在「戰鬥」中啟動它。

    對於新手系統管理員:如何在混亂中創建秩序

  5. “控制”。盡量減少所有您無法控制的操作。一個軟體包依賴關係曲線可以拖垮一半的系統,為 yum remove 設定的 -y 標誌使您有機會從頭開始練習系統恢復技能。如果該操作沒有不受控制的替代方案,那麼下一點就是現成的備份。
  6. “查看”。檢查您的操作的後果以及是否需要回滾到備份。檢查問題是否真的解決。檢查錯誤是否重現以及在什麼條件下重現。檢查你的行動可以打破什麼。沒有必要相信我們的工作,但永遠不要去檢查。
  7. “交流”。如果您無法解決問題,請詢問您的同事是否曾經遇到此問題。如果您想應用有爭議的決定,請了解同事的意見。也許他們會提供更好的解決方案。如果您對自己的行為沒有信心,請與同事討論。即使這是您的專業領域,重新審視一下情況也可以澄清很多事情。不要為自己的無知感到羞恥。問一個愚蠢的問題,看起來像個傻瓜並得到答案,比不問問題,得不到答案,最終成為一個傻瓜要好。
  8. “不要無理拒絕幫助”。這一點與上一點相反。如果你被問到一個愚蠢的問題,請澄清並解釋。他們要求不可能的事——解釋這是不可能的以及為什麼,提供替代方案。如果你沒有時間(你真的沒有時間,不是慾望)——說你有一個緊急問題,很多工作,但你稍後會解決。如果同事沒有緊急任務,請主動聯繫他們並將問題委託給他們。
  9. “給予回饋”。您的一位同事是否開始使用新技術或新腳本,您是否遇到了這項決定的負面後果?報告一下。也許這個問題可以透過三行程式碼或五分鐘的改進技術來解決。您在軟體中遇到過錯誤嗎?報告錯誤。如果它是可重現的或不需要重現的,那麼它很可能會被修復。表達您的願望、建議和建設性批評,並提出相關問題供討論。
  10. “尋求回饋”。我們都是不完美的,就像我們的決定一樣,檢驗決定正確性的最佳方法就是提出來進行討論。如果您為客戶優化了某些內容,請讓他們監控工作;也許系統中的瓶頸不是您要尋找的地方。您已經編寫了一個幫助腳本 - 將其展示給您的同事,也許他們會找到改進它的方法。

如果你在工作中不斷地應用這些做法,大多數問題將不再是問題:你不僅可以將自己的錯誤和弄虛作假的次數減少到最低限度,而且你還將有機會糾正錯誤(在備份形式以及會建議您備份的同事)。此外 - 只有技術細節,正如我們所知,魔鬼就在其中。

您 50% 以上的時間必須使用的主要工具是 grep 和 vim。還有什麼可以更簡單呢?文字搜尋和文字編輯。然而,grep 和 vim 都是功能強大的多功能工具,可讓您有效地搜尋和編輯文字。如果某些 Windows 記事本允許您簡單地寫入/刪除一行,那麼在 vim 中您幾乎可以對文字執行任何操作。如果你不相信我,從終端呼叫 vimtutor 指令並開始學習。至於 grep,它的主要優點在於正規表示式。是的,該工具本身允許您相當靈活地設定搜尋條件和輸出數據,但如果沒有 RegExp,這就沒什麼意義。而且您需要了解正規表示式!至少在基本層面上是如此。首先,我建議你看看這個 視頻,它涵蓋了正規表示式的基礎知識及其與 grep 的結合使用。哦,是的,當您將它們與 vim 結合使用時,您將獲得使用文字執行此類操作的終極能力,您必須用 18 個以上的圖示來標記它們。

剩下的 50% 中,40% 來自 coreutils 工具包。對於 coreutils,您可以查看以下列表: 維基百科,整個清單的手冊都在網站上 GNU。本套未涵蓋的內容在實用程式中 POSIX。您不必記住所有按鍵,但至少大致了解基本工具的功能是有幫助的。你不必拄著拐杖重新發明輪子。不知何故,我需要在某些實用程式的輸出中用空格替換換行符,而我生病的大腦誕生了這樣的結構 sed ':a;N;$!ba;s/n/ /g',一個同事上來用掃帚把我從控制台趕走了,然後通過寫解決了問題 tr 'n' ' '.

對於新手系統管理員:如何在混亂中創建秩序

我建議您記住每個工具的用途以及最常用命令的鍵;對於其他一切,都有人。如果您有任何疑問,請隨時致電 man。並且一定要閱讀該男子本身 - 它包含有關您將發現的內容的重要資訊。

了解這些工具,您將能夠有效地解決您在實踐中遇到的大部分問題。在接下來的講座中,我們將了解何時使用這些工具以及它們所適用的底層服務和應用程式的框架。

FirstVDS 系統管理員 Kirill Tsvetkov 與您同在。

來源: www.habr.com

添加評論