磁盤壞道檢測
當磁盤出現以下情況:
io wait 無故增高或居高不下;
硬盤聲音突然由原來的摩檫音變成了怪音;
系統無法正常啓動,出現“IO error”等提示信息;
mkfs時,到某一進度停滯不前,最後報錯,無法完成;
每次系統開機都會運行 fsck 掃描磁盤錯誤;
對磁盤執行fdisk時,到某一定進度會反覆進進退退。
出現如上狀況,就需要及時對磁盤進行壞道檢測及時對磁盤進行壞道檢測以測試磁盤可用性,並立即備份數據。
1. linux系統下檢測硬盤上的壞道和壞塊
1.通過fdisk 查看顯示所有磁盤或閃存的信息
fdisk -l /dev/sd*
2.使用 badlocks檢查 linux 硬盤上的壞道/壞塊
# badblocks -v /dev/sdb1 > badsectors.txt 或者 # badblocks -s -v /dev/sdb1 > badsectors.txt Checking blocks 0 to 20970495 Checking for bad blocks (read-only test): done Pass completed, 0 bad blocks found. (0/0/0 errors)
備註: -v選項讓它顯示操作詳情
磁盤有壞道
前提:如果有壞道,前提對數據做備份,把重要的數據做備份後在嘗試修復。
如果磁盤上沒有發現壞道,卸載磁盤並像下面這樣讓系統不要將數據寫入彙報的扇區中。
執行e2fsck(針對 ext2/ext3/ext4 文件系統)或fsck命令,命令中還需要用到badsectors.txt文件和設備文件。
備註:-l 選項告訴命令將在指定的文件 badsectors.txt 中列出的扇區號碼加入壞塊列表。
------------ 針對 for ext2/ext3/ext4 文件系統 ------------ # e2fsck -l badsectors.txt /dev/sdb1 e2fsck 1.42.9 (28-Dec-2013) /dev/sdb1: Updating bad block inode. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sdb1: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sdb1: 12/1310720 files (8.3% non-contiguous), 128782/5242624 blocks
------------ 針對其它文件系統 ------------ $ sudo fsck -l badsectors.txt /dev/sda10
fsck
參數:
filesys : 磁盤設備名稱(eg./dev/sda1),掛載(mount)點 (eg. / 或 /usr)
-t : 給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數
-s : 依序一個一個地執行 fsck 的指令來檢查
-A : 對/etc/fstab 中所有列出來的 分區(partition)做檢查
-C : 顯示完整的檢查進度
-d : 打印出 e2fsck 的 debug 結果
-p : 同時有 -A 條件時,同時有多個 fsck 的檢查一起執行
-R : 同時有 -A 條件時,省略 / 不檢查
-V : 詳細顯示模式
-a : 如果檢查有錯則自動修復
-r : 如果檢查有錯則由使用者回答是否修復
-y : 選項指定檢測每個文件是自動輸入yes,在不確定那些是不正常的時候,可以執行 # fsck -y 全部檢查修復。
2. 在 Linux 上使用 Smartmontools 工具掃描壞道
這個方法對帶有 S.M.A.R.T(自我監控分析報告技術Self-Monitoring, Analysis and Reporting Technology)系統的現代磁盤(ATA/SATA 和 SCSI/SAS 硬盤以及固態硬盤)更加的可靠和高效。S.M.A.R.T 系統能夠幫助檢測,報告,以及可能記錄它們的健康狀況,這樣你就可以找出任何可能出現的硬件失效。
你可以使用以下命令安裝smartmontools:
------------ 在基於 Debian/Ubuntu 的系統上 ------------
$ sudo apt-get install smartmontools
------------ 在基於 RHEL/CentOS 的系統上 ------------
$ sudo yum install smartmontools
安裝完成之後,使用 smartctl 控制磁盤集成的 S.M.A.R.T 系統。你可以這樣查看它的手冊或幫助:
$ man smartctl $ smartctl -h
然後執行 smartctrl 命令並在命令中指定你的設備作爲參數,以下命令包含了參數 -H 或 --health 以顯示 SMART 整體健康自我評估測試結果。
$ sudo smartctl -H /dev/sda10
檢查 Linux 硬盤健康
上面的結果指出你的硬盤很健康,近期內不大可能發生硬件失效。
要獲取磁盤信息總覽,使用 -a 或 --all 選項來顯示關於磁盤所有的 SMART 信息, -x 或 --xall 來顯示所有關於磁盤的 SMART 信息以及非 SMART 信息。