← 목록으로
인프라·클라우드
#NVMe#NVMe-oF#스토리지#SSD#PCIe
최종 업데이트 · 2026-10-08

NVMe(Non-Volatile Memory Express)와 NVMe-oF

1. 개요

가. 정의

NVMe(Non-Volatile Memory Express)란 PCIe(PCI Express) 버스에 직접 연결되는 비휘발성 저장장치(주로 NAND 플래시·차세대 메모리 SSD)의 병렬성·저지연 특성을 최대한 끌어내기 위해 설계된 호스트-컨트롤러 인터페이스 규격이자 명령어 집합(command set) 이다. NVMe-oF(NVMe over Fabrics)는 이 NVMe 명령·큐 모델을 네트워크 패브릭(RDMA·Fibre Channel·TCP) 위로 확장하여, 원격 스토리지를 마치 로컬 NVMe 장치처럼 낮은 지연으로 접근하게 하는 전송(transport) 규격이다.

NVMe의 본질은 "저장 매체는 바뀌었는데 접근 규약은 그대로였다"는 불일치를 해소한 데 있다. 과거의 AHCI/SATA나 SAS는 회전 디스크(HDD)를 전제로 만들어진 인터페이스로, 단일 명령 큐와 얕은 큐 깊이, 긴 명령 처리 경로를 가정했다. 그러나 플래시 SSD는 기계적 탐색 지연이 없고 내부적으로 수십 개의 채널·다이(die)를 병렬 동작시킬 수 있으므로, HDD용 규약을 그대로 쓰면 매체의 병렬성을 소프트웨어 계층이 병목으로 가로막는 결과가 된다. NVMe는 이 병목을 걷어내기 위해 다중 큐(multi-queue)·낮은 명령 오버헤드·코어별 병렬 제출을 1급 설계 목표로 삼은 규격이다.

나. 등장 배경 및 필요성

2000년대 후반 플래시 SSD가 본격 보급되면서, 디스크 자체의 접근 지연은 밀리초(ms)에서 수십 마이크로초(µs) 수준으로 두 자릿수 이상 줄었다. 그러나 이 SSD를 기존 SATA/AHCI로 붙이면 AHCI가 허용하는 큐가 1개, 큐 깊이가 32개에 불과해, 매체가 아무리 빨라도 명령을 충분히 밀어 넣지 못하는 구조적 한계에 부딪혔다. 또한 AHCI 명령 하나를 처리하는 데 다수의 레지스터 접근(MMIO)과 인터럽트 처리가 필요해, 명령당 소프트웨어 오버헤드가 매체 지연에 비해 상대적으로 커졌다. 즉 "빠른 매체에 느린 규약"이라는 구조적 부조화가 발생한 것이다.

NVMe는 이 부조화를 근본적으로 재설계했다. 호스트는 메모리 상에 제출 큐(SQ, Submission Queue)와 완료 큐(CQ, Completion Queue)를 쌍으로 두고, 명령을 큐에 기록한 뒤 단 한 번의 도어벨(doorbell) 레지스터 쓰기로 컨트롤러에 알린다. 큐는 이론상 최대 64K개(65,535개)까지 둘 수 있고 큐마다 최대 64K개의 명령을 담을 수 있어, 멀티코어 CPU의 각 코어가 락 경합 없이 자신의 큐를 통해 병렬로 명령을 제출한다. 명령 집합도 소수의 필수 명령으로 단순화해 명령당 처리 경로를 짧게 만들었다. 결과적으로 동일 SSD라도 NVMe로 붙이면 수십만~수백만 IOPS와 수십 µs대 지연을 끌어낼 수 있게 되었다.

