
NVMe vs SATA: 도로는 넓을수록 좋다
빠른 SSD를 샀는데 왜 느릴까요? 1차선 시골길(SATA)과 16차선 고속도로(NVMe). 인터페이스가 성능의 병목이 되는 이유.

빠른 SSD를 샀는데 왜 느릴까요? 1차선 시골길(SATA)과 16차선 고속도로(NVMe). 인터페이스가 성능의 병목이 되는 이유.
맥북 배터리는 왜 오래 갈까? 서버 비용을 줄이려면 AWS Graviton을 써야 할까? 복잡함(CISC)과 단순함(RISC)의 철학적 차이를 정리해봤습니다.

AI 시대의 금광, 엔비디아 GPU. 도대체 게임용 그래픽카드로 왜 AI를 돌리는 걸까? 단순 노동자(CUDA)와 행렬 계산 천재(Tensor)의 차이로 파헤쳐봤습니다.

LP판과 USB. 물리적으로 회전하는 판(Disc)이 왜 느릴 수밖에 없는지, 그리고 SSD가 어떻게 서버의 처리량을 100배로 만들었는지 파헤쳐봤습니다.

마더보드는 그냥 모든 부품을 꽂는 판때기인 줄 알았습니다. 하지만 '칩셋'이 무엇인지 알고 나서야 왜 비싼 메인보드가 필요한지 깨달았습니다.

