← 아티클 목록2026년 11월 4일

Runpod 글로벌 볼륨, 갈아탈까? 만드는 법부터 콜드 스타트 실측까지 한 번에 정리

데이터센터에 묶이지 않는 Runpod 글로벌 볼륨(베타)을 직접 만들고 모델을 옮겨, 네트워크 볼륨과 첫 읽기·서버리스 콜드 스타트를 비교했습니다. 쓸 때 주의할 점과 언제 무엇을 고를지 정리했습니다.

  • Runpod Serverless
  • 글로벌 볼륨
  • 네트워크 볼륨
  • 실측

Runpod 네트워크 볼륨을 써 봤다면 한 번쯤 겪으셨을 텐데요. 볼륨을 만들 때 고른 데이터센터에 원하는 GPU가 없으면, 볼륨째 다른 곳으로 옮길 수가 없습니다. 베타로 나온 글로벌 볼륨은 이 문제를 풀겠다고 나온 기능입니다. 데이터센터를 고르지 않고 만들고, 어느 데이터센터의 Pod나 서버리스 워커에도 붙습니다.

그래서 갈아탈 만한지, 같은 모델 파일을 두 볼륨에 넣고 재 봤습니다. 짧게 답하면 서버리스에서는 아직 아니었습니다. 같은 데이터센터에서도 모델을 처음 읽는 속도가 약 6분의 1이라, 워커가 새로 뜰 때마다 기다리는 시간이 두 배 넘게 늘었거든요.

이 글은 직접 써 보려는 분을 위해 만드는 법, 쓸 때 주의할 점, 결과 요약, 고르는 기준을 정리했습니다. 회차별 값과 측정 방법은 Oh My GPU의 전체 측정 글에, 화면으로 보는 설명은 OMG 7편 영상에 있습니다.

글로벌 볼륨과 네트워크 볼륨, 무엇이 다른가

네트워크 볼륨 글로벌 볼륨 (베타)
만들 때 고르는 것 데이터센터, 용량 없음 (넣은 만큼 늘어남)
붙일 수 있는 곳 같은 데이터센터의 Pod·워커 어느 데이터센터의 Pod·워커
Pod에서 보이는 경로 /workspace /workspace-global (네트워크 볼륨과 함께 붙였을 때)
서버리스에서 보이는 경로 /runpod-volume /runpod-volume
파일 시스템 fuse fuse.geesefs (오브젝트 스토리지 기반)
안 되는 것 없음 파일 잠금, 원자적 rename, 하드 링크, 권한 설정, 파일 시각 저장

서버리스에서는 두 볼륨 모두 /runpod-volume에 보이므로, 쓰던 핸들러는 경로를 고치지 않고 그대로 쓸 수 있습니다. 다만 엔드포인트 하나에는 둘 중 하나만 붙일 수 있습니다.

만들고 모델 옮기기

  1. 콘솔 Storage → New volume에서 종류를 Global volume으로 고릅니다. 데이터센터와 용량 칸은 없습니다.
  2. 이미 네트워크 볼륨에 모델이 있다면, Pod 하나에 두 볼륨을 같이 붙이고 복사합니다.
  3. 서버리스 엔드포인트의 Advanced 설정에서 Global Volume을 고릅니다.

복사할 때 하나 주의할 점이 있습니다. 공식 문서는 rsync --archive를 안내하지만, 글로벌 볼륨은 파일 시각을 저장하지 못해서 --archive에 들어 있는 시각 복사(-t) 때문에 rsync가 오류 코드 23으로 끝났습니다. 아래처럼 -rl --inplace로 복사했습니다.

rsync -rl --inplace --exclude=.cache /workspace/models/ /workspace-global/models/

이렇게 해도 디렉터리 권한·시각 경고는 남습니다. 경고만 보고 실패로 판단하지 말고, 복사가 끝나면 SHA-256으로 파일을 확인하는 걸 권합니다. 이번에는 네 건 모두 통과했고, H3 모델 46.56GB를 옮기는 데 215.4초가 걸렸습니다.

파일 잠금·하드 링크·권한이 안 되니 볼륨에는 모델 파일만 두는 게 안전합니다. ComfyUI나 파이썬 환경은 도커 이미지에 넣습니다.

숫자 세 개로 본 결과

같은 모델(Qwen3.8-27B NVFP4 20.61GB, MiniMax H3 46.56GB)을 두 볼륨에 넣고, 서버리스는 RTX PRO 6000 한 장, min 0 / max 1, FlashBoot 끔으로 맞췄습니다. 측정은 2026년 10월 22일 하루, 값은 3회 중 가운데 값입니다.

항목 네트워크 볼륨 글로벌 볼륨
큰 파일 첫 읽기 (EU-RO-1) 1,066MB/s 178.9MB/s
LLM 첫 요청 대기 (워커 0개에서) 157초 376초
H3 첫 영상 생성 171–240초 780초, 1회는 25분 제한에 걸려 실패
워커가 떠 있을 때 LLM 요청 0.4초 0.4초

LLM 첫 요청 대기 시간. 막대는 3회 중 가운데 값, 점은 각 회차. 네트워크 볼륨 2분 37초, 글로벌 볼륨 6분 16초, 볼륨 없이 Hugging Face에서 받을 때 4분 29초.

눈에 띄는 건 두 가지였습니다. 글로벌 볼륨에서 LLM 첫 요청은 볼륨 없이 매번 Hugging Face에서 받는 것(269초)보다도 느렸습니다. 그리고 워커가 한 번 뜨고 나면 차이가 없었습니다. 느린 건 모델을 처음 읽는 순간에 몰려 있습니다.

미국 US-NC-2 Pod에 붙인 글로벌 볼륨은 첫 읽기가 104.3MB/s로 더 느렸습니다. LLM 측정에서는 글로벌 볼륨 워커가 US-PA-1, 네트워크 볼륨 워커가 EU-RO-1에 떠서 위치가 다른 비교라는 점도 감안해 주세요. 이런 조건과 회차별 값은 전체 측정 글에 모두 적었습니다.

언제 무엇을 고를까

세 가지 방법 정리. 글로벌 볼륨은 데이터센터를 고르지 않지만 첫 읽기와 첫 요청이 느렸고, 네트워크 볼륨은 EU-RO-1 한 곳에 묶이지만 빨랐다. Runpod 모델 캐시는 볼륨이 없고 이번에 같은 조건으로 재지 않았다.

상황 추천 이유
서버리스, min 0으로 자주 내렸다 올림 Runpod 모델 캐시 워커가 뜰 때마다 첫 읽기를 기다리지 않고, 데이터센터에도 묶이지 않음
공개된 Hugging Face 모델이 아님 비공개 HF 저장소 + 모델 캐시 OMG 6편의 H3 엔드포인트가 이 방식
워커나 Pod를 오래 켜 두는 서비스 글로벌 볼륨도 고려 첫 읽기 비용이 한 번뿐이라 느린 단점이 작아짐
여러 데이터센터의 Pod에서 같은 데이터를 공유 글로벌 볼륨 데이터센터에 묶이지 않는 장점이 가장 큼
한 데이터센터에서 빠른 읽기가 가장 중요 네트워크 볼륨 같은 EU-RO-1에서 약 6배 빨랐음

저는 서버리스에서는 지금처럼 Runpod 모델 캐시를 계속 쓰기로 했습니다. 엔드포인트의 Model 칸에 Hugging Face 저장소를 넣으면 워커가 뜰 서버에 모델을 미리 받아 두고, 문서에 따르면 받는 시간은 과금되지 않습니다. 다만 모델 캐시는 이번에 같은 조건으로 재지 않았으니, 위 표의 모델 캐시 줄은 측정값이 아니라 제 선택 기준입니다. 글로벌 볼륨은 베타라 속도가 바뀔 수 있습니다.

따라 해보기

측정 스크립트와 결과는 OMG Runpod Media 레시피 storage/01에 있습니다. 글의 근거를 나중에도 확인할 수 있도록 병합 커밋에 고정한 링크입니다.

  1. README.md에서 측정 조건과 비용을 확인합니다. 이번 측정에는 Pod 약 $1.80(청구액), 서버리스 약 $15–17(실행 시간 기준 추정)이 들었습니다.
  2. Pod 안에서 read_bench.sh로 복사 시간, 큰 파일 첫 읽기, SHA-256 검증을 잽니다.
  3. step2_round.py가 회차마다 새 Pod를 만들고 결과를 모은 뒤 지웁니다. 같은 Pod에서 다시 읽으면 메모리 캐시에서 읽기 때문입니다.
  4. step3_create.py · step3_run.py로 엔드포인트를 만들고 cold·warm 요청을 보냅니다.

측정이 끝나면 엔드포인트와 볼륨을 모두 지우세요. 글로벌 볼륨은 저장량과 요청 수로 과금되고, 계정 잔액이 $0이 되면 15일 뒤 볼륨이 삭제됩니다.

글로벌 볼륨을 다르게 써 본 경험이나 잘 맞았던 쓰임새가 있다면 Discord에서 나눠 주세요.

이 글을 쓴 사람

김진의

운영자

Runpod 활용 실험과 재현 코드를 Oh My GPU에 공유하며, Runpod Korea User Group을 운영합니다.

GitHub 프로필 ↗