CentOS下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”檔案裡
?
1 |
# 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結束
?
1 |
# badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000 |
這次花費的時間比較短,硬碟在指定的情況下在很短的時間就產生“嘎嘎嘎嘎”的響聲。由於檢查條件的不同,其輸出的結果也不完全是相同的。重複幾次同樣的操作,因條件多少都有些不同,所以結果也有所不同。進行多次操作後,直到產生最後的hda-badblock-list.final檔案。
三、其他
1、fsck使用badblocks的資訊
badblocks只會在記錄檔中標記出壞道的資訊,但若希望在檢測磁碟時也能跳過這些壞塊不檢測,可以使用fsck的-l參數:
?
1 |
# fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1 |
2、在建立檔案系統前檢測壞道
badblocks可以隨e2fsck和mke2fs的-c刪除一起運行(對ext3檔案系統也一樣),在建立檔案系統前就先檢測壞道資訊:
?
1 |
# mkfs.ext3 -c /dev/hda1 |
代碼錶示使用-c在建立檔案系統前檢查壞道的硬碟。
這個操作已經很清楚地告知我們可以採用“mkfs.ext3 -c”選項用“read-only”方式檢查硬碟。這個命令會在格式化硬碟時檢查硬碟,並標出錯誤的硬碟“block”。用這個方法格式化硬碟,需要有相當大的耐心,因為命令運行後,會一個個用讀的方式檢查硬碟。