여기에 더해, 플래시가 빨라질수록 "서버 한 대에 박힌 로컬 SSD"라는 물리적 제약이 새로운 병목이 되었다. 클라우드·가상화 환경에서는 컴퓨트와 스토리지를 분리(disaggregation)해 자원을 독립적으로 증설·공유해야 하는데, 로컬 NVMe의 낮은 지연을 네트워크 너머에서도 유지하지 못하면 분리의 이점이 상쇄된다. NVMe-oF는 바로 이 요구에서 출발해, NVMe의 큐·명령 모델을 네트워크 전송 위에 거의 그대로 캡슐화함으로써 원격 접근 시 추가 지연을 최소화(RDMA 전송 기준 한 자릿수 µs 추가를 목표)한 규격이다. 요컨대 NVMe는 "매체-규약 부조화"를, NVMe-oF는 "로컬 종속성"을 각각 해소하는 두 축이다.

다. 핵심 특징

NVMe 계열의 성격은 네 가지로 요약된다. 첫째 깊고 넓은 병렬성 — 다수의 큐와 깊은 큐 깊이로 매체의 내부 병렬성을 소프트웨어가 가리지 않는다. 둘째 낮은 프로토콜 오버헤드 — 도어벨 기반 제출과 MSI-X 인터럽트, 단순화된 명령 집합으로 명령당 CPU 비용을 최소화한다. 셋째 확장 가능한 계층 구조 — 네임스페이스(namespace)로 하나의 컨트롤러를 논리적으로 분할하고, 전송 계층을 추상화해 PCIe·패브릭을 같은 명령 모델로 다룬다. 넷째 전송 독립성(transport abstraction) — NVMe-oF에서 RDMA·FC·TCP 어느 전송을 쓰든 상위 명령 의미는 동일하다. 이 특징들은 뒤에서 다룰 "로컬이냐 분리형이냐, 어떤 전송을 고르느냐"의 판단 근거가 된다.

2. NVMe 아키텍처와 동작 원리

가. 전체 구조와 핵심 구성요소

NVMe의 전체 구조는 호스트(드라이버)·전송(PCIe)·컨트롤러·네임스페이스의 네 계층으로 나눌 수 있다. 호스트 측 NVMe 드라이버는 운영체제 블록 계층과 장치 사이에서 큐를 생성·관리하고, 컨트롤러는 큐에 쌓인 명령을 꺼내 내부 플래시 변환 계층(FTL)을 거쳐 매체에 반영한다. 네임스페이스는 하나의 물리 SSD를 논리적으로 분할한 단위로, SCSI의 LUN에 대응하며 가상머신·테넌트별로 격리된 저장 공간을 제공한다.

flowchart TB
  subgraph HOST["호스트(Host)"]
    APP["애플리케이션 / 파일시스템"]
    DRV["NVMe 드라이버<br/>(큐 생성·도어벨 관리)"]
    AQ["관리 큐(Admin SQ/CQ)"]
    IQ["I/O 큐 쌍(코어별 SQ/CQ 다수)"]
  end
  subgraph BUS["전송(PCIe)"]
    DB["도어벨 레지스터(MMIO)"]
  end
  subgraph CTRL["NVMe 컨트롤러"]
    ARB["명령 중재(Arbitration)"]
    FTL["FTL / 매핑·GC·웨어레벨링"]
    NS1["네임스페이스 NS1"]
    NS2["네임스페이스 NS2"]
  end
  APP --> DRV --> AQ
  DRV --> IQ
  IQ --> DB --> ARB
  AQ --> DB
  ARB --> FTL --> NS1
  FTL --> NS2
  ARB -. "MSI-X 인터럽트(완료 통지)" .-> DRV

주요 구성요소를 정리하면 다음과 같다.

  • 관리 큐(Admin Queue): 컨트롤러 식별, I/O 큐 생성·삭제, 네임스페이스 관리 등 제어 명령을 처리하는 단일 큐 쌍이다.
  • I/O 큐 쌍(SQ/CQ): 실제 읽기·쓰기 명령이 오가는 큐로, 코어마다 하나 이상 두어 병렬 제출을 가능하게 한다.
  • 도어벨 레지스터: 호스트가 큐에 명령을 넣은 뒤 꼬리(tail) 위치를 컨트롤러에 알리고, 완료 처리 후 머리(head) 위치를 갱신하는 MMIO 창구다.
  • 네임스페이스: 컨트롤러가 노출하는 논리 블록 집합으로, 포맷·암호화·격리의 단위가 된다.
  • FTL(Flash Translation Layer): 논리-물리 주소 매핑, 가비지 컬렉션, 웨어 레벨링을 수행하는 컨트롤러 내부 펌웨어 계층이다.

