天天看點

smartctl指令詳解

1、什麼是S.M.A.R.T.

SMART是一種磁盤自我分析檢測技術,早在90年代末就基本得到了普及,每一塊硬碟(包括IDE、SCSI)在運作的時候,都會将自身的若幹參數記錄下來。這些參數包括型号、容量、溫度、密度、扇區、尋道時間、傳輸、誤碼率等。硬碟運作了幾千小時後,很多内在的實體參數都會發生變化,某一參數超過報警門檻值,則說明硬碟接近損壞,此時硬碟依然在工作,如果使用者不理睬這個報警繼續使用,那麼硬碟将變得非常不可靠,随時可能故障

2、啟用SMART

SMART是和主機闆BIOS上相應功能配合的

要使用SMART,必須先進入到主機闆BIOS設定裡邊啟動相關設定

一般從Pentium2級别起的主機闆,都支援SMART

BIOS啟動以後,就是作業系統級别的事情了

很遺憾,Windows沒有内置SMART相關工具(需要安裝第三方工具軟體)

好在Linux上很早就有了SMART支援了

如果把Linux裝在VMware等虛拟機上,在系統啟動時候可以看到有個服務啟動報錯:smartd

這個伺服器就是smart的daemon程序(因為vmware虛拟機的硬碟不支援SMART,是以報錯)

首先通過dmesg工具,确認一下硬碟的裝置符号

例如一個IDE硬碟連接配接到Primary IDE 總線上的Slave位置,硬碟裝置符号是/dev/hdb

hdb中的h代表IDE,如果顯示為sdb,則代表SATA和SCSI

最後一個字幕b代表Primary總線,第二塊硬碟即Slave位置

确認硬碟是否打開了SMART支援

smartctl -i /dev/hdb

例如看到如下傳回結果

[[email protected]-46 ~]# smartctl -i /dev/hdb

smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===

Device Model: ST380011A

Serial Number: 3JVAPRGH

Firmware Version: 3.04

User Capacity: 80,026,361,856 bytes

Device is: In smartctl database [for details use: -P show]

ATA Version is: 6

ATA Standard is: ATA/ATAPI-6 T13 1410D revision 2

Local Time is: Tue Apr 3 15:39:52 2007 CST

SMART support is: Available - device has SMART capability.

SMART support is: Disabled

SMART Disabled. Use option -s with argument 'on' to enable it.

[[email protected]-46 ~]#

我們可以看到SMART support is: Disabled表示SMART未啟用

執行如下指令,啟動SMART:

smartctl --smart=on --offlineauto=on --saveauto=on /dev/hdb

例如看到如下傳回結果

[[email protected]-46 ~]# smartctl --smart=on --offlineauto=on --saveauto=on /dev/hdb

smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

=== START OF ENABLE/DISABLE COMMANDS SECTION ===

SMART Enabled.

SMART Attribute Autosave Enabled.

SMART Automatic Offline Testing Enabled every four hours.

[[email protected]-46 ~]#

現在硬碟的SMART功能已經被打開

執行如下指令檢視硬碟的健康狀況:

smartctl -H /dev/hda

例如可以看到如下結果:

[[email protected]-46 ~]# smartctl -H /dev/hdb

smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===

SMART overall-health self-assessment test result: PASSED

[[email protected]-46 ~]#

請注意result後邊的結果:PASSED,這表示硬碟健康狀态良好

如果這裡顯示Failure,那麼最好立刻給伺服器更換硬碟

SMART隻能報告磁盤已經不再健康,但是報警後還能繼續運作多久是不确定的

通常,SMART報警參數是有預留的,磁盤報警後,不會當場壞掉,一般能堅持一段時間

有的硬碟SMART報警後還繼續跑了好幾年,有的硬碟SMART報錯後幾天就壞了

但是一旦出現報警,僥幸心裡是萬萬不能的……

執行如下指令可以看到詳細的參數:

smartctl -A /dev/hdb

例如可以看到如下結果:

[[email protected]-46 ~]# smartctl -A /dev/hdb

smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===

SMART Attributes Data Structure revision number: 10

Vendor Specific SMART Attributes with Thresholds:

ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE

1 Raw_Read_Error_Rate 0x000f 053 051 006 Pre-fail Always - 11338710

3 Spin_Up_Time 0x0003 098 097 000 Pre-fail Always - 0

4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 17

5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0

7 Seek_Error_Rate 0x000f 087 060 030 Pre-fail Always - 610059516

9 Power_On_Hours 0x0032 087 087 000 Old_age Always - 11974

10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0

12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 110

194 Temperature_Celsius 0x0022 045 052 000 Old_age Always - 45

195 Hardware_ECC_Recovered 0x001a 053 051 000 Old_age Always - 11338710

197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0

198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0

199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0

200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0

202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0

[[email protected]-46 ~]#

上邊列出的參數表中可供進行技術分析和參考,使用下邊的指令可以輸出完整結果:

smartctl -a /dev/hdb

定期登入到伺服器上運作smartctl是比較麻煩的,linux提供了系統程序smartd

編輯配置檔案:

vi /etc/smartd.conf

這個配置檔案中大部分可能是注釋掉的說明,隻需要和目前硬碟相關的一行寫入正确即可:

/dev/hdb -H -m [email protected]

上邊的配置表示smartd以靜默狀态工作,當SMART中報告PASSED的時候不理睬

一旦出現Failure,立刻用郵件通知使用者指定的郵箱

修改配置後重新開機服務:

/etc/init.d/smartd

即可完成對SMART的全部配置。

功能:可以檢視生産廠商、型号、序列号、容量、是否支援SMART、開啟否

首頁:http://smartmontools.sourceforge.NET/

Centos安裝:

yum -y install smartmontools

smartctl 

-i 指定裝置

-d 指定裝置類型,例如:ata, scsi, marvell, sat, 3ware,N

-a 或A 顯示所有資訊

-l 指定日志的類型,例如:TYPE: error, selftest, selective, directory,background, scttemp[sts,hist]

-H 檢視硬碟健康狀态

-t short 背景檢測硬碟,消耗時間短

-t long 背景檢測硬碟,消耗時間長

-C -t short 前台檢測硬碟,消耗時間短

-C -t long 前台檢測硬碟,消耗時間長

-X 中斷背景檢測硬碟

-l selftest 顯示硬碟檢測日志

HP硬碟:

smartctl -s on -d  cciss,0 /dev/cciss/c0d0 開啟SMART

smartctl  -a  -d cciss,0 -i /dev/cciss/c0d0  顯示所有SMART資訊

smartctl  -l error  -d cciss,0 -i /dev/cciss/c0d0 檢視磁盤錯誤日志

+++++++++++++++++++++++smarted服務+++++++++++++++++

簡單說下smartctl:smartd由kernel-utils包預設安裝。用指令 rpm -ql kernel-utils 可以列出kernel-utils包中的檔案

它是一個守護程序(一個幫助程式),它能監視擁有自我監視,分析和彙報技術(Self-Monitoring, Analysis, and Reporting Technology - SMART)的硬碟。

主配置檔案:/etc/smartd.conf 

添加一行/dev/cciss/c0d0 -H -m [email protected]

上邊的配置表示smartd以靜默狀态工作,當SMART中報告PASSED的時候不理睬一旦出現Failure,立刻用郵件通知使用者指定的郵箱

繼續閱讀