Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 22 Next »

개요

FSR 은 파일수준의 복제를 구현합니다. 파일을 복제하는 환경은 볼륨의 데이터가 파일 시스템에 의해 형식화 된 파일과 경로를 통해 관리 됨을 전제합니다. FSR 은 파일시스템 계층 상부에 커널 필터 모듈을 삽입하여 볼륨으로 유입되는 모든 쓰기 I/O 에 대해 조사하고 해당 I/O 가 복제할 대상인지 식별합니다. 여기서 커널 필터 드라이버 내의 복제 대상을 식별하기 위한 파일 경로 필터링 로직을 경로필터(path filter)라고 합니다. 경로필터는 FSR로 유입된 쓰기 I/O 의 목적지 경로가 복제 대상인지를 판단하여 I/O 를 버퍼링을 하거나 아니면 하부 계층으로 bypass 합니다. 쓰기 I/O 를 버퍼링 한다면 드라이버는 I/O 데이터를 공유된 메모리 영역 또는 파일을 통해 FSR Syncer 엔진 측으로 전달합니다. 이후 데이터를 타깃으로 송신하여 전달하는 것은 Syncer 엔진이 담당합니다.

이 과정에서 주요한 요소로 동작하는 경로필터, 공유버퍼 등에 대해 설명합니다.

경로 필터

경로필터는 리소스에 지정된 복제대상 경로들을 목록화하고 검색할 수 있도록 하는 구성요소 입니다. 경로필터는 로컬의 실시간 I/O 문맥에서 수행되기 때문에 경로필터 내의 검색시간이 로컬 I/O 지연시간에 크게 영향을 줍니다. 경로필터의 내부 구조는 이진트리를 기본으로 하여 최적화되어 있지만 기본적으로 목록화 해야할 대상 경로가 많아질 수록 검색비용이 증가하는 것은 불가피 합니다. 또한 복제해야 할 리소스 개수가 많아질 수록 리소스 별 경로필터 검색을 모두 수행해야 하기 때문에 지연시간에 영향을 주는 요소가 됩니다. 따라서 로컬의 성능을 위해서는 복제 대상 구성 단계에서 경로필터의 대상 요소들을 최소화하여 구성하는게 바람직합니다. 너무 복잡한 복제 경로 설정은 성능에 불리하게 작용합니다.

파일 스트림 문맥

표준 파일 입출력에는 파일 열기,읽기, 쓰기, 삭제, 조회, 설정, 닫기 등의 연산 동작이 있습니다. 각각의 연산이 수행될 때 마다 FSR 은 I/O 를 조사하고 각각의 연산에 맞는 동작을 취해야 하는데 만약 그 때 마다 I/O 의 유형과 관련 정보를 로컬 I/O 문맥에서 계속 조회해야 한다면 상당한 부하와 병목이 발생할 수 있습니다. FSR 은 이를 위해 파일 스트림 당 문맥 정보를 할당하여 파일의 경로와 기타 관련 정보들을 캐쉬로 보관하고 필요할 때마다 이를 참조하여 동작합니다. 

공유 버퍼

메모리 버퍼

파일 I/O 데이터는 버퍼링을 위해 먼저 메모리 버퍼로 복사 됩니다. 메모리 버퍼는 사용자에 의해 크기가 지정될 수 있으며 보통 수백 MB에서 수 GB 수준으로 설정됩니다. 보통의 운영상황에서는 메모리 버퍼의 복제 데이터는 큐잉 되는 즉시 타깃으로 바로 전송되기 때문에 버퍼 사용량이 일정 수준으로 유지됩니다.

파일 버퍼





  • No labels