Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

개요

fsr의 파일 I/O 필터 드라이버는 커널 수준에서 동작하지만 파일복제 데이터를 타깃으로 전송하고 동기화 하는 역할을 담당하는 파일복제 엔진은 응용 수준에서 구현하였습니다. 이를 Syncer 엔진이라고 라고 명명 합니다.

Syncer 엔진은 Windows 와 리눅스를 동시에 지원하는 크로스플랫폼 지원형 모듈이며 기본적으로 복제 데이터의 전송 및 파일 동기화, 정합성 검사 등의 기능들을 포함합니다포함하는 fsr 의 핵심 엔진입니다. 

Syncer

동기화와 정합성 검사

동기화와 정합성 검사는 모두 Syncer 엔진(이하 Syncer ) 에 의해 수행되며, 동기화(또는 정합성 검사) 대상을 탐색하는 단계를 거친 후 동작 단계에 이르러 모드에 따라 동기화를 할지 동기화 또는 정합성 검사를 할지 구분하여 동작합니다.

동작 모드기능 플래그설명
full-sync동기화전체 동기화. 해시 비교 없이 모든 파일의 내용을 적용한다.
partial-sync해시 비교, 동기화부분 동기화. 해시 비교 후 차이가 발생한 영역의 내용을 적용한다.
verify해시 비교단발성 정합성 검증. 복제 관계가 아니거나 일시 중지 상태일 때 사용한다.
advanced-verify해시 비교, 복제 시퀀스 번호 대기복제 중 정합성 검증. 복제 중인 노드 간 정합성 검증에 사용한다.

탐색 단계

동기화(또는 정합성 검사)를 해야할 해야 할 대상 디렉터리와 파일들을 탐색하는 단계 입니다.

Syncer 는 대상 파일 목록을 생성하고 로컬과 원격지의 파일목록과 속성을 비교합니다. 비교하는 과정은 로컬 파일목록을 기준으로 순환하며 각 파일들을 순차적으로 비교하여 비교하고 로컬에만 있는 파일(누락파일) 또는 원격지에만 있는 파일(고아파일) 등을 판정합니다.

탐색 단계가 끝나면 동작단계로 바로 이행 합니다.

동작 단계

동작 단계에서는 제일 먼저 동기화(검사)에 따른 소요 예상시간을 계산합니다. 파일 목록 비교 단계에서 생성해 둔 차이점 목록을 순환하고 각 파일의 용량을 전부 합산하여 최대치를 도출합니다추산합니다단 각 파일의 로컬/원격지 용량이 서로 다른 경우 큰 용량을 기준으로 합산합니다.

계산이 끝나면 파일 블럭들을 순차적으로 비교하면서 블럭별 데이터를 타깃 측으로 다운로드하여 적용하거나 속성의 차이점들을 일치시켜 나갑니다. 동작모드가 정합성 검사일 경우에는 이 시점에 파일 블럭들을 비교하는 절차만 수행합니다.

정합성 검사의 advanced-verify 모드는 리소스가 온라인 되어 데이터가 변경분(복제)이 있는 상태에서 정합성 검사를 할 경우에 사용할 수 있는 옵션입니다. 이 동작 모드에선 정합성 검사를 수행하는 도중 동시에 복제가 발생하는 검사 대상 파일에 대해선 복제 블럭이 완료될 때 까지 대기 한 후 검사가 진행됩니다.

복제와 동기화

동기화를 수행하는 도중에 도중에도 소스 측 데이터에 변경 분 I/O 가 발생하면 발생할 수 있으므로 동기화와 복제를 복제가 동시에 처리해야 합니다. 처리될 수 있어야 합니다. 동기화와 복제의 통신은 별도의 논리적 소켓 채널로 구분되어 있지 않으며 하나의 통신 채널을 공유하여 동작합니다. 따라서 하나의 소켓 포트만 있으면 됩니다.

동기화 진행 중 복제가 발생하면 해당 정보는 큐에 추가되고 이 데이터는 로컬/원격의 해시 또는 데이터가 수신될 때 같이 처리하여 파일 블럭에 대한 접근이 동시에 발생하지 않도록 합니다. Syncer에서 데이터 대기 중 앞서 전달된 복제 데이터보다 파일 데이터가 먼저 처리되는 경우가 발생하면 정합성이 깨질 수 있습니다. 이런 경우를 대비하여 복제 데이터가 동기화가 처리 된 후 파일에 쓸 수 있도록 지연하여 처리합니다. 동기화 블럭 보다는 복제 데이터가 항상 최신이기 때문에 복제를 나중에 처리하는게 데이터 순서에 맞습니다.