zoned block device는 데이터를 효율적으로 저장하기 위해 disk를 여러 zone으로 나누어 데이터를 관리한다. 이 방식은 저장 밀도를 높이고, 성능을 최적화하는데 도움을 준다. ZBD는 주로 세 가지 관리 모드로 나뉘고, 각 모드는 disk의 write constraints를 어떻게 관리하느냐에 따라 달라진다. : host-managed, host-ware, device-managed
1. Host-Managed (호스트 관리형)
host managed ZBD는 host(OS 또는 file system)가 disk의 write constraints를 직접 관리해야 하는 모드이다. 이 모드에서는 host가 특정 zone에 data를 쓰기 위해 반드시 seq-write로 써야하고, 이런 규칙을 지키지 않으면 write error가 발생한다.
특징으로는
- sequential write constraints
host가 zone의 seq-write constraints를 지켜야 한다.
- 호환성 요구
이 모드를 지원하려면, OS, file system 또는 application이 seq-write constraints를 인지하고 이를 관리할 수 있어야 한다.
- 응용 프로그램 책임
데이터의 쓰기 순서를 host가 직접 관리해야 하므로, 데이터 쓰기 작업을 세밀하게 조정할 필요가 있다.
2. Host-aware (호스트 인식형)
host aware ZBD는 host managed와 유사하지만, host가 seq-write constraints를 관리할 필요가 없는 모드이다. host는 seq write constraints를 준수하지 않아도 되지만, 그렇다고 해서 효율이 낮아지지 않도록 호스트가 이를 인식하고 최적화할 수 있는 모드이다.
특징으로는
- 선택적 순차 쓰기
host는 seq-write constraints를 인지하지만, 이를 강제하지 않는다. 즉, 호스트가 rand-write를 수행할 수 있지만, seq-write를 준수할 경우 더 나은 성능을 얻을 수 있다.
- 선택적 순차 쓰기란
ZBD는 데이터를 zone이라는 단위로 관리하며, 각 zone은 특정 쓰기 패턴에 최적화되어 있다. 일반적으로 ZBD는 순차 쓰기를 효율적으로 지원하도록 설계되어 있지만, 항상 seq-write만을 강제하는 것은 아니다. 선택적 순차 쓰기는 데이터를 미리 정해진 순서대로 특정 영역에만 기록하는 방식이다. 하지만 반드시 완벽한 순서를 요구하는 것은 아니다. 즉, 일정 부분의 유연성을 허용하면서 순차적인 쓰기를 수행할 수 있다.
- ZBD에서 선택적 순차 쓰기를 구현하는 방법
zone 내부에서의 랜덤 쓰기: 각 zone 내부에서는 제한적인 범위 내에서 랜덤 쓰기가 허용될 수 있다. 이를 통해 데이터를 완전히 순차적인 순서대로만 써야 하는 제약에서 벗어날 수 있다.
zone 내부의 논리 블록: 물리적인 순서와는 다르게 논리적인 블록 번호를 사용해서 데이터를 관리할 수 있다. 이를 통해 데이터를 논리적인 순서대로 쓰는 것처럼 보이게 만들 수 있다.
- 다양한 종류의 zone: 각 zone은 서로 다른 특성을 가질 수 있다. 예를 들어, 한 zone은 seq-write에 최적화되어 있고, 다른 zone은 rand-write에 최적화되어 있을 수 있다. 이런 다양한 zone을 적절히 활용해서 데이터를 분산해서 저장할 수 있다.
3. Device Managed (장치 관리형)
device managed ZBD는 disk 자체가 seq-write constraints를 관리하는 모드이다. 이 경우 호스트는 disk 내부 작동 방식을 알 필요가 없고, disk가 자체적으로 seq-write constraints를 관리해서 최적의 성능을 유지한다.
특징으로는
- 투명한 관리 : host는 write할 때 seq-write constraints를 전혀 신경쓰지 않아도 된다. disk 자체가 이러한 제한을 관리한다.
- 간편한 사용 : 일반적인 block device처럼 사용할 수 있고, host는 별도의 관리 작업을 수행하지 않아도 된다.
- 자동 최적화: disk가 자체적으로 데이터를 관리하고 성능을 최적화한다.
요약하자면
- host managed: host가 seq-write constraints를 완전히 관리해야 하는 모드로 host는 반드시 순차적으로 데이터를 기록해야 한다.
- host aware: host가 seq-write constraint를 인식하고 최적화할 수 있는 모드로 host가 rand write를 할 수 있지만, seq-write를 하는 것이 더 좋다.
- device managed: disk 자체에서 seq-write constraints를 관리하는 모드로 host는 이런 제약에 신경 쓰지 않아도 된다.