Infra

Cloud Block Storage

꼬꼬팜 2025. 6. 3. 16:50

NVMe vs SCSI

NVMe (Non-Volatile Memory Express) 와 SCSI (Small Computer System Interface) 는 모두 스토리지 장치와 CPU 사이의 통신을 위한 프로토콜

  • SCSI는 주로 HDD와 같은 기계식 저장장치를 가정하여 설계되었고, 단일 큐 구조로 인해 병렬 I/O 처리 성능이 낮음
  • AHCI(Advanced Host Controller Interface)는 SCSI 기반 명령을 SATA 인터페이스에서 사용하도록 설계된 버전으로, PCIe 환경에서 AHCI를 사용하는 경우 병목이 발생
    • AHCI는 단일 명령 큐, 최대 32개 명령 제한, 인터럽트 기반 처리 방식 → 현대 고속 SSD의 처리량을 활용하기 어려움
  • 반면 NVMe는 플래시 메모리 기반 SSD의 낮은 latency와 높은 병렬성을 전제로 설계됨
    • PCIe 인터페이스를 직접 사용하고, 최대 64K 개의 I/O 큐, 각 큐마다 64K 개의 명령 처리 가능 → CPU 멀티코어 환경과 병렬 처리에 최적화됨

Local NVMe vs SAN NVMe

Cloud Service의 Storage는 왜 Local NVMe보다 느릴까?

클라우드 환경에서는 VM에 스토리지를 유연하게 연결하고 관리하기 위해, 로컬 디스크 대신 SAN 기반 스토리지를 네트워크를 통해 연결

 

 

Local NVMe = DAS (Direct-Attached Storage)

  • 서버 내부 PCIe 슬롯에 직접 장착된 NVMe SSD 사용
  • 일반적으로 OS 부팅 디스크, 고성능 로컬 워크로드 (예: DB, AI 연산)에 사용
  • Hypervisor 우회 없이 CPU ↔ NVMe직접 접근, latency 최소화
  • 고성능이 필요한 경우 Bare-metal 서버 구성에서 사용

 

SAN (Storage Attached Network)

 

  • 서버와 물리적으로 분리된 외부 스토리지 어플라이언스에 네트워크로 연결
  • 클라우드에서는 일반적으로 Fibre Channel 기반 SAN 또는 Ethernet 기반 스토리지 네트워크 (iSCSI, NVMe-oF) 사용
  • VM ↔ Hypervisor ↔ 네트워크 ↔ 스토리지 경로를 거침
  • 스토리지 자원을 논리적으로 분리해 멀티 테넌시 지원 가능

 

항목 Local NVMe (DAS) Cloud Block Storage (SAN 기반)
물리 연결 서버 내부 PCIe 슬롯에 NVMe 디스크 직접 연결 하이퍼바이저 ↔ 가상 NIC ↔ 스토리지 네트워크 (Ethernet or FC)
I/O 경로 CPU ↔ NVMe (직접 연결, 버스 우회 없음) CPU ↔ 하이퍼바이저 ↔ 네트워크 ↔ 외부 스토리지 백엔드
Latency 수십 마이크로초(µs) 수준 수백 마이크로초 ~ 수 밀리초(µs~ms), 네트워크 및 스토리지 상태에 따라 변화
IOPS 수백만 IOPS까지 가능 (로컬 디스크 병렬 처리) 수천 ~ 수만 IOPS (서비스 등급에 따라 제한, 일반적으로 제한된 QoS)
멀티 테넌시 없음 (단일 서버에 종속된 디스크) 있음 (스토리지 공유로 인해 I/O 경합 가능성 존재)
유연성 낮음 (디스크 이동/재사용 어려움, 서버 단위로 고정) 높음 (가상 서버에 유동적 할당, 스냅샷/백업/복제 등 부가 기능 제공)
장애 복원 디스크 자체 장애 발생 시 교체 어려움, 수동 조치 필요 고가용성 지원 가능 (스토리지 백엔드 이중화, 복제 지원)

 

NVMe-over-Fabrics

  • NVMe 명령어를 네트워크를 통해 전송하여, 원격에 있는 스토리지를 NVMe 디바이스처럼 사용할 수 있게 해주는 프로토콜
  • PCIe 기반 로컬 NVMe SSD의 고성능 구조를 네트워크 스토리지로 확장
  • 사용되는 전송 계층
    • RDMA (RoCE, iWARP)
    • TCP
    • Fibre Channel (FC-NVMe)

 

클라우드 환경에서의 활용 예시 (AWS, NCP)

  • 대부분의 퍼블릭 클라우드는 네트워크 기반 블록 스토리지(SAN)를 사용하여 VM 인스턴스와 스토리지를 유연하게 분리 및 연결
  • 고성능 워크로드 대응을 위해 일부 클라우드는 NVMe-over-Fabrics(NVMe-oF) 기술을 부분적으로 도입

예시 1: AWS

  • 고성능 블록 스토리지(io2 Block Express)는
    SRD (Scalable Reliable Datagram) 기반의 NVMe-oF over SRD 사용
  • 일반 블록 스토리지(gp3, io1)는
    iSCSI over TCP 유사 구조로 동작
  • 전송 계층으로는 TCP, RoCE, iWARP, 또는 AWS 독자 프로토콜(SRD) 사용
  • 참고: AWS SRD 소개 블로그

 

예시 2: NCP (Naver Cloud Platform)

  • 블록 스토리지는 네트워크 기반 SAN 구조로 연결됨
    iSCSI over TCP 방식으로 구현된 것으로 추정됨 (용량에 따라 최대 16,000 IOPS 제공)
  • VM 생성 시 블록 스토리지 제품 코드(SW.BSST.BLCK.STAND.C002) 를 지정하여 연결
  • IOPS 버스트를 통해 1TB 이하의 스토리지는 3,000 IOPS 제공 (버킷 크레딧)
  • 스토리지는 물리적 스토리지 서버와 분리된 별도 네트워크 경로를 통해 VM에 연결됨

 

 

⚠️ 대부분의 클라우드 벤더는 스토리지 전송 계층의 내부 구현을 공개하지 않으며, 고성능 스토리지 옵션일수록 독자적인 최적화 방식 또는 프로토콜을 사용하는 경향이 있음
따라서 정확한 I/O 경로 분석은 공식 문서 + 실측 기반 성능 분석이 병행되어야 함