failed command: READ FPDMA QUEUED


問題:

failed command: READ FPDMA QUEUED
failed command: WRITE FPDMA QUEUED

1、關閉NCQ
vim /boot/efi/EFI/centos/grub.cfg
添加libata.force=noncq到啟動項中;
linuxefi /vmlinuz-3.10.0-957.21.3.el7.x86_64 root=UUID=2b1d8b5c-9ca4-4c87-a8b4-5db40d08ac4f ro
crashkernel=auto biosdevname=0 net.ifnames=0 console=ttyS0,115200 LANG=en_US.UTF-8 libata.force=noncq
2、重啟
reboot

3、延伸1

SCSI/SATA information:
[root@liberty ~]# lsscsi -kk
[0:0:0:0]    disk    ATA      WDC WD10EURX-73F 01.0  /dev/sda
[1:0:0:0]    disk    ATA      WDC WD30EFRX-68A 80.0  /dev/sdb
[4:0:0:0]    disk    ATA      WDC WD5003ABYX-0 01.0  /dev/sdc
[5:0:0:0]    cd/dvd  Optiarc  DVD RW AD-5280S  1.01  /dev/sr0
[6:0:0:0]    disk    hp       USB Flash Drive  3276  /dev/sdd

Controller:
[root@liberty ~]# lspci | grep SATA
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)

4、延伸2

fsck -f /dev/sdc  磁盤修復
echo 1 > /sys/block/sdb/device/queue_depth  關閉對應磁盤NCQ特性
smartctl -a /dev/sdb |grep -i crc 檢測CRC錯誤
cat /proc/scsi/scsi    查看磁盤信息

smartctl -a <device> 檢查該設備是否已經打開SMART技術。 
smartctl -s on <device> 如果沒有打開SMART技術,使用該命令打開SMART技術。 
smartctl -t short <device> 后台檢測硬盤,消耗時間短; 
smartctl -t long <device> 后台檢測硬盤,消耗時間長; 
smartctl -C -t short <device> 前台檢測硬盤,消耗時間短; 
smartctl -C -t long <device> 前台檢測硬盤,消耗時間長。其實就是利用硬盤SMART的自檢程序。 
smartctl -X <device> 中斷后台檢測硬盤。 
smartctl -l selftest <device> 顯示硬盤檢測日志。 
smartctl -l error <device> 顯示硬盤錯誤匯總。
smartctl -i /dev/sda 確認硬盤是否打開了SMART支持。
smartctl -H /dev/sda  查看硬盤的健康狀況。
smartctl -A   /dev/sda  查看硬盤的詳細信息 ls
read error rate 錯誤讀取率:記錄讀取數據錯誤次數(累計),非0值表示硬盤已經或者可能即將發生壞道;
throughput performance 磁盤吞吐量:平均吞吐性能(一般在進行了人工 Offline S.M.A.R.T. 測試以后才會有值。);
spinup time 主軸電機到達要求轉速時間(毫秒/秒);
start/stop count 電機啟動/停止次數(可以當作開機/關機次數,或者休眠后恢復,均增加一次計數。全新的硬盤應該小於10);
reallocated sectors count 重分配扇區計數:硬盤生產過程中,有一部分扇區是保留的。當一些普通扇區讀/寫/驗證錯誤,
則重新映射到保留扇區,掛起該異常扇區,並增加計數。隨着計數增加,io性能驟降。
如果數值不為0,就需要密切關注硬盤健康狀況;如果持續攀升,則硬盤已經損壞;
如果重分配扇區數超過保留扇區數,將不可修復;
seek error rate 尋道錯誤率:磁頭定位錯誤一次,則技術增加一次。如果持續攀升,則可能是機械部分即將發生故障;
seek timer performance 尋道時間:尋道所需要的時間,越短則讀取數據越快,但是如果時間增加,則可能機械部分即將發生故障;
power-on time 累計通電時間:指硬盤通電時間累計值。(單位:天/時/分/秒。休眠/掛起不計入?新購入的硬盤應小於100hrs);
spinup retry count 電機啟動失敗計數:電機啟動到指定轉速失敗的累計數值。如果失敗,則可能是動力系統產生故障;
power cycle count 電源開關計數:每次加電增加一次計數,新硬盤應小於10次;
g-sensor error rate 墜落計數:異常加速度(例如墜落,拋擲)計數——磁頭會立即回到landing zone,並增加一次計數;
power-off retract count 異常斷電次數:磁頭在斷電前沒有完全回到landing zone的次數,每次異常斷電則增加一次計數;
load/unload cycle count 磁頭歸位次數:指工作時,磁頭每次回歸landing zone的次數。(ps:流言說某個linux系統——不點名,
在使用電池時候,會不斷強制磁頭歸為,而磁頭歸位次數最大值約為600k次,所以認為linux會損壞硬盤,實際上不是這樣的);
temperature 溫度:沒嘛好說的,硬盤溫度而已,理論上比工作環境高不了幾度。(sudo hddtemp /dev/sda)
reallocetion event count 重映射扇區操作次數:上邊的重映射扇區還記得吧?這個就是操作次數,成功的,失敗的都計數。
成功好說,也許硬盤有救,失敗了,也許硬盤就要報廢了;
current pending sector count 待映射扇區數:出現異常的扇區數量,待被映射的扇區數量。 
如果該異常扇區之后成功讀寫,則計數會減小,扇區也不會重新映射。讀錯誤不會重新映射,只有寫錯誤才會重新映射;
uncorrectable sector count 不可修復扇區數:所有讀/寫錯誤計數,非0就證明有壞道,硬盤報廢;
 
