用badblocks檢測硬碟壞道 硬碟是一個損耗裝置,當使用一段時間後可能會出現壞道等物理故障。電腦硬碟出現壞道後,如果不及時更換或進行技術處理,壞道就會越來越多,並會造成頻繁死機和資料丟失。最好的處理方式是更換磁碟,但在臨時的情況下,應及時屏蔽壞道部分的扇區,不要觸動它們。badblocks就是一個檢查壞道位置的工具。 一、命令參數badblocks使用格式為:引用badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_once ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device [ last-block ] [ start-block ] 參數含義是:引用-b blocksize 指定磁碟的區塊大小,單位為位元組,預設值為“block 4K ”(4K/block)-c blocksize 每個區塊檢查的次數,預設是16次-f 強制在一個已經掛載的裝置上執行讀寫或非破壞性的寫測試操作 (我們建議先umount裝置,然後再進行壞道檢測。僅當/etc/mtab出現誤判裝置掛載錯誤的時候可以使用該選項)-i file 跳過已經顯示在file檔案中的壞道,而不進行檢測(可以避免重複資料偵測)-o file 把檢測結果輸出到file檔案-p number 重複搜尋裝置,直到在指定通過次數內都沒有找到新的壞塊位置,預設次數為0 -s 在檢查時顯示進度-t pattern 通過按指定的模式讀寫來檢測區塊。你可以指定一個0到ULONG_MAX-1的十進位正值,或使用random(隨機)。 如果你指定多個模式,badblocks將使用第一個模式檢測所有的區塊,然後再使用下一個模式檢測所有的區塊。 Read-only方式僅接受一個模式,它不能接受random模式的。-v 執行時顯示詳細的資訊-w 對每個區塊都先寫入,然後再從它讀取資訊[device] 指定要檢查的磁碟裝置。[last-block] 指定磁碟裝置的區塊總數。[start-block] 指定要從哪個區塊開始檢查 二、樣本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檔案。 三、其他1、fsck使用badblocks的資訊badblocks只會在記錄檔中標記出壞道的資訊,但若希望在檢測磁碟時也能跳過這些壞塊不檢測,可以使用fsck的-l參數:# fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1 2、在建立檔案系統前檢測壞道badblocks可以隨e2fsck和mke2fs的-c刪除一起運行(對ext3檔案系統也一樣),在建立檔案系統前就先檢測壞道資訊: # mkfs.ext3 -c /dev/hda1 代碼錶示使用-c在建立檔案系統前檢查壞道的硬碟。這個操作已經很清楚地告知我們可以採用“mkfs.ext3 -c”選項用“read-only”方式檢查硬碟。這個命令會在格式化硬碟時檢查硬碟,並標出錯誤的硬碟“block”。用這個方法格式化硬碟,需要有相當大的耐心,因為命令運行後,會一個個用讀的方式檢查硬碟。