검색
이 검색 상자를 닫습니다.

Qumulo의 지속적인 복제: 스냅샷 간의 변경 사항을 효율적으로 식별

작성자 :

헨리 프레처와 케빈 제이미슨

Qumulo의 연속 복제는 클러스터 데이터의 최신 복사본이 오프사이트 Qumulo 클러스터 또는 클라우드로 미러링되도록 합니다. 이를 통해 고객은 자연 재해나 치명적인 장애 발생 시 신속하게 복구할 수 있음을 알고 숙면을 취할 수 있습니다.

수십억 개의 파일과 페타바이트 규모의 데이터로 확장되는 파일 시스템은 일반적으로 몇 분 안에 최신 데이터 복사본을 유지하기 위해 어떻게 관리합니까?

rsync 및 robocopy와 같은 증분 백업을 위한 기존 도구는 확장되지 않습니다. 이러한 도구는 전체 디렉토리 트리를 탐색하여 속성(일반적으로 크기 및 수정 시간) 또는 모든 파일의 데이터를 비교함으로써 소스 및 대상 디렉토리 간의 변경 사항을 식별합니다.

증분 간에 소수의 파일만 변경되었을 수 있는 경우에도 수십억 개의 파일을 횡단하는 병렬화를 통해 이러한 변경 사항을 식별하는 데 몇 시간 또는 며칠이 걸릴 수 있습니다.

Qumulo에서 우리의 진언 중 하나는 "나무 산책 금지"입니다. Qumulo의 지속적인 복제는 트리 워크를 방지하기 위한 효율적인 분석 및 할당량 기능을 가능하게 하는 동일한 실시간 집계에 의해 구동됩니다. 스냅샷과 함께 이를 통해 파일 시스템의 모든 변경 사항을 최소한의 시간과 I/O로 효율적으로 식별하고 복제할 수 있습니다.

연속 복제는 계속해서 새 스냅샷을 만들고 해당 스냅샷을 마지막으로 복제된 스냅샷과 비교하고 차이점을 복제하여 작동합니다. 각 스냅샷에는 고유한 자동 증분 식별자 또는 "에포크(epoch)"가 있으며 모든 파일 및 디렉토리와 연결되어 있는 것을 "마지막 수정 에포크"라고 합니다. 이는 해당 파일 또는 디렉토리가 변경된 마지막 스냅샷을 설명하는 타임스탬프와 같은 역할을 합니다.

파일이 수정될 때마다 마지막 수정된 에포크가 업데이트됩니다. 이렇게 하면 내용을 보지 않고 파일이 변경되었는지 알 수 있지만 이것만으로는 트리 워크 없이 변경된 파일을 찾기에 충분하지 않습니다. 우리는 또한 파일의 부모 디렉터리의 마지막 수정된 에포크와 그 부모의 부모 디렉터리 등을 파일 시스템의 루트 디렉터리까지 업데이트합니다. 이렇게 하면 스냅샷 간에 파일 시스템의 모든 변경 사항을 빠르게 찾을 수 있는 흔적이 남습니다.

연속 복제가 실행되면 이 마지막 수정된 에포크를 루트 디렉터리부터 시작하여 최신 스냅샷과 비교합니다. 이 비교에서 복제가 마지막으로 실행된 이후로 디렉토리가 변경되지 않은 것으로 표시되면 해당 디렉토리와 모든 내용을 건너뛸 수 있습니다. 디렉터리가 변경된 경우 해당 디렉터리 아래의 모든 파일과 하위 디렉터리의 마지막 수정 에포크를 재귀적으로 비교하여 어떤 파일이 변경되었으며 원격 클러스터에 복사해야 하는지 알아냅니다.

다음과 같은 간단한 예를 고려하십시오.
/home (에포크=1)
|– 앨리스/ (에포크=1)
| |– diagram.svg (에포크=1)
| `– 보고서.doc(에포크=1)
`– bob/ (에포크=1)
`– 프로젝트.psd(에포크=1)

처음에는 모든 파일의 마지막 수정 에포크가 1로 설정되어 있습니다. Alice가 /home/alice에서 report.doc을 업데이트하면 report.doc과 모든 상위 디렉터리의 마지막 수정 에포크가 모두 2로 설정됩니다. 그 후 파일 시스템은 이제 다음을 찾습니다. 이와 같이:
/home (에포크=2)
|– 앨리스/ (에포크=2)
| |– diagram.svg (에포크=1)
| `– 보고서.doc(에포크=2)
`– bob/ (에포크=1)
`– 프로젝트.psd(에포크=1)

/home/alice/diagram.svg의 변경되지 않은 에포크는 해당 파일을 건너뛰고 업데이트된 report.doc만 복사하도록 연속 복제에 지시하는 반면 /home/bob의 에포크는 해당 디렉토리를 완전히 무시하고 그 내용을 검사하지 않도록 복제에 알립니다. .

부분적으로 수정된 파일은 어떻습니까? 큰 파일의 몇 바이트만 변경된 경우 해당 파일을 완전히 다시 복제하는 것은 시간과 대역폭을 낭비하는 것입니다. 실제로 변경된 파일 블록의 하위 집합만 복제하는 것이 훨씬 더 효율적입니다. Qumulo 파일 시스템은 파일 데이터를 트리와 같은 데이터 청크 구조로 저장하기 때문에 디렉토리 트리 내에서 변경된 파일을 효율적으로 식별할 수 있도록 하는 동일한 마지막 수정 에포크 개념은 각 개인 내에서 변경된 데이터 블록의 효율적인 식별로 확장됩니다. 파일.

예를 들어, Epoch 3에서 1MB 파일을 생성하고 복제한 후 사용자가 파일의 중간만 새 데이터로 덮어쓴다고 가정합니다. 그러면 파일의 데이터 트리가 다음과 같이 보일 것입니다.
파일
|– 0 – 1MB(에포크=1)
|– 1 – 2MB(에포크=2)
`– 2 – 3MB(에포크=1)

디렉토리에서 업데이트된 파일을 찾는 것과 같은 방식으로 파일에서 업데이트된 데이터 청크를 찾습니다. 트리에서 마지막으로 수정된 에포크를 검사합니다. 위의 예에서 파일의 첫 번째 및 마지막 청크를 건너뛰고 업데이트된 에포크가 있는 중간의 데이터만 복제하여 전체 파일을 복사하는 경우 수행해야 하는 작업의 XNUMX/XNUMX만 수행합니다.

이러한 방식으로 에포크는 복제된 스냅샷 간에 수정된 파일 및 파일 내의 데이터에 대한 추적 역할을 하여 Qumulo의 연속 복제 시스템이 스냅샷의 크기에 비례하는 시간에 파일 시스템의 모든 차이점을 식별할 수 있도록 합니다. 파일 시스템의 전체 크기가 아니라 차이입니다!

관련 게시물

위쪽으로 스크롤