나. 명령 처리 흐름과 큐 모델

NVMe의 명령 처리는 "큐에 넣고 → 도어벨로 알리고 → 완료를 인터럽트로 받는다" 는 단순한 생산자-소비자 모델을 따른다. 아래 순서도는 하나의 읽기 명령이 제출되어 완료되기까지의 경로를 보여준다. 핵심은 명령 제출이 레지스터 쓰기 한 번으로 끝나고, 완료 통지도 큐 단위로 모아 처리(interrupt coalescing)할 수 있어 명령당 CPU 비용이 매우 낮다는 점이다.

sequenceDiagram
  participant H as 호스트 드라이버
  participant SQ as 제출 큐(SQ)
  participant DB as 도어벨
  participant C as 컨트롤러
  participant CQ as 완료 큐(CQ)
  H->>SQ: 명령 디스크립터 기록(tail++)
  H->>DB: SQ Tail 도어벨 쓰기(1회)
  DB->>C: "처리할 명령 있음" 통지
  C->>C: 명령 인출·DMA로 데이터 전송
  C->>CQ: 완료 항목 기록(상태·결과)
  C-->>H: MSI-X 인터럽트(완료)
  H->>DB: CQ Head 도어벨 쓰기(처리 완료 반영)

이 모델에서 성능을 좌우하는 요소는 큐의 개수·깊이·중재(arbitration) 정책이다. 큐가 코어 수만큼 있으면 코어 간 락 경합이 사라지고, 큐 깊이가 깊으면 매체의 내부 병렬 채널을 가득 채울 수 있다. 컨트롤러는 여러 SQ에서 명령을 꺼낼 때 라운드로빈 또는 가중 라운드로빈(WRR)·우선순위 기반 중재를 적용해, 예컨대 지연에 민감한 트랜잭션 큐를 배치(batch) 큐보다 우선 처리하도록 QoS를 줄 수 있다. 실제로 데이터베이스처럼 지연 민감 워크로드와 백업처럼 처리량 위주 워크로드가 한 장치를 공유할 때, 큐·중재 설계가 서비스 품질을 가르는 핵심 변수가 된다.

다. AHCI/SATA 대비 구조적 차이

NVMe와 AHCI의 차이는 단순한 성능 수치가 아니라 설계 철학의 차이에서 비롯된다. AHCI는 단일 큐·얕은 깊이를 전제로 HDD의 순차 처리에 맞춘 반면, NVMe는 다중 큐·깊은 깊이로 플래시의 병렬성을 전제한다. 아래 표는 핵심 차이를 요약하되, 각 항목이 "왜" 중요한지는 표 뒤 문단에서 설명한다.

구분 AHCI / SATA NVMe
큐 개수 1개 최대 약 64K개
큐 깊이 32 큐당 최대 약 64K
명령 제출 다수 레지스터 접근 도어벨 1회 쓰기
인터럽트 단일 MSI-X(큐별 다중)
전송 SATA 6Gbps 등 PCIe 레인(세대별 수 GB/s↑)
전형 지연 수십~백 µs대 수~수십 µs대

