FSR
FSR(File level Sync and Replications)은 기업의 중요 데이터를 네크워크를 통해 이중화하고 실시간 백업하기 위한 파일 수준의 호스트 기반 복제 솔루션입니다.
사용자는 복제 대상을 파일, 디렉터리 수준에서 손쉽게 지정할 수 있고 1:1, 1:N, N:1 등 다양한 구성방식을 통해 유연한 복제 환경을 구축할 수 있습니다. 복제 구축과정에서는 서비스 운영 측면의 다운타임 없이 기 구축 환경에서도 실시간 마이그레이션이 가능하고 스플릿 브레인 자동감지, 삭제 데이터 백업, 압축/암호화, 스냅샷 등 이중화에 필요한 다양한 기능을 제공합니다.
주요 기능
동기화
FSR은 데이터 복제를 수행하기에 앞서 소스 노드의 전체 데이터를 타깃노드로 복사하여 소스와 타깃의 데이터를 일치시키는 과정을 진행합니다. 이 과정을 동기화라고 합니다.
최초 동기화를 수행할 때에는 전체 데이터를 대상으로 동기화 하지만 한번 동기화가 완료되고 난 이후에 다시 재동기화가 필요할 경우에는 소스 노드 데이터의 변경분에 대해서만 증분 동기화를 수행하여 효율적으로 동기화 합니다. 재동기화는 복제 도중 복제 네트워크 연결이 단절되었다가 재연결 되거나 노드 기동이 중단(reboot) 되어 재기동 되는 등 복제 네트워크가 정상화 되는 시점에 수행됩니다. 즉 초기동기화를 하고 난 이후에는 FSR 이 동기화가 필요할 때마다 자동으로 증분동기화를 수행합니다.
동기화는 동기화 명령, 동기화 스케줄 설정등 사용자 개입에 의해 수동으로 동기화를 수행하도록 할 수도 있습니다.
복제
동기화를 완료하거나 동기화가 진행 중인 상태에도 소스 노드의 데이터는 실시간 변경이 될 수 있습니다. 이러한 변경분을 소스노드에서 타깃노드로 실시간 반영하는 동작을 복제라고 합니다. 데이터를 소스에서 타깃으로 반영한다는 측면에서는 동기화와 복제가 같은 역할을 한다고 할 수 있지만 FSR은 이를 별도로 구분합니다.
복제는 복제를 처리하는 방식에 따라 동기, 비동기 방식으로 구분합니다.
- 동기 방식은 하나의 디스크의 쓰기 I/O를 소스와 타깃의 디스크에 동시에 반영한 후 완료하는 방식으로 타깃 정합성을 완전히 보장합니다. 반면 타깃노드의 복제 응답 성능이 로컬 I/O 지연성능에 영향을 주기 때문에 성능 크리티컬한 서비스를 동기방식으로 구축하는 데에는 성능적 제약이 따릅니다.
- 비동기 방식은 디스크 쓰기 I/O 가 로컬에 반영되고 복제 데이터가 전송버퍼에 복사되었을 때를 복제 완료로 간주합니다. 이 방식은 절체가 이루어 졌을 때 복제 버퍼링 과정에 있었던 일부 데이터는 유실될 수 있지만 로컬 I/O 지연에 영향이 없는 높은 성능을 보장하며 전송대역에 제약이 없는 원거리 복제를 구축하기에 적합합니다.
FSR 은 기본적으로 비동기 방식 복제를 지원합니다. 비동기 복제는 로컬 I/O 지연의 영향을 최소화하도록 내부 버퍼링을 수행하기 때문에 이때 사용하는 버퍼의 크기를 운영환경에 맞게 적절히 설정해야 합니다. 버퍼는 메모리 버퍼와 파일버퍼로 제공되고 그 크기는 구성의 버퍼구성의 내용을 토대로 결정합니다.
정합성 검증
FSR 의 정합성 검증은 소스노드와 타깃노드의 복제 파일 SET에 대해 파일단위 해쉬 요약을 수행하고 목록화하여 실시간 비교하는 기능입니다. 비교의 결과에 차이가 있다면 이를 알려주고 해당 차이점을 재동기화를 통해 해소할 수 있습니다. FSR은 정상적인 운영상황에서는 소스와 타깃의 정합성을 검증할 필요가 없습니다. 다만 복제 단위가 파일인 만큼 타깃의 파일이 보호되지 않는 상황에서 임의로 데이터가 조작되거나 삭제되는 등 의도되지 않은 운영상황을 해결해야 하거나 소스와 타깃의 차이점 비교를 해야할 필요가 있을 때 정합성 검증 기능이 유용합니다.
이와 관련한 자세한 내용은 정합성 검증의 내용을 참고하세요.
최적화
복제는 운영환경에 따라 전송 대역폭이 낮을 경우 타깃 정합성을 유지하기 어렵습니다. 복제 환경이 물리적으로 뒷받침 되지 못하는 이러한 상황에 대해서 FSR은 전송 데이터에 대한 압축을 통해 전송 부하를 최적화하는 기능을 제공하고 필요에 따라 실시간 암호화도 동시 수행할 수 있습니다.
또한 운영 상황에 따라 복제 전송 대역을 임의로 제한하여 공용 네트워크 대역을 효율적으로 사용할 수 있는 기능을 제공합니다. 이와 관련한 자세한 내용은 기타를 참고하세요
스플릿 브레인 감지
FSR은 복제 스플릿 브레인을 자동 감지 합니다. 이는 다른 상용 파일복제 솔루션에서는 제공하지 않는 기능으로 FSR 솔루션만의 큰 특징입니다. 여타 파일 복제 솔루션에선 스플릿브레인의 감지를 HA 솔루션의 운영에 맡겨서 처리합니다. 그러나 이러한 방식은 HA 운영에 의존적이며 상황에 따라 역싱크로 인한 데이터 유실이 발생할 여지가 있습니다. 이러한 문제를 근본적으로 방지하기 위해선 복제 솔루션 측면에서 파일의 상태를 추적하고 스플릿 브레인을 자동 감지하여 데이터 유실이 발생하지 않도록 해야 합니다.
이와 관련한 자세한 내용은 스플릿 브레인을 참고하세요.
통계
복제의 운영상황을 모니터링하고 성능을 실시간 확인할 수 있는 통계 정보를 제공합니다. 이와 관련한 자세한 내용은 조회 페이지를 참고하세요.
스냅샷
타깃노드에 실시간 복제를 수행함과 더불어 특정 시점의 데이터를 별도 공간으로 실시간 백업하는 스냅샷 기능을 제공합니다. 이와 관련한 자세한 내용은 5.5. Snapshot 을 참고하세요.
HA/DR 연동
FSR은 HA/DR 연동을 위한 CLI와 Rest-API 를 제공합니다. 명령어, FSR Interface Guide 의 내용을 참고하세요.
용어
노드
네트워크에 연결된 장치를 통칭하는 용어이며 그 중 네트워크 주소가 할당된 노드를 호스트라고 합니다. 통상 노드와 호스트는 구분하지 않고 사용되는 경향이 있으며 본 매뉴얼에서도 노드는 호스트와 특별히 구분하지 않고 동등한 의미로 사용합니다.
클러스터
클러스터는 특수한 목적으로 사용하기 위한 컴퓨터 노드의 집합입니다. 여기서 얘기하는 클러스터는 복제 클러스터로서 복제를 수행하기 위해 구성한 소스, 타깃 노드들을 포함하고 FSR에선 이러한 복제 클러스터를 리소스 단위로 표현합니다.
리소스
리소스는 복제 리소스를 의미하며 복제 서비스를 제공하는 하나의 단위입니다. 리소스는 노드, 연결, (복제대상) 파일셋으로 구성되며 FSR 구성파일로 표현할 수 있습니다. FSR은 구성파일을 통해 복제환경과 설정을 해석하고 이를 토대로 복제를 수행합니다.
소스(Primary)
복제 상의 원본 데이터 노드를 소스 노드 또는 소스라고 합니다. 그리고 복제 클러스터내의 역할(Role)은 Primary 입니다.
Primary, 소스, Active 노드 등의 용어는 복제 또는 HA 환경에 따라 쓰임새가 다르지만 통상 엄격히 구분해서 쓰지는 않습니다.
타깃(Secondary)
복제 상의 원본 또는 변경분 데이터를 수신하여 사본을 유지하는 노드를 타깃 노드 또는 타깃이라고 합니다. 그리고 복제 클러스터내의 역할(Role)은 Secondary 입니다.
Secondary, 타깃, Standby 노드 등의 용어는 복제 또는 HA 환경에 따라 쓰임새가 다르지만 통상 엄격히 구분해서 쓰지는 않습니다.
복제의 경우 항상 Primary가 소스이며 Secondary 가 타깃이지만, 동기화의 경우는 Secondary 도 소스가 될 수 있습니다. 이것은 복제 클러스터 상에 Secondary 노드들만 존재하더라도 최신 Secondary 를 기준으로 동기화가 되도록 허용해야 하기 때문입니다.
파일셋 (File Set)
리소스 내의 구성요소로서 복제 대상을 기술한 단위입니다. 파일셋은 복제대상 파일 또는 디렉터리로 기술하며 제외필터를 포함합니다. 제외필터는 복제 대상들 중 일부 파일 또는 디렉터리를 제외할 수 있도록 제공하는 정책으로서 와일드카드 등 정규식 기반으로 기술합니다.
정합성
복제 데이터 정합성을 뜻하며 소스와 타깃의 데이터가 일치하는 상태를 말합니다. 파일복제에서는 바이트 수준의 데이터 정합성을 보장합니다.
스플릿 브레인
복제 클러스터내에서 특정시점에 2개 이상의 노드가 Primary 역할을 가져서 잠재적으로 데이터 유실이 발생할 수 있는 상태를 스플릿 브레인이라고 합니다. 스플릿 브레인이 발생하면 사용자는 Primary 역할을 가졌던 노드들 중 희생할 노드를 결정하고 스플릿 브레인 해결을 통해 복제를 정상화할 수 있습니다.
RID
FSR은 복제 대상 파일셋의 파일 상태를 표현하는 ULID 기반의 고유번호를 유지하고 관리합니다. 이 값을 RID(Revision Identifier)라고 합니다. FSR은 RID 를 통해 동기화의 방향을 결정하고 스플릿 브레인을 식별합니다.
토폴로지
FSR은 복제 구성환경에 따라 노드들간의 연결을 다양하게 구성할 수 있습니다. 대표적으로 메쉬(mesh)형 또는 스타(star)형 토폴로지로 운영합니다.