本實用新型涉及計算機硬盤
技術(shù)領(lǐng)域:
:,特別涉及一種硬盤狀態(tài)監(jiān)測裝置。
背景技術(shù):
::隨著云計算和大數(shù)據(jù)技術(shù)的興起,通過在普通商用機器上,構(gòu)建大規(guī)模的計算和存儲集群的場景越來越多,隨著存儲容量的增長,硬盤發(fā)生故障的情形也越來越多。對硬盤狀態(tài)的實時、直觀的顯示,可以有效地反映硬盤的工作狀態(tài),使得工作人員可以及時有效的發(fā)現(xiàn)故障硬盤,提高裝置的穩(wěn)定性以及問題硬盤的處理時效性,保證裝置的正常運行。已知對硬盤的監(jiān)測方法大致有2種,一種是通過軟件周期性地掃描硬盤的健康狀態(tài),這種方式需要占用一定的裝置資源,且由于“盤符漂移”問題,軟件無法準(zhǔn)確定位故障硬盤的物理位置。第二種是通過專用的硬件設(shè)備,如SAFTE(SCSIAccessedFault-TolerantEnclosure)技術(shù),這種方法需要額外的硬件設(shè)備,增加裝置成本。技術(shù)實現(xiàn)要素:本實用新型的目的在于提供一種硬盤狀態(tài)監(jiān)測裝置,用于解決現(xiàn)有硬盤無法直觀指示硬盤故障的問題。本實用新型的一種硬盤狀態(tài)監(jiān)測裝置,其中,包括:硬盤、可編程邏輯控制器以及一指示燈;該硬盤具輸出接口以及硬盤控制器;該輸出接口連接該可編程邏輯控制器,該可編程邏輯控制器連接該指示燈。根據(jù)本實用新型的硬盤狀態(tài)監(jiān)測裝置的一實施例,其中,該可編程邏輯控制器為CPLD。根據(jù)本實用新型的硬盤狀態(tài)監(jiān)測裝置的一實施例,其中,該指示燈包括第一指示燈以及第二指示燈,該硬盤控制器輸出的激發(fā)信號連接到該CPLD,并被分為兩路,其中一路將信號反相后輸出該第一指示燈,另一路經(jīng)該CPLD處理,并根據(jù)信號的電平變化次數(shù)輸出控制信號給該第二指示燈。根據(jù)本實用新型的硬盤狀態(tài)監(jiān)測裝置的一實施例,其中,該指示燈為LED燈。根據(jù)本實用新型的硬盤狀態(tài)監(jiān)測裝置的一實施例,其中,還包括:處理控制模塊,該處理控制模塊內(nèi)存有硬盤狀態(tài)信息,該處理控制模塊通過接收到硬盤狀態(tài)信號,判斷硬盤狀態(tài),并向該可編程邏輯控制器發(fā)送指令,控制LED指示燈動作以顯示硬盤的狀態(tài)類型。綜上,本實用新型通過硬盤控制器采集硬盤的運行狀態(tài),對不同的狀態(tài),輸出不同電平的Active信號給CPLD,CPLD解析Active信號,分別控制硬盤狀態(tài)指示燈和硬盤故障指示燈的指示狀態(tài)。通過觀察硬盤的指示燈,即可判斷硬盤的健康狀況。附圖說明圖1所示為本實用新型所述硬盤狀態(tài)監(jiān)測裝置一實施示意圖;圖2所示為本實用新型所述硬盤狀態(tài)監(jiān)測裝置另一實施例示意圖;圖3所示為本實用新型所述硬盤狀態(tài)監(jiān)測裝置再一實施例示意圖;圖4所示為硬盤狀態(tài)監(jiān)測裝置的CPLD與CPU的交互原理圖。具體實施方式下面結(jié)合附圖對本實用新型提供的硬盤運行狀態(tài)監(jiān)測裝置做詳細說明。圖1所示為本實用新型所述硬盤狀態(tài)監(jiān)測裝置一實施示意圖,如圖1所示,在本實施例中,硬盤狀態(tài)監(jiān)測裝置10包括一硬盤(HardDiskDrive,HDD)1、一可編程邏輯控制器2以及一指示燈4。參考圖1,硬盤1具有一組信號輸出接口12以及硬盤控制器11。接口12連接可編程邏輯控制器2,可編程邏輯控制器2連接指示燈4。對于一實施例,指示燈3為LED(light-emittingdiode)指示燈。參考圖1,LED指示燈3為一組指示燈,包括用于指示硬盤上電/數(shù)據(jù)傳輸?shù)闹甘緹艉陀糜谥甘居脖P告警/故障的指示燈。通過LED燈的亮燈顏色和閃爍頻率來指示硬盤11的運行狀態(tài)為正常(Active)、數(shù)據(jù)傳輸狀態(tài)(DataTransmission)、告警(Warning)狀態(tài)或錯誤(Error)狀態(tài)??删幊踢壿嬁刂破?根據(jù)硬盤1輸出信號進行采樣,根據(jù)信號的電平變化次數(shù),控制LED指示燈3動作。圖2所示為本實用新型所述硬盤狀態(tài)監(jiān)測裝置另一實施例示意圖,參考圖2,進一步的,可編程邏輯控制器2為CPLD(ComplexProgrammableLogicDevice)。硬盤1的Active信號線連接到CPLD2并被分為兩路,其中一路將信號做反后輸出至LED燈32,CPLD2的LED指示燈控制模塊21接到LED燈31。CPLD2的LED指示燈控制模塊21對輸入的Active信號進行采樣,根據(jù)信號的電平變化次數(shù),控制LED燈31。CPLD2還可以將具體硬盤1的狀態(tài)信息進行傳輸,例如,傳輸給監(jiān)控中心通知運維人員,以便于對相關(guān)的硬盤1進行下線或者重啟所屬裝置的操作。參考圖2,對于一具體實施例,當(dāng)硬盤1上電且加載成功時,LED燈31常亮,LED燈32不亮。當(dāng)硬盤10有數(shù)據(jù)傳輸時,LED燈31閃爍,LED燈32不亮。當(dāng)硬盤檢測到告警情況時,LED燈31視是否存在數(shù)據(jù)傳輸而表現(xiàn)為常亮或閃爍,LED燈32閃爍。當(dāng)硬盤檢測到存在錯誤情況時,LED燈31視是否存在數(shù)據(jù)傳輸而表現(xiàn)為常亮或閃爍,LED燈32常亮。參考圖2,對于一具體實施例,將硬盤1中的P11接口接至CPLD2,其中一路將信號做反向后輸出LED燈32。另外一路接LED指示燈控制模塊21,LED指示燈控制模塊21會對輸入的active信號進行采樣,并計數(shù)100ms內(nèi)active信號電平變化次數(shù),當(dāng)100ms內(nèi)探測該信號沿變化次數(shù)N在10<N<25時,認為硬盤1出現(xiàn)warning,驅(qū)動輸出信號使紅燈LED燈31閃爍;若25=<N,認為硬盤出現(xiàn)錯誤,此時驅(qū)動輸出信號使紅燈LED燈31長亮。圖3所示為本實用新型所述硬盤狀態(tài)監(jiān)測裝置再一實施例示意圖,圖4所示為硬盤狀態(tài)監(jiān)測裝置的CPLD與CPU的交互原理圖,參考圖3以及圖4,可以為CPLD2增加一根引向CPU4的管線,這樣可以通過I2C接口,通過寫CPLD2的寄存器的方式,控制指示燈3的狀態(tài)。具體來說,LED指示燈3既可以由硬盤控制器11輸出的電平信號進行控制,也可以通過寫寄存器的方式控制。CPLD2在實現(xiàn)的時候,由CPLD2的內(nèi)部寄存器提供一個狀態(tài)字段,其中一部分用于存儲硬盤控制器的控制結(jié)果。參考圖3以及圖4,CPU4收集各節(jié)點上硬盤1的SMART信息,形成SMART信息的判斷信息數(shù)據(jù)庫,基于收集到的SMART信息,對硬盤1的健康級別進行判斷(如健康、需注意、告警、嚴(yán)重錯誤等不同級別),監(jiān)測硬盤1的可用情況。另一方面,CPU4可以將具體硬盤的狀態(tài)信息進行傳輸,例如,傳輸給監(jiān)控中心通知運維人員,以便于對相關(guān)的硬盤進行下線或者重啟所屬裝置的操作。參考圖3以及圖4,將CPLD2從硬盤1的接口12上得到的硬盤1的狀態(tài)并保存,可以分別將卡在位,數(shù)據(jù)讀寫,警告,錯誤標(biāo)記為二進制編碼00、01、10、11;同時CPU4檢測到的硬盤1的工作狀態(tài)通過I2C接口寫入CPLD2的寄存器中并解析出來與上述狀態(tài)進行比較,可以按照數(shù)值大小做選擇開關(guān)得出最終的硬盤1工作狀態(tài)。從得出的硬盤1最終的狀態(tài)再去發(fā)送給LED指示燈3。由于告警和錯誤時Active輸出頻率小于24Hz,人眼會認為綠燈LED燈32長亮。參考圖3以及圖4,當(dāng)硬盤控制器11檢測到嚴(yán)重故障的同時,CPU4上的也可以通過SMART信息判斷出該故障。兩者可能會同時向CPLD2報告點LED燈31,即紅燈(或紅燈閃爍),這是正常情況,CPLD2可以對收到的請求進行仲裁,優(yōu)先選擇嚴(yán)重等級高的情況亮燈。參考圖3以及圖4,簡述本實用新型所述硬盤狀態(tài)監(jiān)測裝置的基于收集到的SMART信息,CPU4對硬盤1的健康級別進行判斷的檢測原理。以hosts表存儲目標(biāo)監(jiān)測主機的基本信息,如安裝的操作裝置及版本、體系結(jié)構(gòu)(x86_64或者i686等)、IP地址、主機名等。disks表存儲目標(biāo)主機上的各個硬盤的信息,如硬盤名稱(/dev/sda、/dev/sdb等)、硬盤大小、序列號、硬盤類型(SATA或者SSD)等,通過hostid和主機表關(guān)聯(lián)起來。smart_info表存儲了周期性獲取到的監(jiān)測信息,每個SMART屬性占一列,不同的硬盤廠家,其硬盤支持的SMART屬性不盡相同。這里只存儲我們關(guān)心的項(見第3章節(jié)),如果特定硬盤不支持某個項,則設(shè)該列的值為-1,使用時會自動忽略該值。disk_status表存儲了根據(jù)smart_info中的信息進行判斷后的硬盤狀態(tài)。參考圖3,從smart_info表獲取最近的監(jiān)測結(jié)果,如果某些項的值超過預(yù)定義的閾值,根據(jù)實際的超標(biāo)情況,判斷健康級別,將結(jié)果寫入disk_status表。程序會根據(jù)disk_status的值,通知CPLD點LED燈31。設(shè)置硬盤健康狀態(tài)標(biāo)志:0:健康1:報告2:警戒3:衰退4:災(zāi)難;設(shè)置輪詢周期:5分鐘;遍歷主機中的硬盤:獲取最近的2個原始讀取錯誤率(Raw_Read_Error_Rate)結(jié)果,設(shè)置為result1和result2;如果(result2-result1)/result1*100%>50%,則:如果該硬盤的健康狀態(tài)=0,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的2個尋找錯誤率(Seek_Error_Rate),設(shè)置為result1和result2如果(result2-result1)/result1*100%>50%,則:如果該硬盤的健康狀態(tài)=0,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個Reallocated_Sector_Ct,設(shè)置為result1;如果result1>1000:如果該硬盤的健康狀態(tài)<3,則設(shè)置該硬盤的健康狀態(tài)為3;否則,不修改健康狀態(tài);如果result1>0并且result1<1000;如果該硬盤的健康狀態(tài)<2,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個馬達重試計數(shù)(SpinRetryCount),設(shè)置為result1;如果result1>0:如果該硬盤的健康狀態(tài)<2,則設(shè)置該硬盤的健康狀態(tài)為2;否則,不修改健康狀態(tài)。獲取最近的2個斷電縮進次數(shù)(Power-Off_Retract_Count),設(shè)置為result1和result2;如果result2–result1>0:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個全盤擦寫計數(shù)(Wear_Leveling_Count),設(shè)置為result1;如果result1<=1:如果該硬盤的健康狀態(tài)<3,則設(shè)置該硬盤的健康狀態(tài)為3;否則,不修改健康狀態(tài)。如果result1>1并且result1<15:如果該硬盤的健康狀態(tài)<2,則設(shè)置該硬盤的健康狀態(tài)為2;否則,不修改健康狀態(tài)。獲取最近的一個運行時壞塊計數(shù)(Runtime_Bad_Block),設(shè)置為result1;如果result1>1:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個端對端錯誤(End-to-End_Error),設(shè)置為result1;如果result1>0:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個命令超時(COMMAND_TIMEOUT),設(shè)置為result1;如果result1>1000000:如果該硬盤的健康狀態(tài)<4,則設(shè)置該硬盤的健康狀態(tài)為4;否則,不修改健康狀態(tài)。如果result1>10并且result1<100000:如果該硬盤的健康狀態(tài)<3,則設(shè)置該硬盤的健康狀態(tài)為3;否則,不修改健康狀態(tài)。如果result1>0并且result1<10:如果該硬盤的健康狀態(tài)<2,則設(shè)置該硬盤健康狀態(tài)為2;否則,不修改健康狀態(tài)。獲取最近的2個高飛寫入(High_Fly_Writes),設(shè)置為result1和result2;如果result1>1或result2–result1>0:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的2個加速度錯誤率(G-senseErrorRate),設(shè)置為result1和result2;如果result2–result1>0:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個攝氏溫度(Temperature_Celsius),設(shè)置為result1;如果result1>62:如果該硬盤的健康狀態(tài)<2,則設(shè)置該硬盤的健康狀態(tài)為2;否則,不修改健康狀態(tài);如果result1>52并且result1<62:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個當(dāng)前待映射扇區(qū)(Current_Pending_Sector),設(shè)置為result1;如果result1>10:如果該硬盤的健康狀態(tài)<3,則設(shè)置該硬盤的健康狀態(tài)為3;否則,不修改健康狀態(tài);如果result1>3并且result1<10:如果該硬盤的健康狀態(tài)<2,則設(shè)置該硬盤的健康狀態(tài)為2;否則,不修改健康狀態(tài);如果result1>0并且result1<3:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取最近的一個脫機無法校正(Offline_Uncorrectable),設(shè)置為result1如果result1>3:如果該硬盤的健康狀態(tài)<1,則設(shè)置該硬盤的健康狀態(tài)為1;否則,不修改健康狀態(tài)。獲取該硬盤的最終狀態(tài)disk_status如果disk_status<2,CPU4不通知CPLD點LED燈31;如果disk_status=2,CPU4通知CPLD點LED燈31,設(shè)置為紅色閃爍;如果disk_status>2,CPU4通知CPLD點LED燈31,設(shè)置為紅色常亮。本實用新型硬盤狀態(tài)監(jiān)測裝置根據(jù)上述判斷定義對硬盤1的健康級別進行判斷的監(jiān)控狀態(tài)如表1所示:表1綜上,本實用新型硬盤狀態(tài)監(jiān)測裝置,解決了現(xiàn)有的硬盤控制器只檢測和物理相關(guān)的故障,有些時候,我們會遇到硬盤物理上正常,但裝置無法使用的情況(如磁盤變?yōu)橹蛔x,或讀寫出錯,重啟下裝置又可以正常使用),如果應(yīng)用程序檢測到此類軟錯誤,一方面可以通過設(shè)置硬盤指示燈的方式,物理地定位故障硬盤的位置,另一方面可以將此信息上報給硬盤監(jiān)控中心,由監(jiān)控中心通知運維人員,對相關(guān)的硬盤進行下線或者重啟所屬裝置的操作。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3