1. 程式人生 > >Linux故障處理(二)更改root密碼和修復文件系統

Linux故障處理(二)更改root密碼和修復文件系統

無法識別 丟失 ges 包括 故障處理 磁盤 free roo ext4

Linux故障處理(二)更改root密碼和修復文件系統

一、遺忘root用戶的密碼

大多數時候Linux主機中具有root權限的用戶只有一個,因此需要通過其他途徑來重設root賬號密碼。最簡單的途徑是在開機時通過修改GRUB引導參數進入單用戶模式,另一個途徑是使用系統光盤進入急救模式。

1、通過單用戶模式重設root賬戶的密碼

步驟如下

1)、重新啟動主機,在出現GRUB菜單時按“↑”、“↓”箭頭鍵取消倒計時,並定位到要進入的操作系統選擇項,按e鍵進入編輯模式。

技術分享圖片

技術分享圖片


2)、定位到以kernel開頭的一行並按e鍵,在行尾添加“single”的啟動參數,其中“single”也可以換成字母“s”或數字“1”,也可以表示進入到單用戶模式。

技術分享圖片

技術分享圖片


3)、輸完之後按Enter鍵確認,按b鍵將系統引導進入單用戶模式,直接進入Shell環境(不需要任何密碼驗證)。

技術分享圖片


4)、在單用戶模式的Shell環境中,可以執行“passwd ”命令重新設置root用戶的密碼。設置完畢重新啟動系統。

技術分享圖片


二、排除文件系統類故障


1、修復文件系統

當文件系統的超級塊數據損壞時,Linux將無法識別該文件系統,掛載時會出現“you must specify the filesystem type”的提示而不能正常使用。

例如,執行以下操作可以破壞/dev/sdb1文件系統的超級塊數據庫,嘗試掛載時將不能成功。

[root@twgdh ~]# dd if=/dev/zero of=/dev/sdb1 bs=512 count=4
記錄了4+0 的讀入
記錄了4+0 的寫出
2048字節(2.0 kB)已復制,0.024955 秒,82.1 kB/秒
[root@twgdh ~]# mount /dev/sdb1 /tmp/
mount: you must specify the filesystem type


對於通過/etc/fstab文件自動掛載且設置了fsck參數(第6列的非0)的文件系統,若超級塊出現錯誤,則Linux系統在啟動時會報錯,並提示“Give root password for maintenance”,

出現這種情況時,根據提示輸入root用戶密碼,即可進入到一個臨時的Shell環境,在這裏用戶可以對出現錯誤的文件系統進行修復。修復完畢後執行“exit”命令即可退出並重啟系統。


修復一般的文件系統錯誤可以使用“fsck”命令進行,結合“-t”選項指定文件系統類型,結合“-y”選項對發現的問題自動回答“yes”。

技術分享圖片

重新掛載時,即可成功掛載!


2、磁盤資源耗盡故障

當一個文件系統的磁盤空間耗盡以後,將無法繼續在該分區中創建新的文件數據,從而導致故障的出現。例如執行“

dd if=/dev/zero of=/somefile bs=1M count=999999”命令。當根分區磁盤空間不足而無法啟動進入Linux系統時,可以通過系統的安裝光盤進入急救模式,轉移或清理掉根分區中占用大量空間的文件。

在每一個ext3文件系統中,能夠使用的文件數量(對應i節點數量)也是有限的。當一個文件系統被格式化以後,其i節點數也即文件數量就已經固定下來了。如果用戶在該分區中創建了巨量的細小文件(耗盡i節點),將可能出現這種情況:雖然分區中仍然有大量的剩余磁盤空間,但是卻無法再建立新的文件。

模擬i節點耗盡故障

2.1)、新建一個約1G大小的EXT4文件系統,掛載到/temp目錄下。使用“df –i”命令確認該文件系統中i節點的使用情況。

[root@twgdh ~]# mkdir /temp
[root@twgdh ~]# mount /dev/sdb1 /temp/
 
[root@twgdh ~]# df -i /temp/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdb1       66384    11 66373    1% /temp
■ Filesystem:文件系統    ■ Inode: i節點總數   ■ IUsed:(I)已用
■ IFree:(I)可用        ■ IUse%:已用%        ■ Mounted on: 掛載點


2.2)、寫一個測試程序腳本,模擬i節點耗盡

[root@twgdh ~]# vim mkfile.sh
#!/bin/bash
i=1
while [ $i -le 66384 ]
do
touch /temp/file$i
let i++
done
[root@twgdh ~]# sh mkfile.sh

[root@twgdh ~]# df -i /temp/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdb1       66384 66384     0  100% /temp

可以看到i節點的數量已經占滿,再使用df –hT命令查看一下磁盤空間。並且創建一個文件查看信息。


2.3)、查看結果

[root@twgdh ~]# df -hT /temp/
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext2 1020M  2.8M  965M   1% /temp
可以看到,/temp還有很多磁盤空間
[root@twgdh ~]# touch /temp/123456
touch: 無法創建"/temp/123456": 設備上沒有空間

創建一個文件提示設備上沒有,這種情況一般就屬於i節點耗盡


2.4)、修復i節點耗盡故障

理解i節點故障的根結以後,問題就比較好解決了。只需要找出分區中占用大量i節點的細小文件,並進行轉移或者刪除即可。對於許多用戶公用的文件系統,建議為相關用戶設置磁盤配額限制(包括磁盤空間和文件數量兩方面)。

[root@twgdh ~]# rm -rf /temp/file*
[root@twgdh ~]# df -i /temp
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sdb1       66384    10 66374    1% /temp


3、檢測硬盤壞道

磁盤壞道分為邏輯壞道和物理壞道兩種,前者主要由於軟件操作不當造成,可以使用軟件修復;後者則是物理性損壞,只能通過更改磁盤分區或扇區的占用位置來進行改善,排除掉包含有壞塊的磁盤空間。當磁盤出現以下現象時,磁盤設備發出異常聲響。

讀取磁盤中的數據時,磁盤設備發出異常聲響。

訪問磁盤中的某個文件時,反復讀取且出錯,提示文件損壞。

對於新建立的分區無法完成格式化。

系統使用該磁盤時頻繁死機。

硬盤出現壞道後,如果不及時更換或進行技術處理,壞道就會越來越多,並可能造成頻繁死機和數據丟失的後果。所以必要時應該對磁盤進行定期檢測,檢查是否存在壞道。

linux系統中,檢測磁盤的壞道情況可以使用badblocks命令進行,結合“-s”選項用於顯示進度信息,“-v”選項用於顯示詳情。

[root@twgdh ~]# badblocks -sv /dev/sdb
正在檢查從 0 到 20971519的塊
Checking for bad blocks (read-only test): 完成                                
Pass completed, 0 bad blocks found.


在長期使用計算機的過程中,文件系統和磁盤類的故障現象很難完全避免,對於此類故障的修復處理需要十分謹慎,如果操作不慎可能會加中數據破壞的程度。



Linux故障處理(二)更改root密碼和修復文件系統