개요

디스크의 주요 로그 정보인 S.M.A.R.T. 데이터를 통해 확인 할 수 있는 정보가 어떤 것들이 있는지 찾아보려 한다.
사내 SMART 데이터 수집은 현재 진행중이므로, EDA 과정을 통한 가설 수립 및 실험 설계를 위해
Backblaze에서 제공하는 샘플 데이터를 통해 진행하였다.
(https://www.backblaze.com/b2/hard-drive-test-data.html)

데이터 설명

용어 설명

disk failure의 기준이 무엇인가? (Backblaze 기준)

(https://www.backblaze.com/blog/hard-drive-smart-stats/)

  • 디스크에 전원이 들어오지 않는 경우
  • 콘솔의 커멘드에 대한 응답이 없는 경우
  • RAID에서 디스크를 읽거나 쓰지 못하는 경우
  • 그리고 SMART의 특정 값들을 기준으로 문제가 일어날 것이 예상되는 경우

S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology, SMART)

아래 5개의 항목을 주된 disk failure 를 예상하는 항목으로 사용한다(Backblaze 자체 기준)

  • SMART 5 – Reallocated_Sector_Count
  • SMART 187 – Reported_Uncorrectable_Errors
  • SMART 188 – Command_Timeout
  • SMART 197 – Current_Pending_Sector_Count
  • SMART 198 – Offline_Uncorrectable

분석 목표 및 방향

  1. 탐색적 분석을 통한 SMART 특성 파악, 문제 정의 및 가설 수립
  2. backblaze.com/blog 에서 공유한 리포트의 주요 내용을 데이터에서 확인, 사내 수집 데이터에 적용 준비

문제 정의 및 가설 수립

문제 정의

디스크의 관리 효율화 및 비용 절감을 위한 방안을 찾는다.

가설 수립 및 예상 결론

  1. 특정 벤더 / 모델 / 용량에 따라 failure rate가 유난히 높은 것들이 존재한다.
    -> 해당 제품을 향후 구매시에 제외한다. 중요 서비스에서 제외시킨다.

  2. 디스크 사용 기한이 증가할 수록 failure rate가 증가한다.
    -> 특정 기간 사용이후에는 문제가 없는 디스크도 일괄 교체한다. (교체 및 모니터링 비용과 trade-off)

  3. 디스크 사용 기한 초기에 failure rate가 증가했다가 2,3년차에 줄어든후 다시 증가한다.
    -> 초기 사용시 failure 발생에 대비해 warm-up 시동을 진행한다.

  4. 동일한 벤더 / 모델인 경우에도 제조연월에 따라 failure rate가 높은 것들이 존재한다.
    -> 해당 제품을 중요 서비스에서 제외시킨다. 벤더와 계약시 협상 참고 사항으로 사용한다.

  5. failure 발생되어 교체된 디스크가 벤더 점검후 재입고/재사용 된 디스크의 failure rate가 높다.
    -> 사용했던 디스크의 재사용을 금지시킨다.

  6. SMART 정보중 특정 항목은 failure 확률을 높은 비율로 예측 가능하다.
    -> failure 예측 정보에 따라 failure 발생전에 해당 디스크를 교체한다.

1. 탐색적 분석을 통해 SMART 데이터의 특성을 살펴보자.

2015년 데이터중 최근 데이터를 통해 데이터의 특성을 살펴본다.

## [1] 57545

2015.12.31 기준 사용 디스크수는 57543개 이다.

SMART 데이터의 샘플은 아래와 같다.

  • 디스크 식별을 위한 serian_number, 특성값으로 model, capacity
  • 디스크 실패여부를 나타내는 failure(0/1)
  • 주요 SMART 항목들
## Source: local data table [57,545 x 11]
## 
##      serial_number                   model capacityGB failure
##             (fctr)                  (fctr)      (dbl)   (int)
## 1   MJ0351YNG9Z0XA Hitachi HDS5C3030ALA630       2795       0
## 2         Z305B2QN             ST4000DM000       3726       0
## 3   MJ0351YNG9Z7LA Hitachi HDS5C3030ALA630       2795       0
## 4   MJ0351YNGABYAA Hitachi HDS5C3030ALA630       2795       0
## 5  WD-WMC4N2899475            WDC WD30EFRX       2795       0
## 6   PL1321LAG34XWH Hitachi HDS5C4040ALE630       3726       0
## 7   MJ1323YNG1TJ7C Hitachi HDS5C3030ALA630       2795       0
## 8         S300Z6K9             ST4000DM000       3726       0
## 9         S300Z6K8             ST4000DM000       3726       0
## 10        Z302PGH8             ST4000DM000       3726       0
## ..             ...                     ...        ...     ...
## Variables not shown: smart5_reallocate (int), smart9_poweron (int),
##   smart187_uncorrerror (int), smart188_commandtimeout (dbl),
##   smart197_pendingcount (int), smart198_uncorrsector (int), smart9_day
##   (dbl)

모델별로 가장 많이 사용하는 디스크는 ST4000DM000으로 29,024대를 사용(50.4%)

## Source: local data table [60 x 6]
## 
##                      model capacityGB count failure_sum smart9_day_mean
##                     (fctr)      (dbl) (int)       (int)           (dbl)
## 1              ST4000DM000       3726 29024           0        368.1779
## 2     HGST HMS5C4040ALE640       3726  7085           0        518.8168
## 3  Hitachi HDS5C3030ALA630       2795  4558           0       1325.1007
## 4  Hitachi HDS722020ALA330       1863  4488           0       1778.7532
## 5     HGST HMS5C4040BLE640       3726  3091           0        607.4723
## 6  Hitachi HDS5C4040ALE630       3726  2639           0       1001.6033
## 7              ST6000DX000       5589  1882           0        282.8334
## 8             WDC WD30EFRX       2795  1046           0        591.3636
## 9  Hitachi HDS723030ALA640       2795  1000           0       1483.7881
## 10           ST500LM012 HN        466   513           0        261.0984
## ..                     ...        ...   ...         ...             ...
## Variables not shown: prop (dbl)

용량별로 가장 많이 사용하는 디스크는 3726GB 디스크로 42,345대를 사용(73.5%)

## Source: local data table [12 x 5]
## 
##    capacityGB count failure_sum smart9_day_mean         prop
##         (dbl) (int)       (int)           (dbl)        (dbl)
## 1        3726 42345           0        452.6721 0.7358844690
## 2        2795  6661           0       1230.5525 0.1157569122
## 3        1863  4634           0       1732.3607 0.0805310811
## 4        5589  2340           0        300.3918 0.0406652416
## 5         466   807           0        351.5290 0.0140242949
## 6        1397   224           0       2064.3064 0.0038927411
## 7         149   204           0       1448.4481 0.0035451749
## 8         298   107           0        905.6009 0.0018594790
## 9         233   101           0        842.2504 0.0017552091
## 10       7452    45           0        321.9565 0.0007820239
## 11       4658    45           0        305.3759 0.0007820239
## 12         75    32           0       1960.8698 0.0005561059

디스크 사용기한 현황을 살펴보자.
가장 오래 사용한 디스크가 3694일(10년이상), 평균적으로 650일(2년미만) 이다.
히스토그램을 보면 1~3년 정도 사용한 디스크가 대부분이다.

##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##    1.417  244.300  538.400  650.100  899.300 3694.000

여러 항목들 간에 상관관계를 검토해보자. 단, 전체 SMART 항목(91개) 중에서 선별된 6개의 항목 간의 상관관계를 파악한다.

몇몇 항목이 상관관계가 높은 숫자로 나타남
5-197 = 1
5-198 = 0.6
*197-198 = 0.6
참고로 데이터는 normalize 된 데이터를 사용
(row 데이터 사용시 데이터의 편차가 커서 상관값이 구해지지 않음)

2015년 전체 데이터를 대상으로 여러가지 내용을 살펴보자.

## [1] 17508669

2015년 사용한 디스크수는 총 62895개, failure 수는 1426, 연간 failure rate는 2.26%

## Source: local data table [1 x 3]
## 
##   disk_count fail_count failure_rate
##        (int)      (int)        (dbl)
## 1      62895       1426   0.02267271

연간 디스크수 일별로 확인해보면 꾸준히 증가세 4만1천대에서 5만7천대로 40% 가량 증가

disk failure는 일별로 평균 3.9건 발생하며, 발생 추이는 전반적으로 약간의 감소세를 보이고 있다.
(붉은색 점선이 일평균, 파란색 선이 추이)

2. 가설검증

1. 가설 검증 - 특정 벤더 / 모델 / 용량에 따라 failure rate가 유난히 높은 것들이 존재한다.

가설의 검증을 위해 디스크의 모델별로 실패율을 계산

그중에서 가장 많이 사용하는 모델의 실패율 현황을 살펴보았다.

실패율이 높은 모델의 경우 연간 50%가 넘는 실패율을 보인 모델도 있다. 일부 디스크의 경우 수량이 매우 적어(10개 미만) 추가적인 테스트가 필요할 것이나
특정한 모델에서 실패율이 평균(2.26) 대비 높게 나타남은 틀림이 없어 보인다.

## Source: local data table [7 x 8]
## 
##            model capacityGB disk_count fail_count    fail_sd  pod_mean
##           (fctr)      (dbl)      (int)      (int)      (dbl)     (dbl)
## 1    ST1500DL003       1397         24         13 0.07659137  734.6479
## 2 WDC WD1600BPVT        149          2          1 0.03729371  466.8089
## 3   ST320005XXXX       1863          2          1 0.12216944 1262.8252
## 4 WDC WD2500AAJS        233          3          1 0.03146584  622.4211
## 5  WDC WD800AAJB         75         16          5 0.03486626 1621.3679
## 6     ST250LT007        233          4          1 0.02771370  685.3977
## 7 WDC WD3200BEKX        298         14          3 0.02636146  331.6958
## Variables not shown: fail_rate (dbl), fail_se (dbl)

2. 가설검증 - 디스크 사용 기한이 증가할 수록 failure rate가 증가한다.

가설의 검증을 위해 디스크 사용연한과 실패율 간의 분석을 수행 하였다.

데이터에서는 failure 값이 0인 경우 정상, 1인 경우 실패를 의미한다. failure 값에 따른 사용기간을 boxplot로 그려본 결과 의미 있는 차이점은 파악 되지 않는다.

## Source: local data table [2 x 4]
## 
##   failure    count smart9_day_mean smart9_day_sd
##     (int)    (int)           (dbl)         (dbl)
## 1       0 17507243        655.1580      526.1265
## 2       1     1426        759.0579      608.5475

backblaze 리포트에서 기간에 따른 failure rate가 bath tube 형태를 나타낸다고 언급하였으므로,
해당 데이터를 구간으로 나누어 어떤 변화와 차이가 있는지 확인해 본다.

## Source: local data table [14 x 3]
## Groups: failure
## 
##    failure    smart9_day_range disk_count
##      (int)              (fctr)      (int)
## 1        1            (0,75.5]        139
## 2        1          (75.5,150]         94
## 3        1           (150,221]         81
## 4        1           (221,288]         61
## 5        1           (288,355]         70
## 6        1           (355,423]         78
## 7        1           (423,494]         80
## 8        1           (494,579]         79
## 9        1           (579,690]        115
## 10       1           (690,828]        108
## 11       1      (828,1.04e+03]        146
## 12       1 (1.04e+03,1.39e+03]         93
## 13       1 (1.39e+03,1.62e+03]         94
## 14       1 (1.62e+03,3.69e+03]        188

알려진 바와 같이 failure 발생한 디스크 기준으로 사용기간을 확인해보니, 초기 사용기간에 발생한 failure 많게, 차차 감소하다가 다시 증가하는 형태를 보였다.

초기 사용 기간의 관리정책을 수립함에 참고가 가능할 것이다.

추가적으로 모델별, 용량별로 어떤 다른 추이를 보이는지도 확인해보자.

위쪽은 단순 카운트 기준이라서 많이 사용하는 디스크의 fail count가 크게 나타나므로 전체 디스크수 기준의 failure rate를 사용기간별로 확인해보자.