[Linux] Patrol Read(PR), Consistency Check(CC) 명령어 정리
리눅스 서버의 디스크 컨트롤러 중에는 Patrol Read라는 기능을 제공하는 경우가 있다. 일반적인 경우에는 Patrol Read가 서버의 성능에 영향을 주지는 않지만 가끔 지나치게 리소스를 잡아먹는 등 자신의 존재감을 드러내는 경우가 있다. Patrol Read가 무엇인지 알아보고 Patrol Read 설정을 변경할 수 있는 명령어를 정리해보자.
Patrol Read(PR)
Patrol이라는 단어에 '순찰을 돌다'라는 의미가 있다. 따라서 Patrol Read는 마치 순찰을 돌듯이 미리 디스크에 문제가 있을 만한 부분을 미리 발견해 문제를 예방하기 위한 기능이라고 볼 수 있다.
Patrol Read는 하드 드라이브의 블럭을 미리 스캔해서 문제가 있을만한 배드블럭(Bad Block)을 예비 영역과 교체하는 작업을 수행한다. 문제가 될 만한 부분을 미리 수정해서 데이터가 유실되지 않도록 해주는 기능이다. 기본적으로 168 시간(1주일)마다 수행되며 최대 30%의 IO 리소스를 소비하도록 설정되어 있다.
Patrol Read 관련 명령어
Patrol Read와 관련된 설정은 MegaCli64 명령을 통해 조회하고 수정할 수 있다.
우선 현재 Patrol Read 정보를 조회하기 위해서는 다음 명령어를 수행하면 된다.
$ sudo MegaCli64 -AdpPR -Info -aALL
현재 설정되어 있는 Patrol Read Rate을 조회하기 위해서는 다음 명령어를 수행하면 된다.
$ sudo MegaCli64 -AdpGetProp PatrolReadRate -aALL
Patrol Read 동작이 서버의 자원을 소모하기 때문에 서버에서 돌고 있는 애플리케이션의 성능에 영향을 줄 수 있다. Partol Read가 소모할 최대 IO 리소스를 줄이기 위해서는 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -AdpSetProp PatrolReadRate 2 -aALL
Patrol Read 자체를 끄기 위해서는 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -AdpPR -Dsbl -aALL
주기적으로 실행되는게 아닌 수동으로 Patrol Read를 수행하기 위해서는 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -AdpPR -Start -aALL
실행중인 Patrol Read를 중단하기 위해서는 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -AdpPR -Stop -aALL
Consistency Check(CC)
Consistency Check는 디스크에 저장되어 있는 데이터를 일관된(Consistent) 상태로 유지시켜주는 기능이다. Consistency Check는 가상드라이브를 읽고 패리티 체크와 블럭 에러가 있는지 체크를 한다. 만약 에러나 배드 블럭이 발견되면 데이터를 올바르게 수정해서 다시 쓰는 작업을 해준다. 이런 동작을 통해 데이터를 일관된 상태로 유지시킬 수 있다.
백그라운드에서 동작하며 데이터의 일관성을 위해 작업을 하지만 가끔씩은 서버의 성능에 영향을 미치기도 한다. 기본적으로 168시간(1주일)마다 수행되고, 서버 IO 리소스의 최대 30%까지 사용할 수 있다. Consistency Check는 Concurrent 혹은 Sequential로 동작하게 된다. Concurrent는 동시에 모든 드라이브를 체크하는 반면 Sequential은 각 드라이브를 순차적으로 체크하게 된다.
Consistency Check 관련 명령어
현재 Consistency Check 동작이 수행중인지 알고 싶으면 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -ldcc -progdsply -Lall -aAll
Consistency Check를 시작하려면 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -LDCC -Start -LALL -aALL
Consistency Check를 중단하려면 다음 명령을 수행하면 된다.
$ sudo MegaCli64 -LDCC -Abort -lall -aall
Consistency Check를 Disable 시키려면 다음 명령을 수행하면된다.
$ sudo MegaCli64 -AdpCcSched -Dsbl -aAll