smartctl 명령어는 하드디스크 롬에 기록되는 형태이다. 때문에 I/O 에러 발생때문에 write가 잠겨
/var/log/messages 상에 찍히지 않는 I/O에러를 검출하는 목적으로 사용할 수 있다.
CentOS 5/6 은 이미 탑재되어 있는 명령어 이지만 Centos 7의 경우 아래와 같이 명령어 추가를 한다.
1 |
~]# yum -y install smartmontools |
명령어는 작동시간, 부팅횟수, 헤더, 온도, 배드카운터, CRC 에러등등 하드디스크의 모든 종합 정보를 볼수 있다.
클라우드 – 가상디스크는 지원하지 않는다.
일반디스크인데 정보 표기다 되지 않을경우 아래 명령어서 on 시켜줘야 할 수 있다.
1 |
~]# smartctl -s on -o on -S on /dev/sdb |
1. 아래 명령어는 SMART 속성 정보만 표기 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
~]# smartctl -A /dev/sdb smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-573.el6.x86_64] (local build) Copyright (C) 2002-12 by Bruce Allen, 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 119 080 006 Pre-fail Always - 230021096 3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 26 5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 72 7 Seek_Error_Rate 0x000f 085 060 030 Pre-fail Always - 354638784 9 Power_On_Hours 0x0032 081 081 000 Old_age Always - 17511 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 26 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0 187 Reported_Uncorrect 0x0032 001 001 000 Old_age Always - 13496 188 Command_Timeout 0x0032 100 098 000 Old_age Always - 4347069211 189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 070 063 045 Old_age Always - 30 (Min/Max 26/33) 191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 18 193 Load_Cycle_Count 0x0032 070 070 000 Old_age Always - 61781 194 Temperature_Celsius 0x0022 030 040 000 Old_age Always - 30 (0 16 0 0 0) 197 Current_Pending_Sector 0x0012 093 086 000 Old_age Always - 1184 198 Offline_Uncorrectable 0x0010 093 086 000 Old_age Offline - 1184 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 267091131252729 241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 6696573732 242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 10010897282 |
주요 해서 봐야 하는 부분은 아래와 같다.
HEAD spindle error // Spin_Retry_Count (매우 높음) = 헤드가 재 작동을 시도한 횟수.
BAD sector // Offline_Uncorrectable (높음) = 읽기/쓰기에 문제가 발생한 섹터 = 배드 섹터 발생
아래는 약간은 중요도가 떨어지지만 주요해서 봐야 한다.
UDMA_CRC_Error_Count (낮음) = HDD인터페이스 전송 CRC 오류 (sata 케이블 오류의심)
위 에러중 HEAD 관련 카운트가 1개라도 나온경우 스핀들모터 혹은 리드헤드 쪽에 문제가 발생한것이다.
이는 즉시 데이터 백업 및 디스크 교체를 진행한다.
2. 누적된 에러 로그를 호출한다. ‘ㅅ’a
1 |
~]# smartctl -q errorsonly -H -l selftest -l error /dev/sdb |
정상일경우 아무런 메세지도 표시되지 않는다. 메세지가 출력되는 경우 아래 상세 테스트를 진행한다.
3. 상세한 테스트를 한다. ( short 1~2분 소요 / long = 약 두시간 가량 소요 )
1 |
~]# smartctl -t short /dev/sdb |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
~]# smartctl -t long /dev/sdb smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-573.el6.x86_64] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Extended self-test routine immediately in off-line mode". Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 108 minutes for test to complete. Test will complete after Fri Jun 17 15:55:42 2016 Use smartctl -X to abort test. |
백그라운드 테스트가 진행되며 테스트간 off-line 모드가 되고 테스팅 시간은 약 108분 걸린다고 되어 있다.
smartctl -X 명령어로 long 테스트를 중지할 수 있다.
Status 값에 failure 가 떨어질경우 백업 및 디스크 교체를 한다.