6 個(gè)運(yùn)維常見故障及排查方法,是個(gè)運(yùn)維就得會(huì)~
來源:湖北國菱計(jì)算機(jī)科技有限公司-湖北國聯(lián)計(jì)算機(jī)科技有限公司-荊州網(wǎng)站建設(shè)-荊州軟件開發(fā)-政府網(wǎng)站建設(shè)公司
時(shí)間:2025-03-04
“穩(wěn)定是偶然,異常才是常態(tài)”。這句話用來形容IT運(yùn)維的工作再合適不過了。 因?yàn)閷?duì)于IT運(yùn)維來說,工作最常遇到的就是不穩(wěn)定性帶來的各種故障,經(jīng)常圍繞發(fā)現(xiàn)故障、響應(yīng)故障、定位故障、恢復(fù)故障這四大步驟打轉(zhuǎn)。
一、Linux 系統(tǒng)無法啟動(dòng)
原因1、
文件系統(tǒng)配置不當(dāng),比如/etc/fstab文件等配置錯(cuò)誤或丟失,導(dǎo)致系統(tǒng)錯(cuò)誤無法啟動(dòng)。一般是人為修改錯(cuò)誤或者文件系統(tǒng)故障。
排查方法:
系統(tǒng)配置/etc/fstab錯(cuò)誤或丟失而無法啟動(dòng),當(dāng)啟動(dòng)的時(shí)候,出現(xiàn)starting system logger后停止了。
解決方法:想辦法恢復(fù)/etc/fstab文件,利用Linux rescue修復(fù)模式登錄系統(tǒng),從而獲取掛載點(diǎn)和分區(qū)信息,重構(gòu)/etc/fstab文件。
原因2 、
非法關(guān)機(jī),導(dǎo)致root文件系統(tǒng)破壞,也就是Linux根分區(qū)破壞,系統(tǒng)無法正常啟動(dòng)。
排查方法:
Linux下普遍采用的是ext3/ext4文件系統(tǒng),ext3/ext4 是一個(gè)具有日志記錄功能的日志文件系統(tǒng),可以進(jìn)行簡單的容錯(cuò)和恢復(fù),但是在一個(gè)高負(fù)荷讀寫的 ext3 文件系統(tǒng)下,如果突然發(fā)生掉電,就很有可能發(fā)生文件系統(tǒng)內(nèi)部結(jié)構(gòu)不一致,導(dǎo)致文件系統(tǒng)破壞。 Linux 在啟動(dòng)時(shí)會(huì)自動(dòng)去分析和檢查系統(tǒng)分區(qū),如果發(fā)現(xiàn)文件系統(tǒng)有簡單的錯(cuò)誤,會(huì)自動(dòng)修復(fù),如果文件系統(tǒng)破壞比較嚴(yán)重,系統(tǒng)無法完成修復(fù)時(shí),系統(tǒng)就會(huì)自動(dòng)進(jìn)入單用戶模式下或者出現(xiàn)一個(gè)交互界面,提示用戶介入手動(dòng)修復(fù),現(xiàn)象類似下面所示:
從這個(gè)錯(cuò)誤可以看出,系統(tǒng)根分區(qū)文件系統(tǒng)出現(xiàn)了問題,系統(tǒng)在啟動(dòng)時(shí)無法自動(dòng)修復(fù),然后進(jìn)入到了一個(gè)交互界面,提示用戶進(jìn)行系統(tǒng)修復(fù)。這個(gè)問題發(fā)生的機(jī)率很高,引起這個(gè)問題的主要原因就是系統(tǒng)突然掉電,引起文件系統(tǒng)結(jié)構(gòu)不一致。一般情況下解決此問題的辦法是采用fsck命令,進(jìn)行強(qiáng)制修復(fù)。
解決方法:
根據(jù)上面的錯(cuò)誤提示,當(dāng)按下“Ctrl-D”組合鍵后系統(tǒng)自動(dòng)重啟,當(dāng)輸入root密碼后進(jìn)入系統(tǒng)修復(fù)模式,在修復(fù)模式下,可以執(zhí)行fsck命令,具體操作過程如下:
需要注意的是,在執(zhí)行fsck 的時(shí)候,一定要先卸載要修復(fù)的分區(qū),然后再執(zhí)行修復(fù)操作!
原因三:
Linux 內(nèi)核文件丟失或者崩潰,從而無法啟動(dòng),也可能是因?yàn)閮?nèi)核升級(jí)錯(cuò)誤或者內(nèi)核存在 bug。這種情況一般 Linux 系統(tǒng)啟動(dòng)會(huì)報(bào)錯(cuò)找不到內(nèi)核文件,而內(nèi)核文件存儲(chǔ)在 /boot 分區(qū),主要包括內(nèi)核文件和初始化文件:
1、vmlinuz:內(nèi)核鏡像文件,包含內(nèi)核代碼和數(shù)據(jù)
顯示 error: file '/vmlinuz'not found 解決方法:
a. 使用可啟動(dòng)修復(fù)介質(zhì)啟動(dòng)系統(tǒng),并掛載系統(tǒng)磁盤的/boot分區(qū);
b. 從安裝介質(zhì)或系統(tǒng)備份中提取vmlinuz內(nèi)核文件,復(fù)制到/boot分區(qū);
c. 更新引導(dǎo)配置(grub.cfg),將menuentry塊中的linux行指向vmlinuz內(nèi)核文件;
d. 重啟系統(tǒng),在引導(dǎo)菜單選擇更新后的菜單項(xiàng)啟動(dòng)系統(tǒng)。
2、initrd/initramfs:初始化 RAM 磁盤,包含啟動(dòng)時(shí)需要的模塊和驅(qū)動(dòng) 顯示error:file'/initrd.img'notfound解決方法:
a. 參考內(nèi)核文件丟失的解決步驟a,掛載/boot分區(qū)和獲取initrd.img文件;
b. 將initrd.img文件復(fù)制到/boot分區(qū);
c. 更新 grub.cfg,找到 initrd 相關(guān)行,將其指向新文件;
d. 重啟系統(tǒng),啟動(dòng)更新后的菜單項(xiàng)。
原因4:
硬件故障,比如主板、電源、硬盤等出現(xiàn)問題,導(dǎo)致 Linux 無法啟動(dòng)。 解決方法:一般來說由硬件造成的故障,只需更換硬件設(shè)備即可解決。
二、Linux系統(tǒng)網(wǎng)絡(luò)故障
排查1:檢查網(wǎng)絡(luò)硬件
檢查網(wǎng)絡(luò)故障,首先要排除網(wǎng)絡(luò)硬件設(shè)備是否存在問題。比如網(wǎng)卡,網(wǎng)線,路由器,交換機(jī)等設(shè)備是否正常。這些是網(wǎng)絡(luò)正常運(yùn)行的基本條件,如果發(fā)現(xiàn)某些設(shè)備出現(xiàn)故障,只需更換硬件即可解決問題。
排查2:檢查網(wǎng)卡是否正常工作
a. 檢查網(wǎng)卡是否正常加載可以通過 ifconfig 命令判斷網(wǎng)卡是否正常加載。如果通過 ifconfig 可以顯示網(wǎng)絡(luò)接口的配置信息,表示系統(tǒng)找到網(wǎng)卡驅(qū)動(dòng)程序,網(wǎng)卡加載正常;解決方法:如果發(fā)現(xiàn)問題網(wǎng)卡,我們可以使用ethtool工具查看問題網(wǎng)卡的具體狀態(tài)信息(注意:Speed/Link deteced等字段)
b. 檢查網(wǎng)卡IP設(shè)置是否正確接下來就要檢查網(wǎng)卡的軟件設(shè)定,比如IP是否配置,配置是否正確,確保IP的配置和局域網(wǎng)其它計(jì)算機(jī)配置沒有沖突。
排查3:檢查局域網(wǎng)內(nèi)主機(jī)能否互連
檢查網(wǎng)絡(luò)之間的連通是否存在故障,可以先通過ping命令測試局域網(wǎng)主機(jī)之間的連通性,然后ping網(wǎng)關(guān),檢測主機(jī)到網(wǎng)關(guān)的通信是否正常。
排查4:檢查系統(tǒng)路由表信息是否正確
檢查系統(tǒng)路由表狀態(tài)是處理網(wǎng)絡(luò)故障的一種很重要的方法。很多時(shí)候都是ip地址沒有配錯(cuò),網(wǎng)卡也正常加載但是路由配置不正確,而導(dǎo)致網(wǎng)絡(luò)問題的出現(xiàn)。因此需要檢查系統(tǒng)的路由表設(shè)置是否正確,如果一個(gè)Linux系統(tǒng)有兩塊網(wǎng)卡,同時(shí)兩塊網(wǎng)卡設(shè)置的IP不在一個(gè)網(wǎng)段,要特別注意系統(tǒng)路由表的設(shè)置。例如下面這個(gè)系統(tǒng)的網(wǎng)絡(luò)接口信息:
從上面輸出可知,本系統(tǒng)有兩塊網(wǎng)卡,分別配置不同網(wǎng)段的IP地址,假定eth0 通過映射的方式對(duì)外提供ssh連接服務(wù),而eth1僅供局域網(wǎng)主機(jī)之間共享數(shù)據(jù)使用。 現(xiàn)在的問題是,外界無法ssh遠(yuǎn)程登錄到此系統(tǒng),而網(wǎng)卡加載沒有問題,網(wǎng)卡IP設(shè)置也沒問題,接下來看看此系統(tǒng)的路由設(shè)置:
此時(shí)外界就可以通過ssh服務(wù)遠(yuǎn)程連接到 Linux 系統(tǒng)了。
排查5:檢查DNS解析
在Linux系統(tǒng)中,有兩個(gè)文件用來指定系統(tǒng)到哪里尋找相關(guān)域名解析的庫,分別是文件 /etc/host.conf 和 /etc/nsswitch.conf。 /etc/host.conf 文件指定系統(tǒng)如何解析主機(jī)名,Linux通過域名解析庫來獲得主機(jī)名對(duì)應(yīng)的IP地址。下面是RedHat Linux安裝后缺省的/etc/host.conf內(nèi)容:
order hosts,bind
其中,order 指定主機(jī)名查詢順序,這里表示首先查找/etc/hosts文件對(duì)應(yīng)的解析,如果沒有找到對(duì)應(yīng)的解析,接著就根據(jù)/etc/resolve.conf指定的域名服務(wù)器進(jìn)行解析。
/etc/nsswitch.conf 文件是由 SUN 公司開發(fā)的,用于管理系統(tǒng)中多個(gè)配置文件查詢的順序,由于 nsswich.conf 提供了更多的資源控制方式,nsswich.conf 文件現(xiàn)在已經(jīng)基本取代了 hosts.conf,雖然 LINUX 系統(tǒng)中默認(rèn)這兩個(gè)文檔都存在,但實(shí)際上起作用的是 nsswitch.conf 文件。
nsswitch.conf 文件每行的配置都以一個(gè)關(guān)鍵字開頭,后跟冒號(hào): 緊接著是空白,然后是一系列方法的列表。例如這段信息:
hosts: files dns
表示系統(tǒng)首先查詢主機(jī)庫文件,如果沒有找到對(duì)應(yīng)的解析,接著會(huì)去DNS配置文件指定的 DNS 服務(wù)器進(jìn)行解析。清楚了Linux下域名解析的原理和過程,我們就可以根據(jù)這兩個(gè)文件的設(shè)定,確定解析的順序,從而判斷出域名解析可能出現(xiàn)的問題。
排查6:檢查相關(guān)服務(wù)是否開啟
在一個(gè)應(yīng)用出現(xiàn)故障時(shí),必須要檢測服務(wù)本身。比如服務(wù)是否開啟,配置是否正確等。檢查服務(wù)是否正確打開,分為兩步,第一步是查看服務(wù)的端口是否打開:例如,我們不能用root用戶ssh登錄到192.168.60.133這臺(tái) Linux 服務(wù)器,首先檢查sshd服務(wù)的22端口是否打開:
# telnet 192.168.60.133 22
SSH-2.0-OpenSSH_4.3
這個(gè)輸出表示192.168.60.133 的22端口對(duì)外開放,或者可以說sshd服務(wù)是處于打開狀態(tài)。如果沒有任何輸出,可能是服務(wù)沒有啟動(dòng),或者服務(wù)端口被屏蔽。也可以在服務(wù)器上通過 netstat 命令檢查22端口是否打開: