격리된 원격 GPU 노드에 자산을 공급하는 법
시뮬레이션은 거대한 자산(USD 환경·로봇·텍스처)을 읽어야 합니다. GPU 노드가 한 랙에 모여 있으면 NFS로 공유하면 그만입니다. 그런데 GPU가 클라우드·원격·격리망에 흩어져 있으면 NFS를 못 씁니다. 그럼 어떻게 같은 자산을 보여줄까요?
오브젝트 스토리지를 파일처럼 — s3fs
해법은 오브젝트 스토리지(MinIO 등 S3 호환)를 한 곳에 두고, 각 GPU 노드가 그 버킷을 파일시스템처럼 마운트하는 것입니다. 그 마운트를 해주는 게 s3fs(FUSE 기반) 입니다.
도식 렌더링 중…
각 노드에서 /assets/... 경로로 읽으면, s3fs가 뒤에서 S3 GET으로 버킷에서 가져옵니다. 노드는 "그냥 파일"인 줄 알고 USD 로더가 평소처럼 동작합니다 — NFS 없이도요.
함정 — 쓰기 경로를 잘못 고르면 뷰가 어긋난다
읽기는 쉽습니다. 쓰기가 함정입니다.
⚠️ SDK 업로드 ≠ 마운트 반영 — 자산을 고칠 때 오브젝트 스토리지 SDK로 직접 업로드하면, 버킷엔 올라가지만 s3fs의 로컬 캐시는 무효화되지 않습니다. 그러면 "A 노드에선 새 파일, B 노드에선 옛 파일"로 뷰가 영영 어긋납니다. 반드시 s3fs 마운트 경로에 직접 써야(write-through) 모든 노드가 같은 걸 봅니다.
도식 렌더링 중…
💡 "왜 이 노드엔 보이는데 저 노드엔 없지?" — 이 질문이 나오면 십중팔구 쓰기 경로 문제입니다. 캐시 디렉터리를 비우고, 쓰기를 마운트 경로로 통일하면 풀립니다. 원격 GPU 환경에서 자산 일관성은 "어디에 쓰느냐"에 달려 있습니다.
왜 이렇게까지
NFS가 되면 NFS가 편합니다. 하지만 GPU를 클라우드·원격으로 확장하는 순간, 망 격리·방화벽 때문에 NFS가 막힙니다. s3fs는 HTTP(S) 기반이라 어디서든 뚫리고, 오브젝트 스토리지는 사실상 무한 확장됩니다 — "어떤 GPU든 붙이면 같은 자산을 본다"는 플랫폼 확장성의 토대입니다.
한 줄 정리
📌 원격·격리 GPU 노드엔 NFS 대신 오브젝트 스토리지(MinIO)를 s3fs(FUSE)로 마운트해 자산을 파일처럼 읽힌다. 단, 쓰기는 마운트 경로에 직접(write-through) 해야 한다 — SDK 업로드는 s3fs 캐시를 무효화하지 않아 노드 간 뷰가 어긋난다.
