維運是做什麼的:工作內容、崗位分類和技能要求
維運就是讓系統持續、穩定、安全地執行。開發把功能做出來,維運負責把它部署上線、盯住它的狀態、出了問題第一時間恢復,並保證資料丟不了。日常工作可以歸成五項:上線變更、監控告警、備份恢復、故障處理和巡檢,不同崗位的區別在於管的物件不同。
維運是做什麼的?一句話:讓系統持續、穩定、安全地執行。“維運”是“執行維護”的簡稱,對應英文的 Operations(Ops)。開發人員把網站、App、業務系統寫出來,維運人員負責把它部署到伺服器上,持續監控它的狀態,出了故障第一時間恢復,定期備份保證資料不丟,並在業務增長前把伺服器、頻寬、儲存準備好。日常工作可以歸為五項:上線與變更、監控告警、備份恢復、故障處理、巡檢。按管理的物件不同,維運又分為系統維運、網路維運、應用維運、機房 IDC 維運,以及更偏工程化的 DevOps 和 SRE。
維運是什麼意思:用可用性衡量工作成果
維運做得好不好,最直接的衡量標準是可用性:一段時間內系統能正常提供服務的時間佔比。幾個“9”對應的允許中斷時間如下:
| 可用性目標 | 每月(按 30 天)允許中斷 | 每年允許中斷 |
|---|---|---|
| 99% | 7.2 小時 | 87.6 小時,約 3.65 天 |
| 99.9% | 43.2 分鐘 | 8.76 小時 |
| 99.95% | 21.6 分鐘 | 4.38 小時 |
| 99.99% | 4.32 分鐘 | 約 52.6 分鐘 |
從 99.9% 到 99.99%,每月允許的中斷從 43 分鐘縮到 4 分鐘,這時靠人半夜爬起來重啟已經來不及,必須有冗餘架構、自動切換和完善的監控。所以維運工作的本質,是用流程、工具和架構,把“出問題”的機率和“出問題後的影響時間”都壓下來。
維運的五項日常工作
| 工作 | 做什麼 | 做到什麼程度才算合格 |
|---|---|---|
| 上線與變更 | 釋出新版本、改配置、擴容、升級系統和軟體 | 每次變更有方案、有回滾步驟、有驗證方法,留下記錄 |
| 監控告警 | 採集伺服器、網路、應用的指標,異常時通知值班人員 | 故障先由監控發現,而不是由使用者投訴發現 |
| 備份恢復 | 定期備份資料庫、檔案和配置,並演練恢復 | 恢復演練成功過,知道恢復一次要多長時間 |
| 故障處理 | 接到告警或報障後定位、止損、恢復、覆盤 | 有分級標準和回應時限,覆盤後同類問題不再重複 |
| 巡檢 | 按清單定期檢查容量、效能、證書、硬體和機房環境 | 隱患在變成故障之前被發現 |
上線與變更:先想好怎麼退回來
很多故障都發生在變更之後,所以變更是維運最需要流程約束的環節。一次標準的變更按這個順序走:
- 寫方案:改什麼、影響哪些業務、操作步驟、回滾步驟、驗證方法;
- 評審:負責人確認風險和時間視窗,重要業務同步通知相關方;
- 視窗內執行:例如安排在 22:00 至次日 06:00 的業務低峰,按方案逐步操作;
- 驗證:按事先寫好的方法確認業務正常,例如關鍵頁面返回 200、錯誤率沒有上升;
- 記錄:結果寫進變更記錄,失敗就按回滾步驟恢復,事後分析原因。
沒有回滾方案的變更不執行,這是最樸素也最有用的一條規矩。
監控告警:先分級,再通知
監控覆蓋三層:硬體和機房(溫度、電源、硬碟)、系統和網路(CPU、記憶體、磁碟、頻寬、丟包)、應用(請求量、錯誤率、回應時間)。常用的判斷框架是 Google SRE 提出的四個黃金指標:延遲、流量、錯誤、飽和度。告警必須分級,否則值班人員會被大量無關緊要的訊息淹沒,真正的故障反而被忽略。下面是一套可參考的分級(數值是範例,按業務自行約定):
| 級別 | 典型情況 | 回應要求(範例) | 通知方式 |
|---|---|---|---|
| P1 | 核心業務不可用,機房斷電或斷網 | 5 分鐘內回應,每 30 分鐘同步進展 | 電話加群訊息,同時通知主管 |
| P2 | 部分功能故障,冗餘節點當機 | 15 分鐘內回應 | 電話或即時訊息 |
| P3 | 磁碟使用率超過 85%,證書 14 天內到期 | 當天工作時間內處理 | 即時訊息或工單 |
| P4 | 備份完成、計劃任務結果等通知 | 無需即時回應 | 郵件或日報 |
備份恢復:沒恢復過的備份不算備份
兩個指標決定備份方案:RPO(最多能丟多長時間的資料)和 RTO(多長時間內必須恢復)。例如資料庫每天凌晨全量備份、每小時備份一次增量日誌,RPO 就是 1 小時。存放上遵循 3-2-1 原則:至少 3 份資料,放在 2 種不同的介質上,其中 1 份在異地。最容易被省略的是恢復演練:每季度把備份恢復到一台測試伺服器上,記錄實際耗時,這個時間才是你真實的 RTO。
故障處理:先恢復,再找原因
故障處理的順序是:發現 → 確認影響範圍 → 止損 → 定位根因 → 恢復驗證 → 覆盤。止損優先於定位:最近有變更就先回滾,單台伺服器異常就先摘出負載均衡,流量異常就先限流,業務恢復了再慢慢查原因。覆盤寫清時間線、根因、改進項、負責人和完成期限,目的是讓同類故障不再發生,而不是追究個人。
巡檢:把隱患擋在故障之前
伺服器每日巡檢可以寫成指令碼,每天跑一遍,有異常再人工處理:
uptime # 負載是否明顯高於 CPU 核數
df -hT | awk 'NR==1 || $6+0 >= 80' # 使用率 80% 以上的分割槽
free -h # 記憶體和 swap 使用情況
systemctl --failed # 啟動失敗的服務
journalctl -p err --since "24 hours ago" | tail -n 20 # 近 24 小時的錯誤日誌
journalctl -u ssh -u sshd --since "24 hours ago" | grep -c "Failed password" # 近 24 小時 SSH 密碼登入失敗次數
echo | openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null \
| openssl x509 -noout -enddate # HTTPS 證書到期時間
機房的巡檢還包括溫溼度、UPS 和空調執行狀態、機櫃和裝置的告警指示燈,通常按班次記錄。
維運崗位分類:五類維運各做什麼
| 崗位 | 管什麼 | 日常工作 | 常用工具 |
|---|---|---|---|
| 系統維運 | 伺服器和作業系統 | 裝系統、打補丁、管帳號許可權、效能調優、儲存和備份 | Linux 命令、Shell、Ansible、Zabbix 或 Prometheus |
| 網路維運 | 交換器、路由器、防火牆、出口線路 | 配置 VLAN 和路由、排查丟包和延遲、處理線路故障、做網路變更 | 裝置命令列、ping、mtr、tcpdump、SNMP 監控 |
| 應用維運 | 業務系統及其中介軟體 | 釋出上線、管理 Nginx、Tomcat、MySQL、Redis 等元件,分析日誌,規劃容量 | CI/CD 流水線、日誌平台、APM |
| 機房 IDC 維運 | 機房裡的物理設施和硬體 | 裝置上下架、佈線、巡檢、換件報修、動環告警處理、客戶進出陪同 | BMC 遠端管理、DCIM、工單系統、動環監控 |
| DevOps / SRE | 交付流程和系統可靠性 | 建設 CI/CD 和基礎設施即程式碼,制定 SLO,組織值班和覆盤,用開發手段消除重複勞動 | Git、Terraform、Kubernetes、Prometheus、Python 或 Go |
此外,規模大的公司還會單獨設資料庫維運(DBA)和安全維運崗位。小公司裡,一個維運往往同時兼著系統、網路和應用三塊。
DevOps 和 SRE 容易混淆。DevOps 是一種協作方式,主張開發和維運共同負責從寫程式碼到線上執行的全過程,代表實踐是持續整合、持續交付和基礎設施即程式碼。SRE(站點可靠性工程)起源於 Google,用軟體工程的方法做維運:用 SLO 量化可靠性目標,用“錯誤預算”平衡釋出速度和穩定性。例如 SLO 定為每月 99.9%,這個月的錯誤預算就是 43.2 分鐘,用完了就暫停新功能上線、優先修穩定性問題。Google 的 SRE 實踐還要求重複性的手工維運工作不超過工作時間的一半,其餘時間用來寫工具、改進系統。
崗位與技能要求對照:維運需要學什麼
| 崗位 | 必備技能 | 加分項 |
|---|---|---|
| 系統維運 | Linux 系統管理、Shell 指令碼、儲存與 RAID、常見服務的配置 | Ansible 等批次管理工具,虛擬化平台 |
| 網路維運 | TCP/IP、子網劃分、VLAN、靜態路由,至少一個廠商裝置的命令列 | OSPF、BGP 等路由協議,抓包分析 |
| 應用維運 | Linux、Nginx 等中介軟體、資料庫基本操作、日誌分析 | 能讀懂業務架構,CI/CD |
| 機房 IDC 維運 | 伺服器硬體、佈線規範、BMC 使用、供電與製冷常識 | 網路和 Linux 基礎,指令碼自動化 |
| DevOps / SRE | 程式設計(Python 或 Go)、容器與 Kubernetes、監控體系、CI/CD | 分散式系統原理,效能分析 |
零基礎入門,建議按這個順序學,每一步都在自己的虛擬機器或便宜的雲伺服器上動手:
- Linux 基礎:檔案和許可權、程序、軟體包、systemd 服務、日誌檢視;
- 網路基礎:IP 與子網、DNS、TCP 三次握手、常用排查命令;
- Shell 指令碼:把一項每天手工做的檢查寫成指令碼,放進定時任務;
- 一套 Web 服務:從零搭起 Nginx、應用程式和 MySQL,配好 HTTPS;
- 一套監控:用 Zabbix 或 Prometheus 監控上面這套服務,設定告警;
- 一個自動化工具:用 Ansible 把第 4 步的部署過程寫成劇本,一條命令重建整套環境。
做完這六步,再按興趣往系統、網路、應用或 SRE 方向深入。
維運工程師的一天
下面是兩種崗位一個普通工作日的範例,實際安排因公司和班制而異:
| 時間 | 系統或應用維運(網際網路公司) | 機房 IDC 維運(白班) |
|---|---|---|
| 09:00 | 看夜間告警和值班記錄,確認有沒有遺留問題 | 交接班,核對夜班處理過的工單和告警 |
| 09:30 | 看監控大盤:錯誤率、磁碟、備份任務是否成功 | 巡檢機房:溫溼度、UPS、空調、機櫃告警燈 |
| 10:30 | 處理工單:開通帳號、給資料庫擴容磁碟 | 上架兩台新伺服器:接線、配 BMC 位址、錄入資產台帳 |
| 13:30 | 參加變更評審,確認晚上發版的方案和回滾步驟 | 按工單為客戶更換故障硬碟,舊盤登記返修 |
| 15:00 | 寫指令碼,把每週手工匯出的報表改成自動生成 | 處理報障“伺服器連不上”:先看遠端控制檯,再查交換器連接埠 |
| 17:30 | 更新文件,交代晚上值守的注意事項 | 寫交接記錄,未完成的工單交給夜班 |
| 22:00 | 在變更視窗執行發版,驗證後結束;本週輪到 on-call | 夜班同事值守動環和網路告警 |
可以看出兩類崗位的共同點:大量時間花在工單、告警和變更這三條線上。工作做得好的維運,會不斷把重複的事交給指令碼和系統,把時間留給排障和改進。
機房維運怎麼用 DCIM、工單和監控系統
機房 IDC 維運的工作物件是成百上千台物理裝置,靠記憶和表格很快就會管不過來,通常要靠三類系統配合:監控系統負責發現問題,工單系統負責派活和留痕,DCIM 負責記錄每台裝置在哪個機櫃、接在哪個交換器連接埠、用哪些 IP。
以 DCIM 機房管理系統 為例,它的能力清單裡包含工單管理、故障管理、維修管理、流量監控和網路 TOP 排行:頻寬異常時從即時流量圖和排行裡定位是哪台伺服器,報修和換件的過程在故障與維修記錄裡留痕。上面一天工作流裡“伺服器連不上”這類報障,可以在 IPMI 遠端管理 裡直接開啟伺服器的 VNC 控制檯判斷卡在哪一步,必要時遠端重啟或掛載映象修復,不用先跑一趟機櫃;遠端會話全程錄影,SSH 會話另有命令級日誌,交接和事後覆盤時能準確還原誰在什麼時候做了什麼。
常見問題
維運要考哪些證書?
證書不是入行門檻,但能幫你係統地學一遍,也有助於簡歷篩選:Linux 方向常見紅帽的 RHCSA、RHCE,網路方向常見華為 HCIA、HCIP 和思科 CCNA,容器方向有 CNCF 的 CKA。面試時更看重動手經驗,能講清自己處理過的故障比證書更有說服力。
維運要值夜班嗎?
多數崗位要。機房維運通常倒班,系統和應用維運多為白班加輪流值守(on-call),告警在夜裡響時值班人員要在約定時間內回應;較大的變更也常安排在夜間業務低峰的視窗執行。
維運工程師要會寫程式碼嗎?
至少要會 Shell,能把重複操作寫成指令碼;往 DevOps、SRE 方向走,要熟練掌握 Python 或 Go,能開發自動化工具、呼叫各種系統的 API。不寫程式碼也能入行,但職業發展的空間會小很多。