Linux服 務器 服 務 器(如RadHat系 列、Ubutu系 列、Redflag系列)作為一種優秀的開源網絡操作系統,以其卓越的穩定性和可靠性而著稱。目前,基于Linux服務器的應用服務器,已經成為各種數據中心業務應用的重點使用對象。筆者就多年的信息化管理工作經驗,談一談在Linux服務器運維中具有通示性的一些問題及對應的解決方法或工作習慣。
系統管理員的責任是保持系統安全和順利運行,如果不能遠程登錄Linux服務器控制臺,所有系統運維任務都無從談起。筆者從實際工作經驗的角度,談一談Linux服務器無法登錄控制臺可能出現的問題。
1.檢查/var/log中的日志文件。/v a r/l o g/messages文件收集系統錯誤,來自守護進程的消息以及其他重要信息,它可能會表明問題的原因或更多癥狀。另外,檢查系統控制臺,有時系統問題相關的消息不寫入/var/log/messages中,而是顯示在系統控制臺上。
2.確定是否只有一個用戶或一個用戶的終端/工作站有問題或者是否問題更廣。
3.確保該用戶的主目錄存在,并且在/etc/passwd文件中有對應于該用戶的條目。驗證該用戶擁有其主目錄和啟動文件,并且它們是可讀的(而且該用戶對其主目錄有可執行權限的情況下)。確認在/etc/passwd中的該用戶登錄shell條目是準確的,并且存在指定的shell。
4.檢查該用戶的啟動文 件(.profile、.login、.bashrc等)。該用戶可能已對這些文件之一進行了編輯,并引入了禁止登錄的語法錯誤。
5.使用df來檢查整個文件系統。如果/tmp文件系統或該用戶的主目錄已滿,登錄有時會以意想不到的方式失敗。在某些情況下,可能能夠登錄到文本環境,但不能登錄到圖形環境。用戶登錄時啟動的應用程序無法創建臨時文件,或無法更新用戶主目錄中的文件時,登錄過程本身可能會終止。
6. 使 用 HTTPS、SSH、LDAP尤其是kerberos等加密登錄方法時,時鐘設置的時間不同可能會導致登錄失敗。還要確保DNS正常工作。一些網絡服務與名稱解析的相關性比較強,包括反向查找(即名稱解析問題會導致拖慢通過SSH的連接)。
當系統由于不明原因運行緩慢時,多半是大量無效的進程一直在后臺運行。此問題的表現包括很長的響應時間和很大的系統負荷,如使用w或uptime所示的數據大于1.0。最好運行top以迅速找到流氓進程。使用ps – ef可列出所有進程。在ps – ef輸出中要找的內容是大量的TIME列。例如,如果Firefox進程的TIME字段超過100.0,這一進程有可能運行不正常。然而,如果該用戶正在執行大量的Java工作,并且已經登錄很長時間,這個值就可能是正常的。檢查STIME字段以查看該進程啟動的時間,如果該進程的運行時間比用戶登錄在線的時間還長,最好終止它。
當用戶遇到問題,并在沒有通知任何人的情況下離開無人值守的終端時,最好終止該用戶擁有的所有進程。如果用戶在控制臺上運行GUI,終止啟動桌面環境的進程或窗口管理器本身。還要繼續查找包括gnomesession、startkde或其他以wm結尾的進程名。通常窗口管理器既是第一個也是最后一個要運行的進程,并在用戶注銷時退出。如果終止窗口管理器不起作用,可嘗試終止X服務器進程,這個進程通常列為/usr/bin/Xorg。如果上述操作失敗,當以該用戶身份登錄時,通過執行kill – 15 – 1命令或等效的kill – TERM – 1命令,可以終止用戶擁有的所有進程。使用– 1替換進程ID以告訴kill來給該用戶擁有的所有進程發送信號。例如,作為root可以輸入 #su zach –c ‘kill –TERM -1’,如果不能終止所有進程(有時TERM無法終止進程),可以使用KILL信號(– 9)。
而lsof(列出打開的文件)實用程序會顯示打開的文件名,其選項僅顯示某些進程,只有一個進程的某些文件描述符,或只有某些網絡連接(網絡連接使用文件描述符,就像普通文件一樣,lsof 也顯示這些)。使用 ps – ef 確定了可疑進程后,可以輸入#lsof –s –p pid,用可疑進程的進程ID替換PID,lsof會顯示PID進程打開的文件描述符列表。– s選項顯示所有打開文件的大小,– p選項則允許指定感興趣的進程PID 號(如果組合這些選項,則lsof不會運行)。文件大小信息用于確定該進程是否打開了一個非常大的文件。如果是這樣,需要聯系該進程的所有者,或者在必要情況下終止該進程。– rn選項表示每n秒重新顯示一次lsof的輸出。
從理論意義上講,系統遲早會用完現有的磁盤空間,因此不要填滿一個分區。當一個分區至少有5%至30%的剩余空間時,Linux服務器寫入文件的速度明顯加快。如果一個分區的已使用空間超過其最大最優磁盤空間,就會降低系統性能。另外的一個普遍的磁盤問題是碎片,當一個文件系統已滿時,它會變得支離破碎。這類似于DOS碎片的概念。 要檢查文件系統碎片,要卸載該文件系統,并在其上運行fsck,在 ext2、ext3和 ext4文件系統上使用– f選項。fsck的輸出包括一個文件系統碎片百分數。通過備份可以整理文件系統,首先使用mkfs做一個干凈的空映像,然后恢復文件系統。使用哪個工具來執行備份和恢復并不重要。
周期性的監控磁盤性能是運維工程師的一個良好工作習慣,監控Linux服務器提供了一些命令,可以報告誰正在使用哪些文件系統的多少磁盤空間。常見的如du-m、du –i、quota、df -h、df-a等指令。
此外,磁盤和分區的使用都不是一成不變的,運行數據、管理日志、業務日志以及以及新增業務都是快速增長的文件,那么增加文件系統上的可用空間量(除了購買新硬盤)的方法都有哪些呢?壓縮文件、刪除文件、增大基于LVM的文件系統以及壓縮目錄是常見的選擇。
另一方面,如果一個文件系統很快耗盡空間(如在一個小時內,而不是幾個星期或幾個月內),首先弄清楚空間耗盡的原因??墒褂胮s– ef命令來確定用戶是否已經創建了失控的進程,并且生成了巨大的文件。評估ps的輸出時,可尋找一個消耗了大量CPU時間的進程。如果這樣的進程正在運行,并創建了大文件,那該文件將持續增長以致需要不斷騰出空間。如果刪除了這個巨大的文件,其占用的空間并不會被釋放,除非終止該進程。此時需要嘗試聯系運行該進程的用戶,并要求他終止該進程,或者使用root權限,自己終止該進程。
本文通過三個Linux服務器服務器常見問題的拋出,介紹了一些面對Linux服務器出現的問題常用的工作方法和思路。其實我們在每天的工作中養成良好的管理系統的習慣以及嚴格遵循軟件文檔的指示來運維,都會降低很多潛在問題發生的可能性。同時,即使解決了問題,也應該做好日志記錄或筆頭工作,可以為問題的再次出現或工作的交接打好基礎。