컴퓨트와 스토리지 자원을 분리하면 CPU와 저장 용량을 각각의 수요에 맞춰 확장할 수 있다. 대신 로컬 I/O가 네트워크 I/O로 바뀌면서 새로운 비용이 생긴다. 이 글에서는 NVMe-oF/TCP를 통해 자원 활용의 이점과 데이터 이동 비용을 함께 살펴본다.

컴퓨트와 스토리지의 분리

컴퓨트와 스토리지 분리 구조

그림의 Figure 2(b)는 플래시 스토리지를 컴퓨트 노드와 분리한 구조다. 데이터 규모가 커질 때 컴퓨트 노드를 함께 늘리지 않고 저장 용량만 확장할 수 있다. 다만 분리가 항상 유리한 것은 아니다. 워크로드가 요구하는 대역폭과 지연, 네트워크 비용을 함께 검토해야 한다.

원격 스토리지 연결에는 여러 선택지가 있다. RDMA는 원격 메모리에 대한 접근을 지원하며, 적절한 하드웨어와 네트워크 구성에서 낮은 지연과 높은 대역폭을 제공할 수 있다. 대신 장비 요구사항과 운영·프로그래밍 복잡도가 도입 비용이 될 수 있다.

iSCSI는 TCP/IP를 통해 SCSI 명령을 전달하는 블록 스토리지 프로토콜이다. 성숙한 생태계를 갖추고 있지만, 실제 성능은 구현과 시스템 구성에 따라 달라진다. TCP를 사용한다는 사실만으로 특정 구현의 성능을 단정할 수는 없다.

SPDK와 NVMe-oF/TCP

SPDK 아키텍처

SPDK는 사용자 공간에서 NVMe 장치를 제어하고 폴링 기반으로 I/O를 처리하는 프레임워크다. NVMe-oF/TCP는 NVMe 명령과 데이터를 TCP 네트워크로 전달하는 전송 방식이다. SPDK는 이 전송 방식을 구현하는 선택지 중 하나다.

사용자 공간 NVMe 드라이버는 로컬 SSD의 I/O 경로에서 커널 드라이버를 우회할 수 있다. 그러나 TCP 네트워크 경로까지 모두 커널을 우회하는지는 소켓 백엔드와 구성에 따라 달라진다. 로컬 스토리지 경로의 최적화와 네트워크 경로의 최적화를 구분해야 한다.

자원 효율과 처리 비용의 교환

스토리지를 분리하면 자원 배치와 확장의 유연성이 높아진다. 반면 네트워크 전송, TCP 처리, 데이터 복사, 큐 관리가 추가 비용이 된다. 폴링에 코어를 할당하는 구조에서는 낮은 지연을 얻는 대신 CPU 자원을 지속적으로 사용할 수도 있다.

따라서 NVMe-oF/TCP를 평가할 때는 처리량뿐 아니라 CPU 사용량과 지연을 함께 봐야 한다. 데이터 이동이 많은 환경에서는 스토리지 근처에서 전처리해 전송량을 줄이는 접근도 검토할 수 있다. 핵심은 분리로 얻는 자원 활용 이점이 추가된 I/O 비용을 상쇄하는지 확인하는 것이다.

참고 자료