본문 바로가기
Server/Ubuntu

우분투에서 하드 상태 체크하기

by 유주원 2014. 9. 5.

멀쩡하게 잘 쓰고 있던 운영 서버에서 갑자기 아래와 같은 에러 메시지를 밷어내며.. read-only 상태로 변하였다.


end_request i/o error dev sda sector


하드 쪽이 의심이 가지만, 열씸히 구글 도움을 요청해서 smartctl이란 util을 발견하였다.

만약 smartctl 명령이 먹히지 않는다면 apt-get으로 설치!!


root@> apt-get install smartmontools


설치가 완료되었으면, 아래와 같은 명령으로 하드디스크 점검 시작!


root@> smartctl -a /dev/sda


해당 명령을 치면 하드디스크 관련 메시지가 쫙 나오고.. 아래 요약한 부분이 하드 점검 결과라고 한다.

빨간색으로 표시한 곳은 RAW_VALUE 수치가 높을수록 안좋은 거임..


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   098   092   006    Pre-fail  Always       -       108163683

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

  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       51

  5 Reallocated_Sector_Ct   0x0033   093   093   036    Pre-fail  Always       -       10200

  7 Seek_Error_Rate         0x000f   082   060   030    Pre-fail  Always       -       195279266

  9 Power_On_Hours          0x0032   086   086   000    Old_age   Always       -       12523

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

 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       51

183 Runtime_Bad_Block       0x0032   089   089   000    Old_age   Always       -       11

184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0

187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       121

188 Command_Timeout         0x0032   100   092   000    Old_age   Always       -       446683414632

189 High_Fly_Writes         0x003a   092   092   000    Old_age   Always       -       8

190 Airflow_Temperature_Cel 0x0022   053   037   045    Old_age   Always   In_the_past 47 (13 78 47 47)

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       -       36

193 Load_Cycle_Count        0x0032   075   075   000    Old_age   Always       -       51022

194 Temperature_Celsius     0x0022   047   063   000    Old_age   Always       -       47 (0 20 0 0)

197 Current_Pending_Sector  0x0012   084   070   000    Old_age   Always       -       2776

198 Offline_Uncorrectable   0x0010   084   070   000    Old_age   Offline      -       2776

199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       166318313581678

241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       167781538036

242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       6941350865



Raw_Read_Error_Rate : 데이터를 읽는 도중에 발생한 에러 (이건 왜이렇게 수치가 높지 -_-;;)

Spin_Up_Time : 하드가 제로 rpm에서 최대 rpm까지 도달하는데 걸리는 시간이 정상인지 여부 

Start_Stop_Count : 하드가 회전하고 정지한 수

Reallocated_Sector_Ct : 섹터에 문제가 생겨 재할당된 섹터 수

Seek_Error_Rate : 탐색 에러율 (이것도 수치가 높다 ㅜ_ㅜ)

Power_On_Hours : 하드에 전원이 인가된 시간

Spin_Retry_Count : 최대 rpm에 도달하기 위해 시도한 횟수 (이건 정상)

Power_Cycle_Count : 전원 on/off 횟수

Runtime_Bad_Block : 일반적인 동작 상황에서 발생하는 에러의 개수

End-to-End_Error : 종단 interal card의 데이터 경로에서 발생하는 에러

Reported_Uncorrect : 정정불가능한 에러의 수

Command_Timeout : 명령어가 수행되는데 걸리는 시간

Power-Off_Retract_Count : 하드의 헤드(데이터를 읽기 위한)가 플레터(데이터가 저장되는 곳, 동그란 원판)를 벗어난 횟수

Load_Cycle_Count : 하드의 헤드가 플레터로 진입한 횟수

Temperature_Celsius : 하드디스크 온도

Current_Pending_Sector : 준 배드섹터

Offline_Uncorrectable : 배드섹터

UDMA_CRC_Error_Count : CRC 에러 횟수

 

문제가 되는 부분만 확인하고 싶을 때는 아래와 같은 명령어를 입력한다.


root@> smartctl -q errorsonly -H -l selftest -l error /dev/sda