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가 있는지 확인한다. 주로 사용되는 툴은 smartdsmartctl이다. 보통은 /usr/sbin 경로에 있음.

만약 설치가 되어있지 않다면 패키지 매니저를 통해 설치하면 됨. 설치가 끝나면 smartd 데몬이 자동으로 실행될 것이다. 웬만한 이들은 다 알겠지만 Redhat 계열에선 yum을 쓰고, Debian 계열에선 apt를 쓰면 된다.

머신이 오프라인 상태거나, 여의치 않은 상황으로 패키지 매니저를 쓰지 못하는 경우에는 패키지나 소스를 다운받아 직접 설치해야 한다. 위의 참고 링크를 따라하면 됨.

smartd

보통 패키지 매니저에 의해 툴이 설치되면 자동으로 smartd 데몬이 서비스에 등록되고 실행된다. 이 데몬은 디스크를 모니터링하는 데몬으로 자세한 설명은 man smartd를 통해 확인할 수 있다. 주기적으로 드라이브의 상태 로그를 남기거나, 사용자가 원하는 시간에 드라이브 테스트를 실행시키는 등의 용도로 쓰인다. 설정 파일은 보통 /etc/smartd.conf이며, 주기적으로 저장되는 드라이브 상태 로그는 /var/lib/smartmontools 경로에 놓인다. 얼마전에 교체한 따끈따끈한 삼성 SSD의 로그 예시를 아래 첨부해본다. 로그 파일은 csv 형식으로, 각 값은 세미콜론으로 분리되어 있다. 숫자의 의미는 후술함.

기본설정으로는 로그만 기록할 뿐 드라이브 검사를 돌리지는 않는 것 같다. 한두 달에 한 번 정도는 드라이브 검사를 돌려볼까도 생각해봤는데 어쨌든 검사도 드라이브에 로드를 주니까 자주 해봐야 별로 좋을 것 같지는 않아서 스케줄링을 하지는 않았음. 물론 언제든 마음이 바뀔 수 있다.

smartctl

smartd이 백그라운드에서 자기 혼자 드라이브를 감시한다면, smartctl은 유저가 직접 사용하는 툴로 언제든 드라이브 상태를 확인하고 검사할 수 있다. 사용은 smartctl [옵션] [장치] 같이 쓰이며 man smartctl 또는 smartctl -h를 통해 사용법과 옵션 등을 확인할 수 있다. 자주 쓰이는 옵션이 몇 가지 있다.

기본적으로 모든 정보를 확인 할 때는 -a(--all) 옵션을 많이 사용한다.

-a 옵션은 출력결과가 좀 길어지기 때문에 나는 보통 우선 -i 옵션을 통해 드라이브의 정보부터 확인한다.

(삼성 제품이 데이터베이스에 없다니. smartmontools 개발자들 이거 안되겠네.) 간단한 하드디스크의 상태를 확인 할 때는 -H(--health) 옵션을 사용한다.

산지 얼마 안된 삼성 SSD라 그런지 특별한 문제는 없다. 구체적인 드라이브의 속성(attributes)은 -A 옵션으로 출력한다. 실제 드라이브의 상태를 직접적으로 표현해주는 값들이다.

총 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

이러한 smartdsmartctl은 디스크를 검사하거나 상태를 확인하는 데까지만 할 수 있고 실시간 모니터링을 좀 더 편하고 직관적으로 하려면 추가 작업이 필요해 보인다. 이 부분은 다음 포스팅에서 계속.

카테고리: Linux

1개의 댓글

S.M.A.R.T. 기능을 활용한 저장장치 모니터링 (2) – H's Blog · 2019-09-09 16:31

[…] 커맨드를 입력하면 구체적인 드라이브의 속성을 출력해 준다는 것은 이미 이전 글에서 […]

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다