미러 디스크 장애 (내장 스토리지)
소스 디스크 장애
운영 서버의 미러 디스크 리소스에 장애가 발생하면 MCCS 웹 콘솔에 장애가 표시됩니다.
MCCS는 해당 디스크에 Read/Write가 불가능한 상황이므로 장애로 인식하여 대기 서버로 페일오버를 진행합니다.[그림] 미러 디스크 장애 발생 화면
- MCCS에서 디스크에 대한 장애 감지 방식은 다음과 같습니다.
- 해당 디스크가 마운트 되어 있는지 확인 합니다.
- 해당 디스크에 대해서 Read/Write를 실행합니다.
- 디스크 장애 발생 요인은 다음과 같은 경우가 있을 수 있습니다. 위의 문제가 해결 된 후에 운영 체제는 변경된 디스크를 다시 인식합니다.이후 복제 소프트웨어에서 동기화를 진행합니다.
- 디스크 컨트롤러 문제 하드웨어 자체의 문제는 해당 업체에서 해결해야 합니다.
- 물리적인 디스크 문제 하드웨어 자체의 문제는 해당 업체에서 해결해야 합니다.
- 미러 리소스에서 동기화가 진행되지 않으면 미러디스크 리소스를 삭제한 후에 다시 생성해야 합니다. 단, 삭제 시 리소스만 삭제가 아니라 생성된 미러까지 삭제하고 다시 생성해야 합니다.
타깃 디스크 장애
대기 서버의 디스크에 장애가 발생하면 MCCS 웹 콘솔의 디스크 리소스 아이콘에 "Pause"가 표시됩니다. 그러나 소스 서버에서 운영중인 서비스에는 영향을 미치지 않습니다.
[그림] 타깃 디스크 장애 발생 화면
- MCCS에서 타깃 디스크에 대한 장애 감지는 해당 디스크의 드라이브 문자가 있는지 없는지 만을 판단합니다.
- 디스크 장애 발생 요인은 다음과 같은 경우가 있을 수 있습니다.위의 문제가 해결 된 후에 운영 체제는 변경된 디스크를 다시 인식합니다.이후 복제 소프트웨어에서 동기화를 진행합니다.
- 디스크 컨트롤러 문제 하드웨어 자체 문제는 해당 업체에서 해결해야 합니다.
- 물리적인 디스크 문제 하드웨어 자체 문제는 해당 업체에서 해결해야 합니다.
- 미러 리소스에서 동기화가 진행되지 않으면 미러디스크 리소스를 삭제한 후에 다시 생성해야 합니다. 단, 삭제 시 리소스만 삭제가 아니라 생성된 미러까지 삭제하고 다시 생성해야 합니다.
미러 디스크 리소스의 Split Brain
매우 드문 경우이지만 두 서버상에서 미러 디스크 역할이 모두 소스로 인식되는 경우입니다.
이러한 상황은 타깃이 소스로 변경되는 시점에 기존 소스가 타깃으로 변경되지 못한 결과이며, 이 때는 서로 자신의 데이터를 동기화하려 하지만 데이터를 받는 상대 서버 역시 자신이 소스 서버인 상태이므로 역할 변경을 거부하게 됩니다.
미러 디스크에서 Split Brain이 발생하는 상황은 다음과 같습니다.
- 소스 서버(A) 장애로 인해 페일오버가 발생합니다.
- MCCS에서 SWITCHOVERVOLUME 명령을 실행합니다.
- 기존 소스 볼륨이 삭제되지 않고 타깃 서버(B)의 역할이 소스로 변경됩니다. (미러 디스크 역할 변경)
- 최초의 소스 서버(A)를 재부팅합니다.
- 최초의 소스 서버(A)가 부팅된 후에 타깃 서버(B)의 역할을 확인합니다.
- 타깃 서버(B)가 소스이면 최초의 소스 서버(A)는 이미 정상적으로 페일오버 되었다고 판단하고 자신을 타깃으로 변경합니다.
- 미러 네트워크 이상 또는 다른 오류로 인하여 부팅 시점에 이 역할을 확인할 수 없게 됩니다. (5, 6번 과정 확인 실패)
- 양 서버의 미러 역할이 모두 소스가 됩니다. (Split Brain 발생)
이러한 상태가 되면 MCCS 웹 콘솔상에서 미러 디스크 리소스의 아이콘 표시가 겹쳐서 나타나며(), MirrorRole 속성값이 두 서버에 대해 모두 "Source"로 표시됩니다.
이러한 경우에는 미러 디스크 역할을 수동으로 변경해야 하며, 변경한 후에는 재동기화 과정이 발생합니다.
미러 디스크 역할을 수동으로 변경하는 방법은 MCCS 웹 콘솔을 이용하면 됩니다.
MCCS 웹 콘솔을 사용해서 스플릿브레인을 해결하는 방법
리소스 속성창을 확인합니다.
[그림] 미러디스크 스플릿 브레인 확인미러 관리창을 확인합니다.
[그림] 미러디스크 스플릿 브레인 확인1) 양 노드의 MirrorRole은 Source, MirrorState은 MIRROR_PAUSED 상태가 됩니다.
2) 미러디스크의 TimeAquiredSourceRole을 확인합니다. (TimeAquiredSourceRole은 시스템의 시간이므로 최신 데이터의 유무를 결정할 수 있는 절대값이 아닙니다.)
3) 스플릿 브레인이 발생했을 때 발생하는 로그가 출력됩니다.
(윈도우즈 이벤트 오류: An invalid attempt to establish a mirror occurred. Both systems were found to be Source.
Local Volume: F Remote system: 200.200.124.49 Remote Volume: F The mirror has been paused, or left in its current non-mirroring state.
Use the DataKeeper User Inteface to resolve this Split Brain condition.)
4) 미러 관리창에서 미러 상태가 "SPLIT" 상태입니다.- 미러디스크를 선택하고 오른쪽 버튼을 클릭하여 [스플릿 브레인 해결]을 클릭합니다.
- 스플릿브레인에 대한 설명창이 출력됩니다.
[그림] 소스 노드 선택에 대한 내용 확인 - 소스노드를 선택합니다.
[그림] 소스 롤 노드 선택 - 선택한 소스노드에 대해 다시 한번 확인합니다.
[그림] 소스 노드 선택 다시 확인 - 스플릿해결 중인 화면입니다.
[그림] 스플릿 브레인 해결 화면 - 스플릿해결 완료 화면입니다.
[그림] 스플릿 브레인 해결 완료 화면 선택한 노드가 소스노드가 되고 미러디스크의 상태는 MIRRORING 상태로 바뀌게 됩니다.
[그림] 스플릿 브레인 해결노드 B 의 변경된 정보는 모두 덮어써지게 됩니다