제 친구가 큰맘 먹고 외장 SSD를 샀습니다. "이거 끼우면 다 빨라진대!" 그런데 파일을 옮겨보더니 실망하더군요. "생각보다 별로 안 빠른데?"
확인해보니 그 SSD는 옛날 방식인 SATA 케이블에 연결되어 있었습니다. 페라리(SSD)를 샀는데 시골길(SATA)을 달리고 있었던 거죠. 진정한 속도를 원한다면 아우토반(NVMe)을 깔아줘야 합니다.
저도 처음엔 이걸 이해 못 했습니다. "SSD면 다 빠른 거 아니야?" 아니었습니다. 저장장치 자체의 속도와 연결 통로의 속도는 완전히 별개였고, 둘 중 하나라도 느리면 전체가 느려진다는 걸 배웠습니다.
컴퓨터의 저장 장치 성능은 두 가지 요소로 결정됩니다.
이걸 수도관으로 비유하면 이해가 빨랐습니다. 아무리 수원지(SSD)에서 1초에 10리터의 물을 보낼 수 있어도, 배관(Interface)이 1초에 500ml밖에 못 보낸다면? 결국 수도꼭지에서 나오는 물은 500ml입니다. 이게 병목 현상(Bottleneck)이었습니다.
제 서버에서도 이 문제를 겪었습니다. 고속 SSD를 샀는데 데이터베이스 쿼리가 여전히 느렸습니다. 확인해보니 서버가 구형이라 SATA 방식만 지원했더군요. 장비는 좋은데 연결 방식이 발목을 잡고 있었던 겁니다.
SATA (Serial ATA)는 하드디스크(HDD) 시절에 만들어진 규격입니다. 2000년대 초반, 하드디스크는 회전하는 원판(플래터)에서 데이터를 읽었기 때문에 물리적으로 느렸습니다. 그래서 연결 통로도 그 속도에 맞춰서 설계됐죠.
SATA도 여러 버전이 있습니다.
SATA 3.0이 현재 가장 흔한 버전이고, 이게 한계선입니다. 아무리 빠른 SSD를 꽂아도 600MB/s를 넘을 수 없습니다.
제가 SATA의 한계를 체감한 건 영상 편집 작업을 할 때였습니다. 4K 영상 소스를 SSD에서 불러오는데 타임라인이 버벅였습니다. SSD 자체는 3,500MB/s까지 읽을 수 있는 제품이었지만, SATA 케이블 때문에 600MB/s로 제한됐던 겁니다.
이게 1차선 시골 도로 비유가 와닿았던 이유입니다. 페라리가 달리고 싶어도 도로가 좁아서 강제로 서행해야 하는 상황.
NVMe (Non-Volatile Memory express)는 처음부터 플래시 메모리(SSD)를 위해 설계된 규격입니다. SATA가 하드디스크 시대의 유산이라면, NVMe는 "SSD 네이티브" 프로토콜입니다.
NVMe의 핵심은 PCIe (Peripheral Component Interconnect Express) 버스를 사용한다는 겁니다. SATA는 별도의 SATA 컨트롤러를 거쳐서 CPU와 통신하지만, NVMe는 CPU와 직접 연결됩니다.
이걸 회사 조직도로 비유하면:
중간 단계가 사라지니까 레이턴시(지연 시간)가 확 줄어듭니다.
PCIe도 세대가 있고, 세대마다 속도가 두 배씩 늘어납니다.
| PCIe 세대 | 레인당 속도 | x4 레인 총속도 | 출시년도 |
|---|---|---|---|
| PCIe 3.0 | ~1GB/s | ~4,000MB/s | 2010년 |
| PCIe 4.0 | ~2GB/s | ~8,000MB/s | 2017년 |
| PCIe 5.0 | ~4GB/s | ~16,000MB/s | 2022년 |
대부분의 소비자용 NVMe SSD는 PCIe 3.0 x4 또는 PCIe 4.0 x4를 사용합니다. "x4"는 4개의 레인(차선)을 사용한다는 뜻입니다. 레인이 많을수록 동시에 전송할 수 있는 데이터가 늘어납니다.
제가 PCIe 3.0에서 PCIe 4.0으로 업그레이드했을 때 체감이 컸던 건 대용량 파일 복사 작업이었습니다. 50GB 영상 파일을 복사하는데 PCIe 3.0은 15초, PCIe 4.0은 7초 걸렸습니다. 숫자로 보면 두 배지만, 실제로는 "잠깐만"과 "바로"의 차이였습니다.
NVMe가 SATA보다 빠른 이유는 속도만이 아닙니다. Queue Depth(큐 깊이)도 압도적입니다.
이걸 기차역 매표소로 비유하면:
창구가 많으니까 많은 사람이 동시에 처리되고, 대기 시간이 줄어듭니다.
실제로 이게 중요한 건 동시 접속자가 많은 서비스를 운영할 때입니다. 서비스가 성장하면 디스크 I/O가 병목이 되는 경우가 많습니다. 트래픽이 일정 수준을 넘으면 데이터베이스 쿼리가 큐에서 대기하는 시간이 눈에 띄게 늘어나는데, NVMe로 바꾸면 이 문제가 크게 완화됩니다.
요즘 메인보드를 보면 M.2 슬롯이라는 게 있습니다. 가늘고 긴 슬롯에 SSD를 꽂는 방식인데, 이게 함정입니다.
M.2는 형태(Form Factor)일 뿐이고, 내부적으로 SATA 방식인지 NVMe 방식인지는 별개입니다.
외관상으로는 거의 똑같이 생겼습니다. 그래서 제품 스펙을 꼼꼼히 확인해야 합니다.
M.2 슬롯에도 홈(Key) 형태가 다릅니다.
제가 처음 M.2 SSD를 샀을 때 "M.2면 다 빠른 거지?"라고 생각했다가 낭패를 봤습니다. 알고 보니 B+M Key 제품이라 SATA 속도로만 동작했던 겁니다. 이후로는 반드시 "NVMe"라는 단어가 제품명에 있는지 확인하게 됐습니다.
NVMe SSD는 속도가 빠른 만큼 발열도 심합니다. 특히 PCIe 4.0 이상에서는 고부하 작업 시 온도가 70~80도까지 올라갑니다.
온도가 일정 이상 올라가면 SSD가 자동으로 속도를 줄입니다. 이걸 열 스로틀링(Thermal Throttling)이라고 합니다.
제가 이걸 경험한 건 대용량 파일을 연속으로 복사할 때였습니다. 처음엔 7,000MB/s로 쭉쭉 복사되다가, 5분쯤 지나니까 갑자기 2,000MB/s로 떨어지더군요. 온도를 확인해보니 82도. 열 때문에 속도가 느려진 겁니다.
요즘 메인보드는 M.2 슬롯에 히트싱크(Heatsink)가 기본으로 달려 있습니다. 없다면 별도로 구매해서 붙여야 합니다. 특히 노트북은 공간이 좁아서 발열 관리가 더 중요합니다.
저는 NVMe SSD에 히트싱크를 붙이고 나서 온도가 15도 정도 떨어졌습니다. 고부하 작업 시에도 60도 이하로 유지되더군요. 히트싱크 하나가 속도 차이를 만들었습니다.
데이터센터나 서버 환경에서는 M.2가 아닌 다른 형태의 NVMe를 사용합니다.
U.2는 2.5인치 폼팩터에 NVMe 속도를 제공하는 엔터프라이즈급 규격입니다. SATA SSD와 비슷하게 생겼지만, 내부적으로는 PCIe를 사용합니다.
제가 클라우드 서버 스펙을 보다가 "U.2 NVMe"라는 항목을 봤는데, 처음엔 뭔지 몰랐습니다. 알고 보니 서버에서는 안정성과 교체 편의성 때문에 U.2를 쓴다더군요.
네트워크를 통해 원격지의 NVMe SSD에 접근하는 기술도 있습니다. NVMe over Fabrics (NVMe-oF)라고 하는데, 고속 네트워크(RDMA, RoCE)를 사용해서 NVMe의 저지연 특성을 유지하면서 네트워크로 스토리지를 공유합니다.
이건 주로 대형 데이터센터에서 씁니다. 여러 서버가 하나의 거대한 NVMe 스토리지 풀을 공유하는 방식입니다.
리눅스 환경에서 확인하는 방법입니다.
lsblk -d -o NAME,SIZE,TYPE,TRAN
출력 예시:
NAME SIZE TYPE TRAN
sda 1TB disk sata
nvme0n1 512GB disk nvme
sudo nvme list
출력 예시:
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S5XXXXXXXXXX Samsung SSD 980 PRO 512GB 1 500.11 GB / 512.11 GB 512 B + 0 B 5B2QGXA7
여기서 PCIe 버전, 최대 속도, 온도 등을 확인할 수 있습니다.
fio는 리눅스에서 디스크 I/O 성능을 측정하는 도구입니다.
# 순차 읽기 속도 테스트
sudo fio --name=seq_read \
--filename=/dev/nvme0n1 \
--rw=read \
--bs=1M \
--size=1G \
--ioengine=libaio \
--direct=1 \
--numjobs=1 \
--runtime=30 \
--time_based
예상 결과:
제가 이 테스트를 처음 돌렸을 때 "이게 숫자가 아니라 체감이 되는구나"를 느꼈습니다. SATA에서 550MB/s 나오다가 NVMe로 바꾸고 6,800MB/s 나오니까, 같은 작업이 10배 빨라진 게 눈에 보이더군요.
제 경우엔 CI/CD 파이프라인에서 차이를 느꼈습니다. 도커 이미지를 빌드하고 테스트를 돌리는 시간이 SATA 환경에서는 8분이었는데, NVMe로 바꾸고 나서 3분으로 줄었습니다. 하루에 10번 배포하면 50분이 절약되는 겁니다.
결국 비용 대비 효과를 따져야 합니다. NVMe는 SATA보다 1.5~2배 비쌉니다. 속도 차이가 실제로 체감되는 작업이 아니라면 굳이 NVMe를 살 이유는 없습니다.
결국 이거였습니다.
아무리 빠른 차(SSD)를 사도, 좁은 도로(SATA)를 달리면 느립니다.제가 처음 SSD를 접했을 때 "SSD면 다 빠른 거 아니야?"라고 생각했습니다. 그런데 실제로 부딪히다 보니 인터페이스(연결 방식)가 성능의 병목이 된다는 걸 배웠습니다.
페라리를 사면 아우토반을 깔아줘야 합니다. NVMe는 그 아우토반입니다.
| 구분 | SATA SSD | NVMe SSD |
|---|---|---|
| 비유 | 1차선 국도 | 16차선 고속도로 |
| 최대 속도 | ~600 MB/s (한계) | ~8,000+ MB/s (PCIe 4.0 기준) |
| 연결 방식 | 별도 컨트롤러 경유 | CPU 직통 (PCIe) |
| Queue Depth | 최대 32개 명령 | 최대 64,000개 명령 |
| 발열 | 낮음 | 높음 (히트싱크 필수) |
| 용도 | 가성비 PC, 보조 저장소, 백업 | 고성능 게이밍, 서버, DB, AI, 영상 편집 |
M.2 슬롯에 끼운다고 다 빠른 게 아닙니다. 그게 SATA 방식인지 NVMe 방식인지 확인하는 습관, 그게 하드웨어 스펙을 보는 눈입니다.
서버 스펙을 고를 때, SSD 제품을 살 때, 이제는 "NVMe 지원하나?"를 먼저 확인하게 됐습니다. 그게 성능의 병목을 푸는 첫 걸음이었습니다.