Table of Contents |
---|
스플릿 브레인
개요
...
Code Block |
---|
fsradm connect --discard-my-data <res-id> <peer-node> |
--discoarddiscard-my-data 로 연결을 수립하여 SB를 해결하면 희생노드는 상대노드를 기준으로 재 동기화하여 최신 복제 데이터 셋으로 복구 합니다.
Info |
---|
1:N 복제의 경우 여러 노드 사이에서 SB 가 발생할 수 있는데 이를 다중 SB가 발생한 상태로 규정 합니다. 다중 SB가 발생한 경우에도 위 절차와 다르지 않게 모든 희생 노드에서 --discard-my-data 로 연결을 수립하여 SB를 해결합니다. |
장애 대응
FSR 은 다음의 오류 상황들을 장애로 정의하고 이에 대한 후속 대응과 정책을 제공합니다.
다음의 장애 상황에 대한 후속 대응을 설명합니다.
- 디스크 장애
- FSR 엔진의 파일 I/O 오류
디스크 장애
복제 중 파일 쓰기 I/O 는 실패할 수 있습니다. 파일 쓰기에 대한 권한이 변경되어 권한 오류가 발생하거나 파일시스템 수준에서 오류가 발생하는 등 다양한 상황이 있습니다. 이렇게 되면 소스의 파일 쓰기는 성공하지만 타깃이 실패하거나 아니면 그 반대의 상황이 되기 때문에 복제를 운영할 수 없습니다. 이런 경우에 FSR 은 복제를 우선 중단하고 사용자에게 오류 발생을 통보 합니다. 다음은 I/O 오류가 발생했을 때의 로그 입니다.
...
파일 I/O 가 실패하면 FSR 은 다음과 같이 failed 상태가 됩니다.
...
파일 I/O 오류의 문제는 관리자가 오류 상황을 파악하고 문제가 해소되도록 별도로 조치를 취해야 합니다. 이 오류가 해결되어야 복제를 다시 정상화 시킬 수 있습니다.
별도 조치로 오류가 해결되면 정합성 검사 기능을 이용해 복제를 정상화 합니다. 보통 I/O 오류가 발생하면 전체 복제 파일셋에서 일부 파일들에 대해서만 오류가 발생할 경우가 많습니다. 그래서 소스와 타깃 간의 정합성 검사를 통해 일부의 불일치 파일들을 확인하고 재동기화를 시켜서 복제가 정상화되도록 합니다. 만일 많은 양의 데이터와 파일들에서 오류가 발생했다면 전체 동기화를 다시 하는게 좋습니다.
정합성 검사에 대한 자세한 내용은 작업의 정합성 검사를 참고하세요.
디스크 오류
디스크 오류가 발생하는 상황은 다음과 같습니다.
- OS 커널의 스토리지 드라이버 계층에서 I/O 오류가 발생할 수 있습니다. 이 오류가 일시적으로 발생한 오류라면 앞 단락의 I/O 와 동일하게 취급하여 처리하면 됩니다. 오류가 영구적일 경우에는 관련 드라이버를 다시 설치하거나 스토리지 환경에서 발생하는 문제에 대해 조사해야 합니다.
- 디스크 미디어의 배드섹터 또는 물리적 파손으로 인한 I/O 오류가 발생하면 영구적인 장애로서 디스크 교체가 요구됩니다.
- 앞 단락의 I/O 오류는 소프트웨어적인 오류로서 일시적인 I/O 오류로 분류합니다.
- 볼륨이 마운트 해제(umount) 되었을 경우(시스템 종료 시 umount 제외)에도 영구적인 장애로 간주 합니다. 마운트 해제를 기본적으로 영구적 장애로 간주하는 이유는 마운트 해제 이후의 파일의 데이터가 보존되는 지 FSR 이 알수 없기 때문입니다. 만약 마운트 해제 이후의 파일 데이터가 변경되지 않는 것이 보장된다면 해당 볼륨을 다시 마운트 하여 FSR attach 를 통해 복구하면 됩니다.
영구적인 디스크 오류가 발생한 경우에 대해 FSR 복제를 정상화하기 위해서는 전체 재구성으로 대응해야 합니다. 재구성 절차는 작업의 재구성을 참고하세요대상이 위치한 볼륨이 운영 중 의도치 않게 마운트 해제 되거나 물리적 파손으로 인해 저장매체 자체에서 문제가 되는 등 복제 대상 디스크 자체에서 장애가 발생할 수 있습니다.. 이 경우 사용자는 복제 대상을 다시 복구하여 볼륨 장치가 다시 가동될 수 있도록 조치해야 합니다. 수동 복구가 완료되면 전체 동기화를 통해 복제를 재 시작 해야 합니다.
디스크 상태 모니터링
FSR은 디스크의 상태를 주기적으로 모니터링하여 디스크에 이상이 발생할 경우 이를 감지합니다. 이는 S.M.A.R.T.(Self-Monitoring, Analysis, and Reporting Technology) 기술을 기반으로 하며 모니터링의 주기는 다음과 같이 지정할 수 있습니다.
Code Block |
---|
"disk": {
"health": {
"period": 10
}
}, |
엔진 파일 I/O 오류
파일 I/O 는 파일경로 문제로 인한 오류, 계정에 따른 권한 문제 등 다양한 상황에서 오류가 발생될 수 있습니다. I/O 오류가 자주 발생되는 것은 아니지만 의도치 않은 환경의 변화가 있거나 예외 상황에 대해 유연하게 대응하도록 작성되지 못한 응용에 의해 오류가 발생되는 것은 서비스 운영 중에 발생할 수 있는 통상적인 상황 입니다. I/O 오류가 발생되면 해당 예외 상황에 대해 응용 프로그램들은 예외 처리를 수행하게 되어 있으며 이후 동작은 응용 프로그램에 따라 다르게 대응됩니다. 이렇게 소스 측 응용 프로그램에 의한 파일 I/O의 오류는 언제든지 발생될 수 있는 일반적인 파일 I/O 오류로 보며 이는 장애가 아닙니다.
그러나 fsr 엔진에서 수행하는 파일 I/O에서 오류가 발생한다면 이는 장애입니다. fsr 이 파일 I/O 를 할 수 없으면 미러링이 근본적으로 불가하므로 복제를 즉시 중단합니다.
fsr 엔진에서 발생한 I/O 오류의 오류 코드는 로그로 기록되며 해당 오류 코드를 통해 오류의 원인을 추정할 수 있습니다. 관리자는 이를 통해 장애를 수동으로 복구해야 하며 fsr의 I/O를 정상화해야 합니다. 정상화된 환경에서 최종적으로 리소스를 다시 기동시키고 전체동기화를 수행하여 복제를 재개합니다.
디스크 검사
디스크 볼륨의 물리적 오류는 미디어 자체의 손상에 기인하여 복구하기 어렵지만 파일시스템 수준의 논리적인 오류는 유틸리티(윈도우즈의 chkdsk 리눅스의 fsck)를 통해 검사하거나 복구할 수 있습니다.
통상 이러한 유틸리티를 사용할 경우에는 볼륨을 언마운트한 후 사용하는게 안전하며, 그리고 이 검사 과정에서 논리적 결함감지와 그에 따른 복구가 있었다면 타깃과의 정합성 일치를 위해 해당 볼륨을 다시 복제 리소스로 기동한 후 반드시 전체 동기화를 시켜 주어야 합니다.
파일 잠금
파일 핸들 닫기 오류
파일 잠금의 과정에서 복제 대상 파일들 중 이미 열려져 있던 파일의 핸들을 정리하는 절차가 있습니다. 이 절차를 수행하는 과정에서 다음과 같은 오류 메시지가 발생할 경우에 대한 설명 입니다.
Info |
---|
ERR handle closed error="attach: operation not permitted" exec=handle group= key=2 name=/opt/data/b/1234.txt node=b pid=76716 resource=r0 |
위 오류는 리눅스에서만 발생하며 해당 제어를 수행하는 ptrace 유틸의 권한이 없기 때문에 발생하는 문제로 이를 해결하기 위해선 시스템의 권한 설정을 조정해야 합니다. /proc/sys/kernel/yama/ptrace_scope 의 값이 3 으로 설정된 경우 이 값을 0~2 사이의 값으로 조정해야 하고 설정을 조정한 후 리부팅을 해야 합니다. 만약 시스템의 ptrace_scope 설정 값을 조정할 수 없다면 파일을 열고 있는 프로세스들을 모두 종료하도록 수동으로 조치해야 합니다.