주요 기능
동기화
FSR은 데이터 복제를 수행하기에 앞서 소스 노드의 전체 데이터를 타깃노드로 복사하여 소스와 타깃의 데이터를 일치시키는 과정을 진행합니다. 이 과정을 동기화라고 합니다.
최초 동기화를 수행할 때에는 전체 데이터를 대상으로 동기화 하지만 한번 동기화가 완료되고 난 이후에 다시 재동기화가 필요할 경우에는 소스 노드 데이터의 변경분에 대해서만 부분 동기화를 수행하여 효율적으로 동기화 합니다. 재동기화는 복제 도중 복제 네트워크 연결이 단절되었다가 재연결 되거나 노드가 중단(reboot) 되었다가 재가동 된 후 연결되는 등 복제 네트워크가 정상화 되는 시점에 수행됩니다. 즉 초기동기화를 하고 난 이후에는 FSR 이 동기화가 필요할 때마다 자동으로 부분동기화를 수행합니다.
동기화는 동기화 명령, 동기화 주기 설정 등 사용자에 의해 수동으로 동기화 할 수도 있습니다.
복제
데이터의 변경 분을 실시간 타깃으로 반영하는 동작을 복제라고 합니다. 데이터의 변경은 동기화가 진행 중인 상태에서도 수행됩니다. 즉 동기화와 복제는 개별적으로 처리됩니다. 데이터를 소스에서 타깃으로 반영한다는 측면에서는 동기화와 복제가 같은 역할을 한다고 할 수 있지만 FSR은 이를 별도로 구분합니다.
복제는 복제를 처리하는 방식에 따라 동기, 비동기 방식으로 구분합니다.
- 동기 방식은 하나의 디스크의 쓰기 I/O를 소스와 타깃의 디스크에 동시에 반영한 후 완료하는 방식으로 타깃 정합성을 완전히 보장합니다. 반면 타깃노드의 복제 응답 성능이 로컬 I/O 지연성능에 영향을 주기 때문에 성능 크리티컬한 서비스를 동기방식으로 구축하는 데에는 성능적 제약이 따릅니다.
- 비동기 방식은 디스크 쓰기 I/O 가 로컬에 반영되고 복제 데이터가 전송버퍼에 복사되었을 때를 복제 완료로 간주합니다. 이 방식은 소스 측의 갑작스런 노드 장애가 있을 경우 복제 버퍼링 과정에 있었던 일부 데이터가 유실 될 수 있으므로 타깃 정합성이 완전히 보장 되지는 않지만 로컬 I/O 지연에 영향이 없는 높은 성능을 보장합니다.
FSR 은 기본적으로 비동기 방식 복제를 지원합니다. 비동기 복제는 로컬 I/O 지연의 영향을 최소화 하기위해 내부 버퍼링을 수행하며 이때 사용하는 버퍼의 크기를 운영환경에 맞게 적절히 설정해야 합니다. 버퍼는 메모리 버퍼와 파일버퍼로 제공하고 그 크기는 시스템의 가용 메모리, 디스크 한도 내에서 설정합니다.
정합성 검증
정합성 검증은 소스노드와 타깃노드의 복제 파일 SET에 대해 파일단위 해쉬 요약을 수행하고 목록화하여 실시간 비교하는 기능입니다. 비교의 결과에 차이가 있다면 이를 알려주고 해당 차이점을 재동기화를 통해 해소할 수 있습니다. FSR은 정상적인 운영상황에서는 소스와 타깃의 정합성을 검증할 필요가 없습니다. 다만 소스와 타깃의 차이점 을 비교하고 싶을 때, 타깃의 파일잠금이 해제되어 임의로 데이터가 조작되는 등 의도되지 않은 운영상황의 결과를 추적하고자 할 때 유용합니다.
스플릿브레인 감지
복제 운영 중 의도치 않은 비정상적 상황에 놓일 경우 소스 측의 데이터를 보호하기 위한 조치가 필요합니다. 그 중 연결 단절 후 특정 시점에 2 Primary 가 되어(스플릿 브레인, spli-brain) 잠재적으로 데이터 유실의 위험이 생기면 이를 자동 감지하여 복제를 차단하도록 조치해야 하는데, 이러한 기능을 스플릿 브레인 감지라고 합니다. 이와 관련한 자세한 사항은 문제 해결 의 스플릿 브레인을 참고하세요.
스냅샷
복제 운영 중 장애로 인해 페일오버에 실패하거나 말웨어 감염 등 보안 이슈로 인해 복제 타깃으로 복구할 수 없는 경우가 발생할 수 있습니다. 일반적으로는 이런 경우에 데이터 백업을 통해 복구할 수 있도록 대비해야 합니다. FSR은 스냅샷 기능을 통해 특정 시점으로의 복구를 지원하며 스냅샷을 생성하고 관리하며 스냅샷 스토리지의 공간을 조정하는 등 스냅샷 시점복구와 관련한 일체의 인터페이스를 제공합니다. 이와 관련한 자세한 사항은 스냅샷 부분을 참고하세요.
용어
노드
네트워크에 연결된 장치를 통칭하는 용어이며 그 중 네트워크 주소가 할당된 노드를 호스트라고 합니다. 통상 노드와 호스트는 구분하지 않고 사용되는 경향이 있으며 본 매뉴얼에서도 노드는 호스트와 특별히 구분하지 않고 동등한 의미로 사용합니다.
클러스터
클러스터는 특수한 목적으로 사용하기 위한 컴퓨터 노드의 집합입니다. 여기서 얘기하는 클러스터는 복제 클러스터로서 복제를 수행하기 위해 구성한 소스, 타깃 노드들을 포함하고 FSR에선 이러한 복제 클러스터를 리소스 단위로 표현합니다.
리소스
리소스는 복제 리소스를 의미하며 복제 서비스를 제공하는 하나의 단위입니다. 리소스는 노드, 연결, (복제대상) 파일셋으로 구성되며 FSR 구성파일로 표현할 수 있습니다. FSR은 구성파일을 통해 복제환경과 설정을 해석하고 이를 토대로 복제를 수행합니다.
Primary
복제 상의 원본 데이터 노드를 소스 노드 또는 소스라고 하며 복제 클러스터내에서 Primary 역할(Role)을 가집니다.
Secondary
복제 상의 원본 데이터 또는 실시간 변경분 데이터를 수신하여 사본을 유지하는 노드를 타깃 노드 또는 타깃이라고 합니다. 그리고 복제 클러스터내의 역할(Role)은 Secondary 입니다.
비슷한 용어
- Primary/Secondary, 소스/타깃, Active/Standby 는 복제, HA 환경에 따라 의미가 다르지만 엄격하게 구분해서 쓰지는 않습니다.
- 여기서는 일반적으로 소스/타깃을 사용하고 부여된 역할 측면으로는 Primary/Secondary 로 사용합니다.
- Primary 는 복제, 동기화에서 항상 소스이지만, Primary 가 없는 클러스터 에서는 Secondary 가 동기화 소스가 될 수 있습니다.
복제 대상
리소스 내의 구성요소로서 복제의 단위입니다. 복제 대상은 파일 또는 디렉터리로 기술하며 제외필터를 포함합니다. 제외필터는 복제 대상들 중 일부 파일 또는 디렉터리를 제외할 수 있도록 제공하는 정책으로서 와일드카드 등 정규식 기반으로 기술합니다.
정합성
복제 데이터 정합성을 뜻하며 소스와 타깃의 데이터가 일치하는 상태를 말합니다. 파일복제에서는 바이트 수준의 데이터 정합성을 보장합니다.
스플릿 브레인
복제 클러스터내에서 특정시점에 2개 이상의 노드가 Primary 역할을 가져서 잠재적으로 데이터 유실이 발생할 수 있는 상태를 스플릿 브레인이라고 합니다. 스플릿 브레인이 발생하면 사용자는 Primary 역할을 가졌던 노드들 중 희생할 노드를 결정하고 스플릿 브레인 해결을 통해 복제를 정상화할 수 있습니다.
RID
FSR은 복제 대상 파일셋의 파일 상태를 표현하는 ULID 기반의 고유번호를 유지하고 관리합니다. 이 값을 RID(Revision Identifier)라고 합니다. FSR은 RID 를 통해 동기화의 방향을 결정하고 스플릿 브레인을 식별합니다.
토폴로지
FSR은 복제 구성환경에 따라 노드들간의 연결을 다양하게 구성할 수 있습니다. 대표적으로 메쉬(mesh)형 또는 스타(star)형 토폴로지로 운영합니다.