檢測磁盤壞道並忽略方式掛載註意的細節
/dev/sda2? ? ? ? ? ? 591467212 237121952 323815736? 43% /
tmpfs? ? ? ? ? ? ? ? ? 4149320? ? ? ? ?0? ?4149320? ?0% /dev/shm
/dev/sda1? ? ? ? ? ? 117927380? ? ?11016 111829340? ?1% /boot
使用命令badblocks -s -v -o /root/sda1_blocks.txt /dev/sda可以檢測/dev/sda1和/dev/sda2 壞道的信息,
但是根目錄卸載不了,沒辦法同時卸載/dev/sda1和/dev/sda2之後重新掛載(忽略壞道的方式)。
如果這個時間執行e2fsck -l /root/sda1_blocks.txt /dev/sda1 會出現以下提示:
Bad block 126569731 out of range; ignored.
原因是badblocks -s -v目錄記錄下的壞道序號,都是從0開始,不是獨占的。
所以需要只能單獨對/dev/sda1進行檢測及重新掛載,步驟如下:
badblocks -s -v -o /root/sda1_blocks.txt /dev/sda1
umount?/dev/sda1
e2fsck -l /root/sda1_blocks.txt?/dev/sda1
mount /dev/sda1 /boot
badblocks命令
badblock命令用於查找磁盤中損壞的區塊。 硬盤是一個損耗設備,當使用一段時間後可能會出現壞道等物理故障。電腦硬盤出現壞道後,如果不及時更換或進行技術處理,壞道就會越來越多,並會造成頻繁死機和數據丟失。最好的處理方式是更換磁盤,但在臨時的情況下,應及時屏蔽壞道部分的扇區,不要觸動它們。badblocks就是一個很好的檢查壞道位置的工具。
語法
badblock (選項) (參數)
選項
- -b<區塊大小>:指定磁盤的區塊大小,單位為字節;
- -o<輸出文件>:將檢查的結果寫入指定的輸出文件;
- -s:在檢查時顯示進度;
- -v:執行時顯示詳細的信息;
- -w:在檢查時,執行寫入測試。
參數
- 磁盤裝置:指定要檢查的磁盤裝置;
- 磁盤區塊數:指定磁盤裝置的區塊總數;
- 啟始區塊:指定要從哪個區塊開始檢查。
實例
badblocks以4096的一個block,每一個block檢查16次,將結果輸出到“hda-badblocks-list”文件裏。
badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list
hda-badblocks-list是個文本文件,內容如下:
cat hda-badblocks-list
51249
51250
51251
51253
51254
……
61245
……
可以針對可疑的區塊多做幾次操作。下面,badblocks以4096字節為一個“block”,每一個“block”檢查1次, 將結果輸出到“hda-badblocks-list.1”文件中,由第51000 block開始,到63000 block結束。
badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000
這次花費的時間比較短,硬盤在指定的情況下在很短的時間就產生“嘎嘎嘎嘎”的響聲。由於檢查條件的不同,其輸出的結果也不完全是相同的。重復幾次同樣的操作,因條件多少都有些不同,所以結果也有所不同。進行多次操作後,直到產生最後的hda-badblock-list.final文件。
e2fsck命令
e2fsck命令用於檢查第二擴展文件系統的完整性,通過適當的選項可以嘗試修復出現的錯誤。
e2fsck執行後的傳回值及代表意義如下:
- 0 沒有任何錯誤發生。
- 1 文件系統發生錯誤,並且已經修正。
- 2 文件系統發生錯誤,並且已經修正。
- 4 文件系統發生錯誤,但沒有修正。
- 8 運作時發生錯誤。
- 16 使用的語法發生錯誤。
- 128 共享的函數庫發生錯誤。
語法
e2fsck(選項)(參數)
選項
- -a:不詢問使用者意見,便自動修復文件系統;
- -b<superblock>:指定superblock,而不使用預設的superblock;
- -B<區塊大小>:指定區塊的大小,單位為字節;
- -c:一並執行badblocks,以標示損壞的區塊;
- -C:將檢查過程的信息完整記錄在file descriptor中,使得整個檢查過程都能完整監控;
- -d:顯示排錯信息;
- -f:即使文件系統沒有錯誤跡象,仍強制地檢查正確性;
- -F:執行前先清除設備的緩沖區;
- -l<文件>:將文件中指定的區塊加到損壞區塊列表;
- -L<文件>:先清除損壞區塊列表,再將文件中指定的區塊加到損壞區塊列表。因此損壞區塊列表的區塊跟文件中指定的區塊是一樣的;
- -n:以只讀模式開啟文件系統,並采取非互動方式執行,所有的問題對話均設置以"no"回答;
- -p:不詢問使用者意見,便自動修復文件系統;
- -r:此參數只為了兼容性而存在,並無實際作用;
- -s:如果文件系統的字節順序不適當,就交換字節順序,否則不做任何動作;
- -S:不管文件系統的字節順序,一律交換字節順序;
- -t:顯示時間信息;
- -v:執行時顯示詳細的信息;
- -V:顯示版本信息;
- -y:采取非互動方式執行,所有的問題均設置以"yes"回答。
參數
文件系統或者分區:指定文件系統或者分區所對應的設備文件名。
實例
檢查/dev/sda1是否有問題,如發現問題便自動修復:
e2fsck -a -y /dev/sda1
執行e2fsck或fsck前請先umount partition,否則有機會令檔案系統毀損。如果需要對根目錄/進行檢查及修復,便需要進入singal user mode執行。
檢測磁盤壞道並忽略方式掛載註意的細節