1. 程式人生 > >檢測磁盤壞道並忽略方式掛載註意的細節

檢測磁盤壞道並忽略方式掛載註意的細節

指定 順序 實例 最好 語法 use 重新 監控 操作

檢測磁盤壞道並忽略方式掛載註意的細節

/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執行。

檢測磁盤壞道並忽略方式掛載註意的細節