Dropbox, 불변형 스토리지의 단편화 문제를 해결하다!
Dropbox의 Magic Pocket은 불변형 블롭 저장소(immutable blob store)로, 삭제 시 공간이 즉시 회수되지 않아 단편화(Fragmentation) 문제가 발생함
기존 L1 컴팩션 전략은 정상 상태(Steady State)에서는 효과적이었으나, 특정 상황에서 과도한 단편화(Excessive Fragmentation)를 해결하는 데 한계가 있었음
L2는 동적 프로그래밍(Dynamic Programming) 기반으로 여러 볼륨을 묶어 압축하고, L3는 Live Coder를 활용하여 희소 볼륨을 처리하는 새로운 전략을 도입함
동적 제어 루프(Dynamic Control Loop)를 통해 컴팩션 임계값(Compaction Threshold)을 조정하고, 메타데이터 부하를 관리하여 효율성을 극대화함
불변형 스토리지의 단편화 문제와 해결책
Dropbox의 Magic Pocket은 불변형(Immutable) 특성으로 인해 파일 삭제 시 디스크 공간이 즉시 회수되지 않아 단편화(Fragmentation)가 발생한다. 이러한 문제를 해결하기 위해, Dropbox는 가비지 컬렉션(Garbage Collection)을 통해 참조되지 않는 블롭을 식별하고, 컴팩션(Compaction)을 통해 실제 공간을 회수한다. 특히, L1, L2, L3 컴팩션 전략을 도입하여 다양한 볼륨 채움 수준에 대응하고 있다.
L1, L2, L3 컴팩션 전략의 기술적 차이
기존 L1 컴팩션 전략은 대부분의 볼륨이 채워진 정상 상태(Steady State)에서 효과적이었지만, 특정 상황에서는 한계가 있었다. L2는 동적 프로그래밍(Dynamic Programming)을 사용하여 여러 볼륨을 묶어 압축하는 방식으로, L1보다 더 빠르게 공간을 회수할 수 있다. L3는 Live Coder를 활용하여 희소 볼륨을 처리하며, 각 전략은 서로 다른 볼륨 채움 수준에 최적화되어 있다.
동적 제어 루프(Dynamic Control Loop)를 통한 효율성 극대화
Dropbox는 동적 제어 루프(Dynamic Control Loop)를 도입하여 컴팩션 효율성을 더욱 향상시켰다. 이 시스템은 컴팩션 임계값(Compaction Threshold)을 동적으로 조정하여, 스토리지 오버헤드(Storage Overhead)가 증가하면 임계값을 높여 더 많은 볼륨을 압축하도록 유도한다. 또한, 메타데이터(Metadata) 부하를 관리하고, 각 전략의 트래픽 격리(Traffic Isolation)를 통해 시스템 안정성을 확보했다.
메타데이터(Metadata) 관리의 중요성
컴팩션 과정에서 메타데이터(Metadata) 관리는 매우 중요한 요소이다. L1과 L2는 동일한 볼륨 ID(Volume ID) 내에서 블롭 위치를 변경하므로 메타데이터 부하가 적지만, L3는 새로운 볼륨에 블롭을 기록하므로 더 많은 메타데이터 업데이트가 필요하다. 따라서, Dropbox는 L2의 작업 범위를 제한하고, L3를 통해 희소 볼륨을 처리함으로써 메타데이터 부하를 관리하고 있다.