표의 수치 자체보다 중요한 것은 그 함의다. 큐가 1개뿐이면 멀티코어 서버에서 모든 코어가 하나의 큐를 두고 락 경합을 벌여, 코어를 늘려도 IOPS가 선형으로 늘지 않는다. NVMe는 코어별 큐로 이 경합을 제거해 코어 수에 비례하는 확장성을 확보한다. 또 AHCI는 명령마다 여러 번의 레지스터 접근이 필요해 명령당 수 µs의 소프트웨어 오버헤드가 붙는데, 매체 지연이 수십 µs로 짧아진 플래시에서는 이 오버헤드 비중이 무시할 수 없다. NVMe의 도어벨 1회 쓰기와 인터럽트 병합은 바로 이 비중을 끌어내린다. 예를 들어 동일 TLC 기반 SSD라도 SATA 모델은 대략 수만10만 IOPS대에 머무는 반면, PCIe 4.0 NVMe 모델은 수십만100만 IOPS 이상을 내는 사례가 일반적이며, 이 차이의 상당 부분은 매체가 아니라 인터페이스 설계에서 비롯된다.

3. NVMe over Fabrics(NVMe-oF) 아키텍처

가. 설계 목표와 전송 계층 추상화

NVMe-oF는 "로컬 NVMe의 낮은 지연을 네트워크 너머에서도 유지한다"는 목표로, NVMe의 큐·명령 캡슐(capsule)을 네트워크 전송 위에 실어 나른다. 핵심 설계는 명령 계층과 전송 계층의 분리다. 상위의 NVMe 명령 의미는 로컬이든 원격이든 동일하게 유지하고, 그 명령을 어떤 매체로 실어 나를지는 전송 바인딩(RDMA·FC·TCP)이 담당한다. 이 추상화 덕분에 애플리케이션과 드라이버 상위 계층은 전송 종류를 거의 의식하지 않는다.

flowchart LR
  subgraph INIT["이니시에이터(Initiator, 호스트)"]
    FE["NVMe 코어(큐·명령 캡슐)"]
    T1["RDMA 전송"]
    T2["TCP 전송"]
    T3["FC 전송"]
  end
  subgraph NET["네트워크 패브릭"]
    ROCE["RoCE/iWARP/InfiniBand"]
    ETH["Ethernet(TCP/IP)"]
    FCN["Fibre Channel"]
  end
  subgraph TGT["타깃(Target, 스토리지)"]
    TT["전송 종단"]
    TC["NVMe 컨트롤러"]
    NS["네임스페이스(원격 블록)"]
  end
  FE --> T1 --> ROCE --> TT
  FE --> T2 --> ETH --> TT
  FE --> T3 --> FCN --> TT
  TT --> TC --> NS

나. 전송별 특성과 선택 기준

NVMe-oF가 지원하는 전송은 성격이 뚜렷이 다르며, 선택은 지연·비용·기존 인프라에 좌우된다. 아래 표는 대표 전송을 비교하되, 실제 선택의 근거는 이어지는 문단에서 설명한다.

전송 추가 지연 요구 인프라 특징
RDMA(RoCE v2/iWARP/IB) 가장 낮음(µs 한 자릿수 목표) RDMA NIC·무손실 이더넷(PFC/ECN) 최고 성능, 구성·운영 난도 높음
Fibre Channel(FC-NVMe) 낮음 FC HBA·SAN 스위치 기존 FC-SAN 자산 재활용, 안정적
TCP(NVMe/TCP) 상대적으로 높음 표준 이더넷·NIC 범용성·저비용, 대규모 확장 용이

RDMA 기반 전송은 커널·CPU를 우회해 원격 메모리에 직접 데이터를 넣고 빼므로(zero-copy) 추가 지연이 가장 낮지만, RoCE v2를 쓰려면 무손실 이더넷(PFC·ECN·혼잡 제어) 을 구성해야 해 네트워크 운영 난도가 높다. FC-NVMe는 금융·기간계처럼 이미 FC-SAN을 운영하는 조직이 기존 HBA·스위치 자산을 재활용하면서 블록 프로토콜만 SCSI에서 NVMe로 전환할 때 유리하다. NVMe/TCP는 특별한 NIC 없이 표준 이더넷 위에서 동작해 범용성과 비용 효율이 가장 뛰어나, 하이퍼스케일·클라우드가 대규모로 스토리지를 분리 구성할 때 사실상의 기본 선택지로 자리잡아 가고 있다. 즉 "최저 지연이면 RDMA, 기존 FC 자산이면 FC-NVMe, 범용·대규모면 TCP"가 1차 판단 기준이다.

