ReFS에서 복제 차단

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016

차단 복제는 대상 파일이 원본 파일과 동일하거나 다를 수 있는 애플리케이션을 대신하여 파일 바이트 범위를 복사하도록 파일 시스템에 지시합니다. 그러나 복사 작업은 비용이 많이 드는 읽기 및 쓰기를 기본 물리적 데이터에 트리거하기 때문에 비용이 많이 듭니다.

그러나 ReFS에서 복제 차단은 파일 데이터를 읽고 쓰는 대신 저렴한 메타데이터 작업으로 복사본을 수행합니다. ReFS에서는 여러 개의 파일이 같은 논리 클러스터(볼륨에서의 물리적 위치)를 공유할 수 있으므로 복사 작업이 파일의 특정 영역을 별도의 물리적 위치로 다시 매핑하기만 하면 되어 비용이 많이 드는 물리적 작업이 빠르고 논리적인 작업으로 바뀝니다. 이렇게 하면 복사본을 더 빠르게 완료하고 기본 스토리지에 대한 I/O를 더 적게 생성할 수 있습니다. 블록 복제 작업을 사용할 때 .vhdx 검사점 병합 작업이 크게 가속화되기 때문에 이러한 개선 사항은 가상화 워크로드에도 이점을 제공합니다. 또한 여러 파일이 동일한 논리 클러스터를 공유할 수 있으므로 동일한 데이터가 물리적으로 여러 번 저장되지 않으므로 스토리지 용량이 향상됩니다.

작동 방식

ReFS에서 복제 차단은 파일 데이터 작업을 메타데이터 작업으로 변환합니다. 이 최적화를 위해 ReFS는 복사된 지역에 대한 메타데이터에 참조 횟수를 도입합니다. 이 참조 수는 동일한 물리적 영역을 참조하는 고유 파일 영역의 수를 기록합니다. 이렇게 하면 여러 파일이 동일한 물리적 데이터를 공유할 수 있습니다.

Show reference count updates when multiple files reference same region

각 논리 클러스터에 대한 참조 횟수를 유지하면 ReFS는 파일 간의 격리를 중단하지 않습니다. 공유 영역에 대한 쓰기는 쓰기 시 할당 메커니즘을 트리거합니다. 여기서 ReFS는 들어오는 쓰기를 위해 새 지역을 할당합니다. 이 메커니즘은 공유 논리 클러스터의 무결성을 유지합니다.

예제

X와 Y라는 두 개의 파일이 있다고 가정합니다. 여기서 각 파일은 세 개의 영역으로 구성되고 각 지역은 별도의 논리 클러스터에 매핑됩니다.

Two files each with three distinct regions which all map to regions that have ref count 1

이제 애플리케이션이 지역 E의 오프셋에서 복사할 지역 A와 B에 대해 파일 X에서 파일 Y로 블록 복제 작업을 수행한다고 가정합니다. 다음 파일 시스템 상태가 발생합니다.

Reference count shows 2 for blocked clone region

이 파일 시스템 상태는 복제된 블록 영역의 성공적인 중복을 보여줍니다. ReFS는 VCN을 LCN 매핑으로만 업데이트하여 이 복사 작업을 수행하므로 물리적 데이터를 읽지 않았으며 파일 Y의 물리적 데이터를 덮어쓰지도 않았습니다. 이제 파일 X와 Y는 테이블의 참조 횟수에 따라 반영된 논리 클러스터를 공유합니다. 데이터가 물리적으로 복사되지 않기 때문에 ReFS는 볼륨의 용량 소비를 줄입니다.

이제 애플리케이션이 파일 X에서 지역 A를 덮어쓰려고 시도한다고 가정합니다. ReFS는 공유 지역을 복제하고, 참조 횟수를 적절하게 업데이트하고, 새로 중복된 지역에 들어오는 쓰기를 수행합니다. 이렇게 하면 파일 간의 격리가 유지됩니다.

Isolation preserved by writing to a new region G and updating ref counts

쓰기를 수정한 후에도 지역 B는 두 파일에서 계속 공유됩니다. 지역 A가 클러스터보다 큰 경우 수정된 클러스터만 중복되고 나머지 부분은 공유된 상태로 유지됩니다.

기능 제한 사항 및 주의 사항

  • 원본 및 대상 지역은 클러스터 경계에서 시작하고 끝나야 합니다.
  • 복제된 영역의 길이는 4GB 미만이어야 합니다.
  • 동일한 물리적 영역에 매핑할 수 있는 파일 영역의 최대 수는 8175개입니다.
  • 대상 지역은 파일의 끝을 지나 확장하면 안됩니다. 애플리케이션이 복제된 데이터를 사용하여 대상을 확장하려는 경우 먼저 SetEndOfFile을 호출해야 합니다.
  • 원본 및 대상 지역이 동일한 파일에 있는 경우 겹치지 않아야 합니다. (애플리케이션은 블록 복제 작업을 더 이상 겹치지 않는 여러 블록 클론으로 분할하여 진행할 수 있습니다.)
  • 원본 및 대상 파일은 동일한 ReFS 볼륨에 있어야 합니다.
  • 원본 및 대상 파일에는 동일한 무결성 스트림 설정이 있어야 합니다.
  • 원본 파일이 스파스인 경우 대상 파일도 스파스여야 합니다.
  • 블록 복제 작업은 공유 기회 잠금을 중단합니다(수준 2 기회 잠금으로도알려짐).
  • ReFS 볼륨은 Windows Server 2016 형식이어야 하며 장애 조치(failover) 클러스터링이 사용 중인 경우 클러스터링 기능 수준이 포맷 타임에 Windows Server 2016 이상이어야 합니다.

추가 참조