當(dāng)磁盤出現(xiàn)以下情況:
創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),突泉網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:突泉等地區(qū)。突泉做網(wǎng)站價(jià)格咨詢:18982081108
?io wait 無(wú)故增高或居高不下;
?硬盤聲音突然由原來(lái)的摩檫音變成了怪音;
?系統(tǒng)無(wú)法正常啟動(dòng),出現(xiàn)“IO error”等提示信息;
?mkfs時(shí),到某一進(jìn)度停滯不前,最后報(bào)錯(cuò),無(wú)法完成;
?每次系統(tǒng)開(kāi)機(jī)都會(huì)運(yùn)行 fsck 掃描磁盤錯(cuò)誤;
? 對(duì)磁盤執(zhí)行fdisk時(shí),到某一定進(jìn)度會(huì)反復(fù)進(jìn)進(jìn)退退。
??????? 出現(xiàn)如上狀況,就需要及時(shí)對(duì)磁盤進(jìn)行壞道檢測(cè)并及時(shí)對(duì)磁盤壞道進(jìn)行檢測(cè)測(cè)試磁盤的可用性,并立即備份數(shù)據(jù)。
1.發(fā)現(xiàn)硬盤壞道
當(dāng)有硬盤壞道時(shí),通常在dmesg輸出的信息中會(huì)有 Buffer I/O Error,所以經(jīng)常檢查dmesg的輸出可以及時(shí)發(fā)現(xiàn)是否存在硬盤問(wèn)題。
2.檢測(cè)壞道
2.1 通過(guò)fdisk 查看顯示所有磁盤或閃存的信息
#?fdisk?-l?/dev/sd*
2.2 使用 badlocks檢查 linux 硬盤上的壞道/壞塊。也可以修復(fù)壞道,但僅限于邏輯壞道,物理壞道只能更換硬盤。
#?badblocks?-s?-v?/dev/sdg??>?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 選項(xiàng)讓它顯示操作詳情
? ? ? ? ? ?-s 在檢查時(shí)顯示進(jìn)度
? ? ? ? ? ?-o<輸出文件> 將檢查的結(jié)果寫入指定的輸出文件
? ? ? ? ? ?-w 在檢查時(shí),執(zhí)行寫入測(cè)試。
? ? ? ?也可以針對(duì)單獨(dú)分區(qū)進(jìn)行檢查。
3.硬盤壞道類型
????硬盤壞道分為物理壞道和邏輯壞道。
????物理壞道:就是硬盤實(shí)體有壞的地方,物理壞道推薦換硬盤,當(dāng)然也有辦法重新分區(qū)來(lái)隔離壞道,不過(guò)可能也用不久,所以不推薦。
? ?邏輯壞道:是磁盤磁道上面的校驗(yàn)信息(ECC)跟磁道的數(shù)據(jù)對(duì)不上號(hào)所致。出現(xiàn)這一故障的原因,通常都是因?yàn)橐恍┏绦虻腻e(cuò)誤操作或是該處扇區(qū)的磁介質(zhì)開(kāi)始出現(xiàn)不穩(wěn)定的先兆。物理壞道也是邏輯壞道產(chǎn)生的一種原因。
4.修復(fù)磁盤壞道
????首先,當(dāng)檢測(cè)出壞道之后首先要看下服務(wù)器磁盤的燈有沒(méi)有報(bào)警,一般的服務(wù)器都有硬盤報(bào)警燈,燈顯示紅色說(shuō)明磁盤不工作了,這個(gè)明顯是物理性故障問(wèn)題,需要更換磁盤。
????其次,若硬盤燈沒(méi)有報(bào)警,或已經(jīng)換了硬盤,但檢查仍然有壞道,此時(shí)可能是邏輯壞道,需要嘗試修復(fù),若能修復(fù)說(shuō)明確實(shí)是邏輯壞道,若修復(fù)不了說(shuō)明是物理壞道。
4.1 邏輯壞道修復(fù)方式
查看上述分區(qū)檢查出來(lái)的壞道信息:
#?tail?-f?badsectors.txt 205971590 205971591 205971592 205971593 205971594 205971595
4.1.1 先備份數(shù)據(jù)
若修復(fù)的硬盤或分區(qū)的重要數(shù)據(jù)已備份,此部分可以省略
#?dd?if=/dev/sdg?skip=205971590?of=/tmp/205971590-205971595.dat?count=5
4.1.2 修復(fù)磁盤
硬盤在使用時(shí)不能修復(fù),否則可能存在寫并發(fā)的問(wèn)題,所以修復(fù)前需要umount對(duì)應(yīng)分區(qū)(若為系統(tǒng)所在分區(qū)就沒(méi)辦法在線修復(fù)了,因?yàn)闊o(wú)法umount)。
#?umount?/data02
????但umount可能出現(xiàn)"Device busy"的錯(cuò)誤,是因?yàn)橛谐绦蛟谑褂眠@個(gè)分區(qū),需要將這些進(jìn)程都關(guān)閉。使用fuser(命令如下),其中/data02是分區(qū)對(duì)應(yīng)的掛載目錄。
# fuser -m /data02
# fuser -m -v -i -k /data02
????第一條fuser命令列出使用/data02的進(jìn)程ID,第二條列出PID并kill掉進(jìn)程(帶有提示確認(rèn)),建議先使用第一條命令列出PID,然后針對(duì)查看是哪些類型的進(jìn)程,不要盲目殺死進(jìn)程。
umount 分區(qū)成功后,修復(fù)命令如下,其中-s表示給出進(jìn)度,-w表示寫入修復(fù)的,后面是結(jié)束(END)和開(kāi)始(START)塊號(hào),注意END在前,START在后。
#?badblocks?-s?-w?/dev/sdg?205971590?205971595
或者修復(fù)后再次檢查
#?badblocks?-s?-v?/dev/sdg?205971590?205971595
4.1.3 再次檢查恢復(fù)
恢復(fù)數(shù)據(jù)
#?dd?if=/tmp/205971590-205971595.dat?of=/dev/sdg
重新分區(qū)檢查
#?badblocks?-s?-v??/dev/mapper/VolGroup-lv_home?>?badsectors.txt
若沒(méi)有壞道說(shuō)明修復(fù)已完成,若有壞道可以嘗試重復(fù)以上方法。
5.屏蔽壞道部分
執(zhí)行e2fsck(針對(duì) ext2/ext3/ext4 文件系統(tǒng))或fsck命令,命令中還需要用到badsectors.txt文件和設(shè)備文件。
備注:-l??? 選項(xiàng)告訴命令將在指定的文件 badsectors.txt 中列出的扇區(qū)號(hào)碼加入壞塊列表。
------------?針對(duì)?for?ext2/ext3/ext4?文件系統(tǒng)?------------ #?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
?
------------?針對(duì)其它文件系統(tǒng)?------------ $?sudo?fsck?-l?badsectors.txt?/dev/sda10
參數(shù):
filesys : 磁盤設(shè)備名稱(eg./dev/sda1),掛載(mount)點(diǎn) (eg. / 或 /usr)
-t : 給定檔案系統(tǒng)的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此參數(shù)
-s : 依序一個(gè)一個(gè)地執(zhí)行 fsck 的指令來(lái)檢查
-A : 對(duì)/etc/fstab 中所有列出來(lái)的 分區(qū)(partition)做檢查
-C : 顯示完整的檢查進(jìn)度
-d : 打印出e2fsck 的 debug 結(jié)果
-p : 同時(shí)有 -A 條件時(shí),同時(shí)有多個(gè) fsck 的檢查一起執(zhí)行
-R : 同時(shí)有 -A 條件時(shí),省略 / 不檢查
-V : 詳細(xì)顯示模式
-a : 如果檢查有錯(cuò)則自動(dòng)修復(fù)
-r : 如果檢查有錯(cuò)則由使用者回答是否修復(fù)
-y : 選項(xiàng)指定檢測(cè)每個(gè)文件是自動(dòng)輸入yes,在不確定那些是不正常的時(shí)候,可以執(zhí)行 # fsck -y 全部檢查修復(fù)。
?
?
這個(gè)方法對(duì)帶有 S.M.A.R.T(自我監(jiān)控分析報(bào)告技術(shù)Self-Monitoring, Analysis and Reporting Technology)系統(tǒng)的現(xiàn)代磁盤(ATA/SATA 和 SCSI/SAS 硬盤以及固態(tài)硬盤)更加的可靠和高效。S.M.A.R.T 系統(tǒng)能夠幫助檢測(cè),報(bào)告,以及可能記錄它們的健康狀況,這樣你就可以找出任何可能出現(xiàn)的硬件失效。
你可以使用以下命令安裝smartmontools:
------------ 在基于 Debian/Ubuntu 的系統(tǒng)上 ------------
$?sudo?apt-get?install?smartmontools
------------ 在基于 RHEL/CentOS 的系統(tǒng)上 ------------
$?sudo?yum?install?smartmontools
安裝完成之后,使用 smartctl 控制磁盤集成的 S.M.A.R.T 系統(tǒng)。你可以這樣查看它的手冊(cè)或幫助:
$?man?smartctl $?smartctl?-h
然后執(zhí)行 smartctrl 命令并在命令中指定你的設(shè)備作為參數(shù),以下命令包含了參數(shù) -H 或 --health 以顯示 SMART 整體健康自我評(píng)估測(cè)試結(jié)果。
$?sudo?smartctl?-H?/dev/sda10
檢查 Linux 硬盤健康
上面的結(jié)果指出你的硬盤很健康,近期內(nèi)不大可能發(fā)生硬件失效。
要獲取磁盤信息總覽,使用 -a 或 --all 選項(xiàng)來(lái)顯示關(guān)于磁盤所有的 SMART 信息, -x 或 --xall 來(lái)顯示所有關(guān)于磁盤的 SMART 信息以及非 SMART 信息。