StatefulSet의 Pod가 재시작할 때 PVC가 다시 붙는다면 데이터의 복제·일관성·가용성도 보장되나요?
잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?
답변과 점검 포인트 펼치기답변 접기
구두 답변
정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.
PVC가 Bound이고 StatefulSet의 Pod가 재시작 뒤 같은 볼륨을 다시 붙였다는 사실은 저장 볼륨의 연결과 재사용이 성공했다는 뜻입니다. 그것만으로 데이터가 여러 노드나 가용 영역에 복제됐거나, 애플리케이션 트랜잭션 일관성과 재해 복구가 보장됐다고 말할 수는 없습니다. PVC는 Pod가 사용할 저장소를 요청하는 추상화이고, 복제·WAL·합의·백업·fencing은 저장소와 애플리케이션 계약의 별도 문제입니다.
노드 장애 뒤 db-0을 다른 노드에서 다시 실행한다고 하겠습니다. 기존 노드가 실제로 쓰기를 멈추고 볼륨이 안전하게 detach된 뒤에 새 노드에 attach되어야 합니다. 옛 노드가 네트워크 단절 상태에서 계속 디스크에 쓰고 새 Pod도 같은 데이터를 쓰면 두 주체가 모두 자신이 주인이라고 믿는 분할 두뇌(split-brain)가 생겨 파일과 로그가 손상될 수 있습니다. ReadWriteOnce 같은 접근 모드는 스토리지 시스템의 attach·write 조건을 나타내지만, 오래된 프로세스의 쓰기를 애플리케이션 수준에서 완벽히 차단하는 fencing과 동일하지 않습니다.
연결 상태와 데이터 내구성을 나눕니다
먼저 CSI provisioner가 detach를 어떻게 처리하는지, attach 중 이전 노드가 정말 격리됐는지, 볼륨이 어느 영역에 묶였는지, 새 Pod 스케줄 조건과 맞는지 확인하겠습니다. StatefulSet의 안정적인 이름과 PVC 재사용은 Pod 교체 때 같은 논리 인스턴스를 찾는 데 도움을 주지만, 볼륨 자체가 손상되지 않았거나 최신 데이터라는 뜻은 아닙니다. 영역 장애에 대비하려면 스토리지 복제, 애플리케이션 복제, 다른 영역 백업 중 어떤 계층이 책임지는지 명시해야 합니다.
DB가 자체적으로 복제와 quorum, WAL 재생, 장애 복구를 구현한다면 Pod와 PVC는 실행·저장 기반을 제공할 뿐입니다. 반대로 단순 파일 서버는 여러 writer의 순서와 잠금, 부분 쓰기, flush semantics를 별도로 보장해야 합니다. 스냅샷도 애플리케이션이 일관된 시점에 멈췄다는 뜻은 아닙니다. 일반 볼륨 스냅샷에는 프로세스 메모리가 포함되지 않습니다. 필요한 데이터 파일과 WAL이 일관된 복구 집합으로 남았는지, 복원 뒤 로그를 재생해야 하는지, 복원 중 새 쓰기를 어떻게 막는지 검증하겠습니다.
장애 테스트를 복구 목표로 측정합니다
Pod 재시작은 비교적 약한 시험입니다. 노드 전원 차단, 네트워크 분리로 옛 노드가 살아 있는 경우, detach 지연·실패, 영역 장애, 스냅샷 복원, reclaimPolicy에 따른 PV 삭제를 각각 재현해야 합니다. 새 Pod가 올라온 뒤 읽은 마지막 레코드와 허용된 유실량을 비교하고, 서비스가 다시 쓰기를 허용하기까지 걸린 시간을 RPO·RTO 목표와 대조합니다. 데이터가 보존됐어도 볼륨 attach가 오래 걸려 RTO를 넘으면 가용성 목표는 달성하지 못한 것입니다.
WaitForFirstConsumer 같은 바인딩 정책은 볼륨을 어느 영역에 만들지와 Pod 스케줄 위치를 맞추는 데 영향을 주지만, 데이터 복제나 애플리케이션 일관성을 만들어 주지는 않습니다. reclaimPolicy가 Delete라면 PVC·PV 삭제가 스토리지 백엔드의 볼륨 삭제로 이어질 수 있으므로, 운영 데이터에는 보존·승인·백업 검증을 둡니다. 핵심은 볼륨 연결(volume attachment)과 데이터 내구성(data durability), 쓰기 소유권(write ownership)을 서로 다른 보장으로 설명하는 것입니다.
득점 포인트
이해가 드러나는 지점을 확인해 보세요.
- PVC Bound·attach 성공과 데이터 복제·일관성·재해 복구를 분리한다.
- detach·fencing·split-brain·영역 제약을 실제 장애 순서에 넣는다.
- 스냅샷·WAL·RPO·RTO를 Pod 재시작보다 강한 복구 시험과 연결한다.
감점 포인트
놓치기 쉬운 조건과 오해를 짚어 보세요.
- PVC가 다시 붙으면 다중 영역 복제와 데이터 일관성이 자동 보장된다고 말한다.
- ReadWriteOnce가 오래된 노드의 모든 중복 쓰기를 애플리케이션 수준에서 막는다고 설명한다.
- Pod 재시작만 성공하면 스토리지 장애 내구성이 검증됐다고 결론 낸다.
더 파고들 거리
하나 더 질문하며 이해의 범위를 넓혀 보세요.
- WaitForFirstConsumer가 PVC와 Pod의 영역 선택을 늦춥니다. 배치 이점과 데이터 복제는 어떻게 다른가요?
- reclaimPolicy가 Delete일 때 PVC·PV 삭제와 백엔드 볼륨 보존의 보호 절차를 정해 보세요.
- 볼륨 snapshot으로 DB를 복구하려 합니다. crash-consistent·앱 일관성과 논리 백업은 어떻게 검증하나요?
득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.
원리부터 공부하고 싶다면
답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.