在这里插入代码片
UDMA_CRC_Error_Count是指在硬盘传输数据时发生的CRC校验错误的次数。这个错误通常是由于数据传输过程中出现了数据损坏或传输错误引起的。如果系统出现了大量的UDMA_CRC_Error_Count错误,可能需要检查硬盘连接或者更换硬盘数据线。以下是一个示例的代码,可用于在Linux系统中获取UDMA_CRC_Error_Count:
sudo smartctl -a /dev/sda | grep UDMA_CRC_Error_Count
请注意,上述命令中的"/dev/sda"是指硬盘的设备文件,根据实际情况可能需要替换为系统中的相应硬盘设备文件路径。
Current_Pending_Sector 當前待映射扇區計數
ID:197,告警等級:
「報告」:安定度降低 / Stability declining.
「警惕」:性能衰退 / Performance decline.
「衰退」:數據風險 / High Data Risk.
閾值:
報告級:非 0
警惕級:3
衰退級:10
說明:這一參數的數據表示了「不穩定」的扇區數,即「等待被映射」的扇區數量。
影響:若是有扇區在讀取時出現錯誤,ID197 就會增加,若是該扇區隨後被讀寫成功,等待被映射的操做就會取消,ID197 會降低。若是下一次對該扇區的寫操做繼續發生錯誤,就會產生重映射,而後 ID5 計數增加,ID197 計數降低。若是該扇區後續無操做到達,ID197 數值也會維持不變。
所以,該項少許錯誤不會有嚴重後果,但該項值快速或大量發生變化,則應考慮是否硬盤發生了穩定性方面的問題。
Current_Pending_Sector
Current_Pending_Sector是硬盘SMART属性中的一个参数,它表示当前待处理的坏扇区数量。坏扇区是硬盘上无法正常读取或写入数据的区域。当硬盘发现有坏扇区时,会将其标记为当前待处理的坏扇区,即Current_Pending_Sector的值会增加。
如果你想查询当前待处理的坏扇区数量,可以通过执行以下命令来查看:
sudo smartctl -a /dev/sda
请将/dev/sda替换为你要查询的硬盘设备名称。通过该命令,你将能够看到硬盘的SMART信息,其中包括Current_Pending_Sector属性的值。
如果你想通过编程语言来获取当前待处理的坏扇区数量,你可以使用相关的系统调用或库函数,具体取决于你使用的编程语言和操作系统。
以下是一个使用Python调用smartctl命令来获取当前待处理的坏扇区数量的示例代码:
import subprocess
def get_current_pending_sectors(device):
command = ["sudo", "smartctl", "-A", device]
output = subprocess.check_output(command).decode("utf-8")
lines = output.split("\n")
for line in lines:
if "Current_Pending_Sector" in line:
fields = line.split()
return int(fields[9])
return None
# 示例用法
device = "/dev/sda"
pending_sectors = get_current_pending_sectors(device)
print("当前待处理的坏扇区数量:", pending_sectors)
注意,这段代码需要在具备执行sudo权限的环境下运行。运行时,需要替换/dev/sda为你要查询的硬盘设备名称。
Raw_Read_Error_Rate是硬盘的一个属性,用于表示读取数据时发生错误的概率。它是一个十进制值,可用于判断硬盘的健康状态。
如果要获取硬盘的Raw_Read_Error_Rate属性值,可以使用以下代码:
import subprocess
def get_raw_read_error_rate():
command = "smartctl -a /dev/sda | grep 'Raw_Read_Error_Rate' | awk '{print $10}'"
output = subprocess.check_output(command, shell=True).decode().strip()
return output
raw_read_error_rate = get_raw_read_error_rate()
print("Raw_Read_Error_Rate值为:", raw_read_error_rate)
请注意,上述代码中的/dev/sda是硬盘设备的路径,如果你的硬盘设备路径不同,需要相应修改代码中的路径。
Hardware_ECC_Recovered(硬件纠错码恢复)是指当计算机硬件发生错误时,通过纠错码技术修正错误位置并恢复正确的数据。纠错码是一种编码方式,通过添加冗余信息在传输或存储过程中检测和纠正数据错误。当硬件发生错误时,硬件纠错码恢复可以自动纠正或恢复错误的数据,确保数据的可靠性和准确性。
以下是一个示例代码,用于展示硬件纠错码恢复的实现:
import random
# 定义纠错码字长
code_length = 10
# 生成随机数据
data = [random.randint(0, 1) for _ in range(code_length)]
print("原始数据:", data)
# 添加冗余信息生成纠错码
parity_bits = [0] * (code_length + 1)
for i in range(code_length):
parity_bits[i] = data[i]
parity_bits[code_length] ^= data[i]
# 人为引入错误
error_pos = random.randint(0, code_length)
parity_bits[error_pos] ^= 1
print("引入错误后的纠错码:", parity_bits)
# 恢复数据
recovered_data = [0] * code_length
for i in range(code_length):
recovered_data[i] = parity_bits[i]
recovered_data[error_pos] ^= parity_bits[i]
print("恢复后的数据:", recovered_data)
这段代码模拟了纠错码恢复过程。首先生成随机数据,并利用冗余信息生成纠错码。然后通过人为引入错误来模拟硬件错误的情况。最后利用纠错码恢复技术,根据纠错码和引入错误的位置,恢复出正确的数据。
硬盘健康度,name=reported_uncorrectable, detail=thresh 40, current 111111
smartctl -a /dev/sda |grep -i Reported_Uncorrect
Reported_Uncorrect沒法恢復的錯誤 ID:187
說明:該項值非零既表明硬盤已經出現較爲嚴重的問題,它表明着主控已經確認沒法以包括硬件 ECC 在內的任何手段糾正的錯誤開始出現。
影響:這樣的硬盤應馬上安排替換而不該繼續使用。
Offline_Uncorrectable / Uncorrectable Sector Count 屏蔽扇區計數
ID:198,告警等級:
「報告」:安定度降低 / Stability declining.
閾值:
報告級:3
說明:這一項數據表明磁盤主控確認失效已經屏蔽的扇區計數。
影響:理論上該值過大會致使數據風險。統計顯示絕大多數磁盤該數據爲零。但該值非零並不和磁盤性能降低或故障存在強關聯,問題磁盤的這個值通常都比較高,因此將其置爲報告級別待後續研究。
硬盤健康級別
Good 「健康」級
該級別的硬盤很是健康,無任何風險存在,一般爲全新上線的硬盤,對於標記爲 Good 的硬盤,不會有任何問題存在,也無需留意和監控。blog
特徵界定:全部風險判斷項均爲 0 或關鍵原始數據增加狀況低於「報告」標準。
Caution 「報告」級
健康情況爲 Caution 「報告」的硬盤,在監控指標上存在必定程度的劣化,可是尚在硬盤主控的安全範圍,主控芯片可有效的處理異常並在性能上沒有任何明顯衰退跡象,它還能承擔很長時間的正常服務,可是有必要考慮它的健康情況隨時可能提高到警惕級別。
特徵界定:任一風險項知足「報告」標準。
Threatening 「警惕」級
健康情況爲 Threatening 「警惕」的硬盤,已經存在必定的性能衰退風險,由於已經開始有一些主控芯片沒法控制的狀況發生,它的性能可能也已經有些微降低,它的健康情況正在逐步脫離主控系統的控制,應當發出告警通知到運維人員並考慮儘快從業務系統中摘除該硬盤進行替換,避免它進入衰退級別時還在進行線上服務。
特徵界定:任一風險項知足「警惕」標準
處理動做:人力容許的狀況下安排更換硬盤,從警惕告警發出到進入衰退期一般有足夠的時間進行硬盤替換。若是意外進入衰退期,系統也會自動將其從業務系統中隔離。
Decline 「衰退」級
健康情況爲 Decline 「衰退」的硬盤,不該該在線上服役,原則上處於警惕級別的硬盤就應該被更換,由於「衰退」的硬盤用於線上服務時已經有很大的可能對業務系統的總體運行形成威脅,一般表現爲業務系統性能降低,數據讀寫出錯和超時等,但剛剛進入「衰退」級別的硬盤一般不會產生系統級別的錯誤,只能從性能降低角度判斷它存在性能衰退的狀況。
特徵界定:任一風險項知足「衰退」標準
處理動做:系統會自動將其從業務系統中剔除,但如因各類緣由暫時沒法更換,則應儘快在物理上將其斷開和設備的鏈接,避免硬盤狀態接近「災難」級而致使系統出現異常(例如進程卡死)。
Disaster 「災難」級
健康情況爲 Disaster 「災難」的硬盤一般不會在任何線上系統中出現。在硬盤分級機制啓用後,理論上會出現「災難」級硬盤的狀況只有劇烈衝擊或忽然掉電或電流衝擊致使的硬盤瞬間損壞以及 S.M.A.R.T. 芯片故障致使的沒法讀取。該級別的硬盤徹底沒法工做。
特徵界定:
知足多項「衰退」的特徵。
或 S.M.A.R.T. 信息沒法讀取。
存在大量系統級告警或乾脆沒法識別。
處理動做:更換它!
S.M.A.R.T. 關鍵監控項詳解
Raw_Read_Error_Rate 原始讀取錯誤率
ID:1,告警項:
「報告」:巡檢 / Patrol.
閾值:單位時間內極高增加率
說明:從硬盤讀取原始數據時的錯誤率。一個非零值表示磁盤表面或讀寫磁頭有問題。
影響:該項數據大幅度增長一般說明硬盤年事已高,應當考慮預備從線上環境替換下來,但短時間內不會有太大問題,只是會必定程度上影響性能,而該值增加率很是大的狀況下也可能較大程度的影響硬盤性能。
因爲各廠商對該值定義不一樣,該值增長狀況和硬盤工做情況也不存在強關聯性,因此不做爲警惕和衰退等級界定要素。
Seek_Error_Rate 尋道錯誤率
ID:7,告警項:
「報告」:巡檢 / Patrol.
閾值:單位時間內極高增加率
說明:定位數據時的錯誤頻率
影響:該項數據大幅度增長時,硬盤性能有必定影響,但還能夠正常工做,不會立馬嗝屁,但存在必定風險,該項數據和原始讀取錯誤率同時上漲的狀況下,硬盤可能發生機械性能衰退,聲音變大,震動加重,甚至產生難聽的噪聲,應當考慮儘快替換或退役。
因爲各廠商對該值定義不一樣,該值增長狀況和硬盤工做情況也不存在強關聯性,因此不做爲警惕和衰退等級界定要素。
Reallocated_Sector_Ct 重分配扇區計數
ID:5,告警項:
「警惕」:性能衰退 / Performance decline.
「衰退」:數據風險 / High Data Risk.
閾值:「警惕」非 0
說明:當硬盤發現一個讀/寫/驗證錯誤,它會標記扇區爲 "Reallocated" 並移動數據到一個保留區
影響:硬盤情況已經惡化到不僅僅主要影響性能,甚至發生數據完整性風險的程度,它已經不用搶救了,應當當即更換或退役,這時它依然還能夠依靠主控系統的努力堅持一段時間,但風險已經增長到不可控的程度。
Unexpect_Power_Loss_Ct / Power-off Retract Count / Emergency Retract Cycle Count 異常斷電計數
ID:174 / 192,告警項:
「報告」:偵測到核心供電異常 / Core Power Interruption Detected.
閾值:增長
說明:檢測到該值增加應檢查設備是否存在電源故障或供電異常
影響:該計數值增長一般代表設備經歷了一次異常關機,若是是單個硬盤發生該項告警,則應考慮線纜或主板故障,監控該值的意義主要是判斷設備供電故障而非異常關機,由於外部檢測系統能更快的發現異常關機。
Wear_Leveling_Count 顆粒平均擦寫次數
ID:177,告警項:
「警惕」:壽命將盡 / Disk Is Dying.
「衰退」:回天乏術 / Disk Is Dead.
閾值:
警惕級 WORST 數據(非 RAW )低於15;
衰退級 WORST 數據(非 RAW )爲 小於等於 1 .
說明:SSD 特有項,用於評估 SSD 壽命,因廠商評估標準不一樣,故不以 RAW VALUE 爲標準。
影響:硬盤進入警惕級時應考慮更換它,由於該項降爲 0 和硬盤工做狀況不存在強關聯性,但即使各項指標均無異常,也不推薦在線上使用時超期服役。
通常認爲該值爲零時,已達到硬盤設計使用壽命。
Runtime_Bad_Block 運行時壞塊計數
ID:183,告警項:
「報告」:安定度降低 / Stability declining.
閾值:報告級:大於 1
說明:這個值表明硬盤運行時出現的壞塊數量,一般該值爲零。
影響:該值和硬盤運行情況不存在強關聯,該值意味着運行時遇到壞塊,可是對於 NAND 存儲裝置來講,壞塊不像機械硬盤那麼敏感,主控能很好的處理這些問題,可是該值和硬盤可靠及穩定性相關,須要密切關注。
根據統計數據來看,線上全部 SSD 該值增加的數量很是少。具體對可靠性和性能的影響還需後續觀察,因此先置爲報告級監控項。
End-to-End_Error 端到端校驗錯誤
ID:184,告警項:
「報告」:傳輸介質異常 / Transmission Medium Fucked Up.
閾值:一個非 0 值
說明:主機和硬盤間的數據傳輸校驗出錯計數。
影響:這個值極爲少見,我用於測試的所有 3000 多塊硬盤中無一出現該值。根據資料來看,該值增加通常狀況下是傳輸介質例如 SATA 線或者接口存在問題。可嘗試從新拔插或者更換傳輸線。
因沒有發現案例,因此該項目前是置爲報告級的。
Reported_Uncorrect 沒法恢復的錯誤
ID:187,告警等級:
衰退:偵測到數據風險 / High Data Risk.
說明:該項值非零既表明硬盤已經出現較爲嚴重的問題,它表明着主控已經確認沒法以包括硬件 ECC 在內的任何手段糾正的錯誤開始出現。
影響:這樣的硬盤應馬上安排替換而不該繼續使用。
COMMAND_TIMEOUT 指令超時
ID:188,告警等級:
「警惕」:性能衰退 / Performance decline.
「衰退」:嚴重性能衰退風險 / High Performance Risk.
「災難」:別鬧 / Performance is gone.
閾值:
警惕級:非 0
衰退級:高於 10
災難級:高於 1000000
說明:該項值非零並持續增加代表硬盤響應能力降低,性能受嚴重影響。
影響:須要即刻更換,但因該值剛開始上升時不會發生嚴重錯誤,從而可能難以觸發告警,它的獨立上漲將致使硬盤性能受到難以感知的影響,可是會逐步劣化成嚴重的性能降低風險。
根據經驗,通常認爲該值和 SMART187 以及 SMART183 存在關聯性,上述兩者的出現有必定可能(看讀寫頻率)致使該值持續升高。
High_Fly_Writes 磁頭在異常高度工做
ID:189,告警等級:
「報告」:磁頭異常 / Disk Fly High.
閾值:大於 1 或增加
說明:該項值非零時代表硬盤可能曾遭到衝擊或存在機件異常。
影響:須要密切監控是否存在惡化狀況,該值持續增加可致使設備性能降低,因該值的增加意味着未完成就被停止的操做數量增加。
G-sense Error Rate 加速度傳感器告警
ID:191,告警等級:
「報告」:碰撞警報 / Physical Impact Warning.
閾值:增加
說明:盤體內置加速度傳感器檢測到可能對硬盤形成傷害的運行時衝擊。
影響:該值比較少見,可是意味着外部環境有劇烈變更,例如服務器受到撞擊,地震等,當某個機房全部服務器都檢測到該項值上升時,請聯繫機房確認環境是否有劇變或地震發生。
Temperature_Celsius 或 Airflow_Temperature_Celsiu 溫度 / 氣流溫度
ID:194 或 190,告警等級:
「報告」:燒烤硬盤 / BBQ.
「警惕」:率先踏入地獄 / Drop feet first in the hell.
閾值:
報告級:52
警惕級:62
說明:硬盤工做溫度狀況。
影響:若是某個機房的硬盤工做溫度廣泛太高,應當確認機房內散熱狀況是否會致使設備壽命下降。
Current_Pending_Sector 當前待映射扇區計數
ID:197,告警等級:
「報告」:安定度降低 / Stability declining.
「警惕」:性能衰退 / Performance decline.
「衰退」:數據風險 / High Data Risk.
閾值:
報告級:非 0
警惕級:3
衰退級:10
說明:這一參數的數據表示了「不穩定」的扇區數,即「等待被映射」的扇區數量。
影響:若是有扇區在讀取時出現錯誤,ID197 就會增加,若是該扇區隨後被讀寫成功,等待被映射的操做就會取消,ID197 會降低。若是下一次對該扇區的寫操做繼續發生錯誤,就會產生重映射,而後 ID5 計數增加,ID197 計數降低。若是該扇區後續無操做到達,ID197 數值也會維持不變。
所以,該項少許錯誤不會有嚴重後果,但該項值快速或大量發生變化,則應考慮是否硬盤發生了穩定性方面的問題。
Offline Uncorrectable / Uncorrectable Sector Count 屏蔽扇區計數
ID:198,告警等級:
「報告」:安定度降低 / Stability declining.
閾值:
報告級:3
說明:這一項數據表明磁盤主控確認失效已經屏蔽的扇區計數。
影響:理論上該值過大會致使數據風險。統計顯示絕大多數磁盤該數據爲零。但該值非零並不和磁盤性能降低或故障存在強關聯,問題磁盤的這個值通常都比較高,因此將其置爲報告級別待後續研究。