SSD固態硬盤多出的Attributes 信息解釋:
其中我們比較關注的有以下四點:
1、Media_Wearout_Indicator:    使用耗費,100為沒有任何耗費; 表示SSD上NAND的擦寫次數的程度,初始值為100,隨着擦寫次數的增加,
開始線性遞減,遞減速度按照擦寫次數從0到最大的比例。一旦這個值降低到 1,就不再降了,
同時表示SSD上面已經有NAND的擦寫次數到達了最大次數。這個時候建議需要備份數據,以及更換SSD。
上面的機器為099,按照100滴血算,目前只耗了1滴血
2、Reallocated_Sector_Ct: 出廠后產生的壞塊個數, 初始值為100,如果有壞塊,從1開始增加,每4個壞塊增加1
這里offer的機器還沒有任何壞塊
3、Host_Writes_32MiB: 已寫32MiB, 每寫入65536個扇區raw value增加1。這個扇區還是個數量單位,512字節
比如:這塊盤就是 1284966 * 65536 * 512 = 40155.1875 GB
注意到每個機器都有一塊盤寫的比較少,這塊盤就是hotspare盤。
每台機器我們有7塊ssd盤。其中6塊盤做的raid 5,第7塊盤做的hotspare。
4、Available_Reservd_Space: SSD上剩余的保留空間, 初始值為100,表示100%,閥值為10,遞減到10表示保留空間已經不能再減少

backblaze 建議主要監控以下五個屬性的 RAW_VALUE 的值:
SMART 5 – Reallocated_Sector_Count.
SMART 187 – Reported_Uncorrectable_Errors.
SMART 188 – Command_Timeout.
SMART 197 – Current_Pending_Sector_Count.
SMART 198 – Offline_Uncorrectable.
如果發現該五項值中有大於0的情況,就說明該磁盤應該對它進行持續的關注了,
因為根據其經驗這5項S.M.A.R.T.指標的增長表明即將發生磁盤驅動器故障。

smart參數詳解:
https://www.cnblogs.com/york-hust/p/3380928.html
badblocks命令可以檢查磁盤裝置中損壞的區塊。執行該指令時須指定所要檢查的磁盤裝置,及此裝置的磁盤區塊數。
語法:badblocks [-svw][-b ][-o ][磁盤裝置][磁盤區塊數][啟始區塊]
參數:  -b 指定磁盤的區塊大小,單位為字節。
        -o 將檢查的結果寫入指定的輸出文件。
        -s 在檢查時顯示進度。
        -v 執行時顯示詳細的信息。
        -w 在檢查時,執行寫入測試。 
[磁盤裝置] 指定要檢查的磁盤裝置。
[磁盤區塊數] 指定磁盤裝置的區塊總數。 
[啟始區塊] 指定要從哪個區塊開始檢查。

badblocks -s//顯示進度  -v//顯示執行詳細情況  /dev/sda1
# badblocks -s -v /dev/sda
正在檢查從 0 到 244198583的塊
Checking for bad blocks (read-only test): ^C0.10% done, 0:04 elapsed
Interrupted at block 272896 
$badblocks -s//顯示進度 -w//以寫去檢測 -v//顯示執行詳細情況 /dev/sda2
# badblocks -w -s -v /dev/sda1
Checking for bad blocks in read-write mode
From block 0 to 25607577
Testing with pattern 0xaa: ^C0.73% done, 0:03 elapsed
注意,不能以寫的方式檢測已經掛載的硬盤


使用hdparm測試   
測試硬盤讀寫速度
# hdparm -Tt /dev/sda
/dev/sda:
Timing cached reads:   
1918 MB in  2.00 seconds = 959.62 MB/sec
Timing buffered disk reads:  184 MB in  3.00 seconds =  61.26 MB/sec 

hdparm可檢測,顯示與設定IDE或SCSI硬盤的參數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM