개요
fsr의 파일 I/O 필터 드라이버는 커널 수준에서 동작하지만 파일복제 데이터를 타깃으로 전송하고 동기화 하는 역할을 담당하는 파일복제 엔진은 응용 수준에서 구현하였습니다. 이를 Syncer 엔진이라고 명명 합니다.
Syncer 엔진은 Windows 와 리눅스를 동시에 지원하는 크로스플랫폼 지원형 모듈이며 기본적으로 복제 데이터의 전송 및 파일 동기화, 정합성 검증 검사 등의 기능들을 포함합니다.
Syncer
동기화와 정합성 검사
동기화와 정합성 검사는 모두 Syncer 엔진(이하 Syncer)에 의해 수행되며, 동기화(또는 정합성 검사) 대상을 탐색하는 단계를 거친 후 동작 단계에 이르러 모드에 따라 동기화를 할지 검사를 할지 구분하여 동작합니다.
동작 모드 | 기능 플래그 | 설명 |
---|---|---|
full-sync | 동기화 | 전체 동기화. 해시 비교 없이 모든 파일의 내용을 적용한다. |
partial-sync | 해시 비교, 동기화 | 부분 동기화. 해시 비교 후 차이가 발생한 영역의 내용을 적용한다. |
verify | 해시 비교 | 단발성 정합성 검증. 복제 관계가 아니거나 일시 중지 상태일 때 사용한다. |
advanced-verify | 해시 비교, 복제 시퀀스 번호 대기 | 복제 중 정합성 검증. 복제 중인 노드 간 정합성 검증에 사용한다. |
탐색 단계
동기화(검사)를 해야할 대상 디렉터리와 파일들을 탐색하는 단계 입니다.
Syncer 는 대상 파일 목록을 생성하고 로컬과 원격지의 파일목록과 속성을 비교합니다. 비교하는 과정은 로컬 파일목록을 기준으로 순환하며 각 파일들을 순차적으로 비교하여 로컬에만 있는 파일(누락파일) 또는 원격지에만 있는 파일(고아파일) 등을 판정합니다.
탐색 단계가 끝나면 동작단계로 바로 이행 합니다.
동작 단계
동작 단계에서는 제일 먼저 동기화(검사)에 따른 소요 예상시간을 계산합니다. 파일 목록 비교 단계에서 생성해 둔 차이점 목록을 순환하고 각 파일의 용량을 전부 합산하여 최대치를 도출합니다. 단 각 파일의 로컬/원격지 용량이 서로 다른 경우 큰 용량을 기준으로 합산합니다.
계산이 끝나면 파일 블럭들을 순차적으로 비교하면서 블럭별 데이터를 다운로드하여 적용하거나 속성의 차이점들을 일치시켜 나갑니다. 동작모드가 정합성 검사일 경우에는 파일 블럭들을 비교하는 절차만 수행합니다.
정합성 검사의 advanced-verify 모드는 리소스가 온라인 된 상태에서 정합성 검사를 할 경우에 사용할 수 있는 옵션입니다. 이 동작 모드에선 정합성 검사를 수행하는 동안 복제가 발생하는 검사 대상 파일에 대해선 복제 블럭이 완료될 때 까지 대기 한 후 검사가 진행됩니다.