4. 비교와 적용 사례

가. iSCSI 대비 NVMe/TCP

원격 블록 스토리지의 전통적 표준이던 iSCSI는 SCSI 명령을 TCP/IP에 실어 나르는데, 바탕이 되는 SCSI 모델 자체가 단일 큐 지향이라 멀티코어 병렬성과 저지연에서 한계가 있었다. NVMe/TCP는 동일한 표준 이더넷을 쓰면서도 NVMe의 다중 큐 모델을 그대로 전송하므로, 같은 네트워크에서 더 높은 IOPS와 더 낮은 지연을 얻는 경우가 많다. 다만 NVMe/TCP도 TCP 스택을 거치는 만큼 RDMA보다는 지연이 크고, 혼잡 제어·재전송의 영향을 받으므로 네트워크 품질이 성능에 직결된다. 실무에서는 기존 iSCSI SAN을 NVMe/TCP로 점진 전환하면서, 지연이 특히 민감한 일부 워크로드만 RDMA 패브릭에 별도 배치하는 하이브리드 구성이 흔하다.

나. 산업 적용 사례

첫째, 클라우드 블록 스토리지에서 하이퍼스케일러는 컴퓨트 노드와 스토리지 노드를 분리하고 그 사이를 NVMe-oF(주로 TCP)로 연결해, VM이 로컬 디스크처럼 보이는 원격 볼륨을 낮은 지연으로 쓰게 한다. 이로써 스토리지 용량과 컴퓨트를 독립적으로 증설하고 장애 노드의 볼륨을 다른 노드로 신속히 재부착(re-attach)할 수 있다. 둘째, AI 학습 인프라에서는 수백 GB/s의 데이터셋 적재가 GPU를 굶기지 않도록, GPUDirect Storage와 결합한 NVMe-oF(RDMA)로 스토리지에서 GPU 메모리로 데이터를 직접 밀어 넣는다. 셋째, 금융 기간계에서는 기존 FC-SAN 위에 FC-NVMe를 도입해, 검증된 FC 인프라의 안정성을 유지하면서 거래 시스템의 스토리지 지연을 수십 % 수준 낮춘 사례들이 보고된다. 세 사례 모두 "매체는 같아도 인터페이스·전송 선택이 전체 성능과 운영 모델을 좌우한다"는 공통 교훈을 보여준다.

5. 심화 — NVMe 2.0와 차세대 확장

NVMe 생태계의 최근 흐름은 명세의 모듈화와 매체 특성에 맞춘 데이터 배치로 요약된다. 2021년 공개된 NVMe 2.0은 단일 거대 명세를 기반 명세(base) + 명령 집합 명세(NVM·ZNS·Key-Value) + 전송 명세(PCIe·RDMA·TCP·FC) + 관리 인터페이스(NVMe-MI) 로 분리했다. 이 모듈화는 새로운 명령 집합이나 전송을 추가할 때 전체 규격을 흔들지 않고 독립적으로 확장할 수 있게 하여, 생태계의 진화 속도를 높였다.

가장 주목받는 확장은 ZNS(Zoned Namespaces) 다. ZNS는 네임스페이스를 다수의 존(zone)으로 나누고 각 존을 순차 쓰기(sequential write)만 허용하도록 제약한다. 이렇게 하면 SSD 내부의 가비지 컬렉션과 그로 인한 쓰기 증폭(write amplification)을 크게 줄이고, 오버프로비저닝과 DRAM 요구량을 낮출 수 있다. 특히 셀당 비트 수가 많아 내구성이 약한 QLC 플래시에서 ZNS는 수명과 비용 효율을 동시에 개선하는 수단으로 평가된다. 호스트가 데이터의 수명(lifetime)에 따라 존을 배치하면, 함께 지워질 데이터가 같은 물리 영역에 모여 삭제 효율이 올라가는 원리다. 더 유연한 접근으로는 비교적 최근 표준화된 FDP(Flexible Data Placement) 가 있는데, ZNS처럼 순차 쓰기 제약을 강제하지 않으면서도 호스트가 데이터 배치에 대한 힌트를 주어 쓰기 증폭을 줄이도록 한다.

