Motive
최근 연구실의 RAID 서버 한 대가 사망해서 복구에 시간이 소요되었다. 원인은 OS가 설치된 하드의 사망이었고 하드를 교체하고 OS를 새로 설치한 후 하드웨어 RAID를 그대로 마운트해보니 다행히 RAID는 아무 이상이 없었고 데이터 손실도 없었다. 앞으로 이런 일이 또 발생하지 말란 법은 없으므로 서버의 하드디스크 등의 상태를 주기적으로 체크하는 것이 좋아보인다.
https://en.wikipedia.org/wiki/S.M.A.R.T.
이미 시중에 판매되고 있는 대부분의 (사실상 전부) HDD나 SSD는 S.M.A.R.T.라는 기능을 가지고 있고 이 기능을 통해 쉽게 드라이브의 상태를 모니터링할 수 있다. 이 기능을 그대로 사용만 하면 된다.
환경
– 작업 노드: 그냥 평범한 서버 컴퓨터
– OS: Ubuntu 18.04 혹은 Scientific Linux CERN 5 혹은 6
참고 링크
https://prefetch.net/articles/diskdrives.smart.html
Tool 설치
서버에 이미 binary가 있는지 확인한다. 주로 사용되는 툴은 smartd
와 smartctl
이다. 보통은 /usr/sbin
경로에 있음.
$ which smartd
/usr/sbin/smartd
$ which smartctl
/usr/sbin/smartctl
만약 설치가 되어있지 않다면 패키지 매니저를 통해 설치하면 됨. 설치가 끝나면 smartd
데몬이 자동으로 실행될 것이다. 웬만한 이들은 다 알겠지만 Redhat 계열에선 yum
을 쓰고, Debian 계열에선 apt
를 쓰면 된다.
$ sudo yum install smartmontools
$ sudo apt install smartmontools
머신이 오프라인 상태거나, 여의치 않은 상황으로 패키지 매니저를 쓰지 못하는 경우에는 패키지나 소스를 다운받아 직접 설치해야 한다. 위의 참고 링크를 따라하면 됨.
smartd
보통 패키지 매니저에 의해 툴이 설치되면 자동으로 smartd
데몬이 서비스에 등록되고 실행된다. 이 데몬은 디스크를 모니터링하는 데몬으로 자세한 설명은 man smartd
를 통해 확인할 수 있다. 주기적으로 드라이브의 상태 로그를 남기거나, 사용자가 원하는 시간에 드라이브 테스트를 실행시키는 등의 용도로 쓰인다. 설정 파일은 보통 /etc/smartd.conf
이며, 주기적으로 저장되는 드라이브 상태 로그는 /var/lib/smartmontools
경로에 놓인다. 얼마전에 교체한 따끈따끈한 삼성 SSD의 로그 예시를 아래 첨부해본다. 로그 파일은 csv 형식으로, 각 값은 세미콜론으로 분리되어 있다. 숫자의 의미는 후술함.
2019-08-13 22:19:29; 5;100;0; 9;99;1315; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;70;30; 195;200;0; 199;100;0; 235;99;1; 241;99;361824046;
2019-08-13 22:49:28; 5;100;0; 9;99;1315; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;70;30; 195;200;0; 199;100;0; 235;99;1; 241;99;361854614;
2019-08-13 23:19:29; 5;100;0; 9;99;1316; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;71;29; 195;200;0; 199;100;0; 235;99;1; 241;99;361893870;
2019-08-13 23:49:28; 5;100;0; 9;99;1316; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;72;28; 195;200;0; 199;100;0; 235;99;1; 241;99;361928142;
2019-08-14 00:19:28; 5;100;0; 9;99;1317; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;72;28; 195;200;0; 199;100;0; 235;99;1; 241;99;361968110;
2019-08-14 00:49:29; 5;100;0; 9;99;1317; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;72;28; 195;200;0; 199;100;0; 235;99;1; 241;99;362007254;
2019-08-14 01:19:28; 5;100;0; 9;99;1318; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;72;28; 195;200;0; 199;100;0; 235;99;1; 241;99;364350454;
2019-08-14 01:49:28; 5;100;0; 9;99;1318; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;72;28; 195;200;0; 199;100;0; 235;99;1; 241;99;364376318;
2019-08-14 02:19:29; 5;100;0; 9;99;1319; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;73;27; 195;200;0; 199;100;0; 235;99;1; 241;99;364408494;
2019-08-14 02:49:28; 5;100;0; 9;99;1319; 12;99;4; 177;100;0; 179;100;0; 181;100;0; 182;100;0; 183;100;0; 187;100;0; 190;72;28; 195;200;0; 199;100;0; 235;99;1; 241;99;364679478;
기본설정으로는 로그만 기록할 뿐 드라이브 검사를 돌리지는 않는 것 같다. 한두 달에 한 번 정도는 드라이브 검사를 돌려볼까도 생각해봤는데 어쨌든 검사도 드라이브에 로드를 주니까 자주 해봐야 별로 좋을 것 같지는 않아서 스케줄링을 하지는 않았음. 물론 언제든 마음이 바뀔 수 있다.
smartctl
smartd
이 백그라운드에서 자기 혼자 드라이브를 감시한다면, smartctl
은 유저가 직접 사용하는 툴로 언제든 드라이브 상태를 확인하고 검사할 수 있다. 사용은 smartctl [옵션] [장치]
같이 쓰이며 man smartctl
또는 smartctl -h
를 통해 사용법과 옵션 등을 확인할 수 있다. 자주 쓰이는 옵션이 몇 가지 있다.
기본적으로 모든 정보를 확인 할 때는 -a
(--all
) 옵션을 많이 사용한다.
$ sudo smartctl -a /dev/sda
-a
옵션은 출력결과가 좀 길어지기 때문에 나는 보통 우선 -i
옵션을 통해 드라이브의 정보부터 확인한다.
$ sudo smartctl -i /dev/sda
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-5.0.0-23-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: Samsung SSD 860 PRO 512GB
Serial Number: ???????????????
LU WWN Device Id: ? ?????? ?????????
Firmware Version: RVM01B6Q
User Capacity: 512,110,190,592 bytes [512 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: Unknown(0x09fc), ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is: SATA 3.1, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Wed Aug 14 12:01:03 2019 KST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
(삼성 제품이 데이터베이스에 없다니. smartmontools
개발자들 이거 안되겠네.) 간단한 하드디스크의 상태를 확인 할 때는 -H
(--health
) 옵션을 사용한다.
$ sudo smartctl -H /dev/sda
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-5.0.0-23-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
산지 얼마 안된 삼성 SSD라 그런지 특별한 문제는 없다. 구체적인 드라이브의 속성(attributes)은 -A
옵션으로 출력한다. 실제 드라이브의 상태를 직접적으로 표현해주는 값들이다.
$ sudo smartctl -A /dev/sda
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-5.0.0-23-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 0
9 Power_On_Hours 0x0032 099 099 000 Old_age Always - 1320
12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 4
177 Wear_Leveling_Count 0x0013 100 100 000 Pre-fail Always - 0
179 Used_Rsvd_Blk_Cnt_Tot 0x0013 100 100 010 Pre-fail Always - 0
181 Program_Fail_Cnt_Total 0x0032 100 100 010 Old_age Always - 0
182 Erase_Fail_Count_Total 0x0032 100 100 010 Old_age Always - 0
183 Runtime_Bad_Block 0x0013 100 100 010 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0032 072 062 000 Old_age Always - 28
195 Hardware_ECC_Recovered 0x001a 200 200 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 100 100 000 Old_age Always - 0
235 Unknown_Attribute 0x0012 099 099 000 Old_age Always - 1
241 Total_LBAs_Written 0x0032 099 099 000 Old_age Always - 364715870
총 14개의 값이 출력되었고, 9번 값에 의하면 드라이브는 1320시간 동안 켜져있었고 날짜로 환산하면 55일이다. 다른 여러 값들의 의미는 https://en.wikipedia.org/wiki/S.M.A.R.T. 에서 확인할 수 있다. 위키피디아 페이지에는 attribute들 중 드라이브 상태에 치명적일 수 있는 것들이 표시되어 있는데 대표적으로 5번, 10번, 184번 등이다. 이것들이 0이 아니라 1이라도 생기기 시작하면 그 HDD나 SSD는 즉시 교체하는 것이 바람직할 것이다.
One Step More
이러한 smartd
나 smartctl
은 디스크를 검사하거나 상태를 확인하는 데까지만 할 수 있고 실시간 모니터링을 좀 더 편하고 직관적으로 하려면 추가 작업이 필요해 보인다. 이 부분은 다음 포스팅에서 계속.
0개의 댓글