Volume 설정

Volume 설정

DDN/NVMe - Project Level Storage
DDN/NVMe - Project Level Storage
PVC(Persistent Volume Claim)란?
쿠버네티스 시스템에서 사용자가 저장 공간을 요청하는 'Storage 청구서' 입니다.
  • 사용자가 Volume 생성 버튼을 누르면, Kubernetes 내부에서는 PVC 객체가 만들어집니다.
  • Kubernetes는 실제 물리적인 디스크 공간인 PV 와 사용자의 요청인 PVC 를 분리해서 관리합니다.
    사용자가 "50GiB 공간이 필요해"라고 PVC 를 제출하면, 시스템이 조건에 맞는 PV 를 찾아 자동으로 연결해 줍니다.
  • Pod PVC 를 통해 안전하게 물리적 스토리지에 접근하고 데이터를 읽고 쓸 수 있게 됩니다.
사용자는 PVC를 작성하여 NKS에 제출하면, NKS에서 PVC를 보고 물리적 Storage를 할당합니다.
이를 PV라고 부르며, PVC와 PV를 Binding합니다.
사용자는 PVC 를 생성하며, NKS는 자동으로 조건에 맞는 PV 를 떼어와 연결해 주도록 Trigger 합니다.
MLXP에서는 PVC 생성을 위한 .yaml파일을 자동으로 생성하여 NKS에 전달하지만, 저희가 Terminal에서 따로 설정할 수도 있습니다.

저장소의 종류

Project의 volume 설정에서는 [ DDN / NVMe / NCS ]를 선택할 수 있습니다.
  • Workspace-level
    • Naver Cloud Storage
      Data Manager 와 Model Registry가 저장되는 공간입니다.
    • Object Storage
      Container 사용을 위한 Image 저장소입니다.
  • Project-level
    • NVMe
      • local-path로 표시되어있으며, Node(Server)와 연결되어있는 저장소입니다.
        실험 초기나 단일 노드 벤치마크에서만 사용하고, 실제 실험단계나 학습단계에서는 DDN에 데이터를 올려 작업해야 합니다.
      • ReadWriteOnce 모드를 지원합니다.
      • GPU와 바로 붙어있는 공간이기에 접근은 빠르지만, Pod 연결시 다른 node로 연결되었을 때 접근이 불가능합니다. 또한, 예기치 못한 이유로 GPU사용이 불가능해지면, GPU 교체와 동시에 해당 NVMe 내용 또한 영구적으로 접근할 수 없습니다.
    • DDN
      • InfiniBand로 연결되어 있는 고성능 저장 공간입니다. 여러 노드(다중 GPU 서버)에서 동시에 접근할 수 있으므로, 본격적인 분산 학습이나 실제 실험 단계에서는 반드시 데이터를 이 공간에 올려 작업해야 합니다.
      • ReadWriteOnceReadWriteMany 모드를 모두 지원합니다.
    • Object Storage
      Naver Cloud Storage와 같은 저장소입니다.
💡
다음은 Clush 측에서 제공하는 Project 별 DDN 공간에 대한 설명입니다.
  • DDN 스토리지는 프로젝트 단위로 할당됩니다. 따라서, 새 프로젝트 생성 후 DDN 할당을 받지 않은 경우, StorageClass 목록에 DDN이 표시되지 않습니다.
  • 프로젝트별 DDN 용량을 아래 형식으로 요청하면, 네이버 클라우드에 DDN 재분배 요청이 진행됩니다.
    • 프로젝트 : 사용하실 DDN 용량
    • 총 DDN 용량 = 할당 받으신 노드 수 * 20TB
    • 해당 내용을 기술지원 문의하시기 바랍니다.

Volume Access Type

  • ReadWriteOnce
    한 번에 하나의 Node만 읽기/쓰기 권한을 가집니다.
    다른 Node에서는 접근이 불가능합니다.
  • ReadWriteMany
    다른 Node에서도 고속으로 동시 읽기/쓰기가 가능합니다.
    로컬 스토리지(NVMe)보다는 느릴 수 밖에 없으며 전체 노드에서 읽기/쓰기가 동시에 일어날 경우, 속도 저하가 발생 될 수 있습니다.
DDN에서의 RWO는 다른방식으로 작동합니다.
  • DDN의 경우 같은 Node라면 다른 Pod이여도 접근 가능합니다.
  • NVMe의 경우, 같은 Node여도 다른 Pod에서 접근이 불가능합니다. 즉, Pod과 1대1 대응입니다.
Storage/Access at RWO
다른 Pod에서 접근
다른 Node에서 접근
Pod 재시작시 데이터 소실 가능성
DDN
가능
불가능
없음
NVMe
불가능
불가능
있음
Storage/Access Type
RWO
RWX
DDN
Node와 1:1 대응
해당 프로젝트의 모든 Pod에서 접근 가능
NVMe
Pod과 1:1 대응
불가능

Volume Size

  • DDN은 서버당 20TB가 할당되며, 총 40TB입니다.
    NVMe는 서버당 7TB x 6개가 할당되어, 총 84TB입니다.
  • NVMe를 사용하게 된다면, “최대 용량의 80%의 까지만 사용”해야합니다.
    그 이상으로 쓰게된다면, 데이터가 유실되거나 학습되던 하드가 방출될 수 있다고 합니다.

기타

  • NVMe는 Clush측에서 관리대상이 아니라고 합니다. 저희가 알아서 관리해야합니다.
  • Volume을 할당 한 이후, 용량을 증가시키는게 가능합니다. (DDN만 가능합니다.)

정리

  • Project에 할당하는 Project-level Storage(Volume)은 다른 Project에서 접근이 불가능합니다.
    (문의 결과 동일 Namespace에서는 접근이 가능하고, 다른 Project에서 접근이 가능하다고 하는데, project 생성시 해당 project에 대한 Namespace가 생성되는걸로 알아서, 다시 확인해봐야겠습니다.)
  • NVMe의 RWO는 하나의 pod에서만 접근이 가능하며, DDN의 RWO는 다른 pod이여도 같은 Node로 할당된 경우 동시사용이 가능합니다.
    하지만, 이렇게 사용하는건 비효율적이므로, DDN을 사용할 경우 RWX로 설정하여 해당 project에서 생성한 어느 pod에서도 동시사용이 가능하도록 설정하는게 보통입니다.