또한 CXL(Compute Express Link) 와의 관계도 심화 논점이다. NVMe가 블록 단위·큐 기반의 저장 접근을 대표한다면, CXL은 바이트 단위·캐시 일관성(cache-coherent) 메모리 접근을 지향한다. 두 기술은 경쟁이 아니라 계층을 나누어 보완하는 관계로, 뜨거운 데이터는 CXL 메모리 계층에, 지속·대용량 데이터는 NVMe 계층에 두는 메모리-스토리지 계층화가 차세대 서버 아키텍처의 방향으로 논의된다. 이 밖에 CMB(Controller Memory Buffer)·PMR(Persistent Memory Region) 같은 기능은 호스트 메모리를 거치지 않는 peer-to-peer DMA나 지속성 버퍼를 제공해, 스토리지와 가속기·네트워크 간 데이터 이동 경로를 더 짧게 만든다.

6. 고려사항 및 시사점

기술사 관점에서 NVMe·NVMe-oF 도입은 단순한 장치 교체가 아니라 아키텍처·운영·경제성의 종합 설계로 접근해야 한다.

  • 전송 선택의 트레이드오프: RDMA는 최저 지연을 주지만 무손실 이더넷 구성과 운영 전문성을 요구하고, TCP는 범용·저비용이나 상대적으로 지연이 크다. 조직의 네트워크 성숙도·워크로드 지연 민감도·기존 자산(FC-SAN 여부)을 함께 평가해, 전면 통일보다 워크로드별 전송 혼합을 설계하는 편이 현실적이다.
  • 병목 이동에 대한 전망: 매체 병목을 NVMe가 걷어내면 병목은 CPU·네트워크·소프트웨어 스택으로 옮겨간다. 따라서 폴링(polling) 기반 I/O(SPDK 등 유저스페이스 드라이버), 인터럽트 병합, DPU로의 스토리지 데이터패스 오프로딩 등 상위 계층 최적화를 병행해야 NVMe의 성능을 실제로 체감할 수 있다.
  • 보안과 멀티테넌시: 네임스페이스 격리만으로는 충분하지 않으며, 원격 접근 시 전송 암호화(FC-NVMe·NVMe/TCP의 보안 채널), 인증·접근제어, 자기암호화드라이브(SED)·TCG Opal 기반 매체 암호화를 함께 고려해야 한다. 특히 클라우드에서 하나의 물리 SSD를 여러 테넌트가 공유할 때 QoS 격리와 데이터 소거(secure erase) 보증이 규제·감사 요건과 직결된다.
  • 적용 전략과 연계 기술: 컴퓨트-스토리지 분리(disaggregation), 소프트웨어 정의 스토리지(SDS), 쿠버네티스의 CSI 드라이버를 통한 동적 볼륨 프로비저닝과 결합할 때 NVMe-oF의 가치가 극대화된다. 또한 ZNS·FDP를 활용한 QLC 기반 대용량 저가 계층, CXL 메모리 계층과의 티어링, 소거 코딩·스냅샷 같은 데이터 보호 기법과의 조합을 통해 성능·내구성·비용의 균형점을 아키텍처 수준에서 설계해야 한다.

참고자료


한 줄 요약: NVMe는 플래시의 병렬성을 다중 큐·저지연 명령 모델로 끌어낸 PCIe 저장 인터페이스이고, NVMe-oF는 이 모델을 RDMA·FC·TCP 패브릭으로 확장해 컴퓨트-스토리지 분리를 가능케 하는 원격 전송 규격이다.