#Storage
카카오의 클라우드 볼륨 서비스를 개선한 사례를 소개합니다. 스토리지 백엔드로 사용해오던 Ceph를 카카오 자체 개발 분산 스토리지 서비스인 Tenth2로 전환한 개발 과정을 공유합니다.
발표자 : max.sohn 카카오에서 클라우드 분산 스토리지를 개발하고 있는 맥스입니다.
클라우드 볼륨 서비스 가속화 사례손성국 max.sohn카카오Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao.if(kakao)2022
View Slide
클라우드 볼륨 서비스개발 배경개발 과정앞으로의 계획
StorageServer
Krane(VM)Infra as a Service
VolumeInfra as a Service
CephKrane기존 볼륨 스토리지 백엔드
- 전문 운영 인력의 부재- Ceph 이슈의 즉각적인 대응이 어려움- Ceph 장애시 영향 받는 볼륨의 파악이 어려움- 다른 솔루션은 없을까?운영상 어려움
수평확장성고가용성 대용량Tenth 분산 파일 스토리지
TenthKrane
Krane Ceph Gateway TenthDrop-in Replacement
TenthKraneNative Tenth
Tenth as a Block DeviceHostQEMUTenth Driver...VM VM VM VMVM VMTenth
후보 1: QEMU Block Driver- 배포시 QEMU 재시작 필요 (VM 재부팅)- QEMU 안전성 리스크QEMUVMBlock LayerTenth Driver
후보 2: QEMU Storage Daemon- 하나의 볼륨에 지연이 생길시 다른 볼륨도 영향 받음- 레퍼런스 부족QEMUVMTenth DriverStorage Daemon
후보 3: Virtio-FS- FUSE 프로토콜 요구- 성능이 비교적 낮음QEMUVMTenth Drivervirtiofsd
후보 4: SPDK vhostQEMUVMTenth DriverSPDK- 별도의 사용자 프로세스- 고성능- 자체 프로토콜 사용 가능
SPDK 소개- Storage Performance Development Kit- 가속화된 I/O 라이브러리- NVMe-oF- vhost server
SPDK 특징- CPU pinning & hugepages- Polling- Zero copy- Lock-free I/O path- Asynchronous
SPDK vhost 서버 구조QEMUHugepageVirtqueue & I/O BufferSPDK vhostvhost-SCSI devBlock devicesTenth Driver
Tenth Driver 구조HugepageVirtqueue & I/O BufferTenth Driver...VolumeTenthBlock Block Block...Object File ......Object FilePollerThreadAsyncThread
Tenth API 최적화Ceph GatewayTenth DriverTenthSTATCREATEWRITECWRITE
Tenth 오브젝트 파일 락 최적화Object FileTenthVolumeObject FileBlock Block Block BlockLock Lock LockBefore After
FIO BenchmarkMB/s0150300Block Size4K 16K 64KMB/s0100200Block Size4K 16K 64KSequential RW Random RWTenth DriverCeph Gateway
앞으로의 계획- Fade-out & Migration- 볼륨 Snapshot- Journaling
감사합니다