Skip to content

Disk and Driver API

ByoungSeob Kim edited this page Aug 10, 2022 · 21 revisions

Disk(Volume) and Driver API


- CB-Spider Disk Specification V0.1
- V0.1 : Driver 검토/개발 용

1. CB-Spider Disk Overview

  • CB-Spider는 연동 대상 클라우드(CSP)가 제공하는 Disk(또는 Volume)를
    • 동일한 인터페이스를 사용하여 제어할 수 있는 Disk 제어 기능을 제공한다.
  • CB-Spider 사용자는 Disk를 아래 그림과 같이 Root-Disk(R-Disk, 운영체제 포함)와 Data-Disk(D-Disk)로 활용할 수 있다.
    • [1. Root-Disk 활용]

      • (생성/부착) 사용자가 VM 생성 요청시 자동으로 Root-Disk가 생성되며,
        • 생성된 VM에 생성된 Root-Disk가 부착(Attach) 되어 OS 운영에 필요한 시스템 디스크로 활용된다.
        • 하나의 VM은 하나의 Root-Disk를 소유할 수 있다.
      • (해제/삭제) Root-Disk는 VM으로 부터 명시적인 해제(Detach)가 불가능하며,
        • Disk를 소유한 VM 삭제 시에 자동으로 사용 해제(Detach) 되며 VM과 함께 삭제된다.
      • 사용자는 VM 생성 요청 시에 Root-Disk의 Disk Type과 Disk Size를 설정할 수 있다.
    • [2. Data-Disk 활용]

      • (생성) 사용자는 필요 시점에 Data-Disk를 생성할 수 있다.
      • (부착) 사용자는 생성한 Data-Disk를 운영 중인 특정 VM에 부착(Attach)하여 VM에서 활용할 수 있다.
        • 또한, VM 생성시에 존재하는 Data-Disk를 부착할 수 있도록 설정할 수도 있다.
        • 하나의 VM에 여러 개의 Data-Disk 부착이 가능하지만, 하나의 Data-Disk는 하나의 VM에만 부착이 가능하다.
      • (해제) 사용자는 VM이 소유 중인 Data-Disk를 명시적으로 해제(Detach) 요청하여 회수할 수 있다.
        • VM 삭제 시에는 대상 VM이 소유 중인 Data-Disk가 자동으로 소유 해제된다.
      • (삭제) 사용자는 더 이상 Data-Disk가 필요 없을 경우 Data-Disk를 삭제할 수 있다.



[CB-Spider Disk 종류 및 활용 개요]


  • ※ 참고: Format / Mount / UMount

    • VM에 부착된 Data-Disk를 VM에서 파일 저장 목적으로 활용하기 위해서는 파일 시스템 포맷과 마운트 과정이 필요하다.

    • 파일 시스템 포맷 예시

      • disk 속성 확인: 속성이 data일 경우 format 필요
        $ sudo file -s /dev/sdc
        /dev/sdc: data
        
      • format
        $ sudo mkfs -t xfs /dev/sdc
        meta-data=/dev/sdc               isize=512    agcount=4, agsize=1048576 blks
                 =                       sectsz=4096  attr=2, projid32bit=1
                 =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
        data     =                       bsize=4096   blocks=4194304, imaxpct=25
                 =                       sunit=0      swidth=0 blks
        naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
        log      =internal log           bsize=4096   blocks=2560, version=2
                 =                       sectsz=4096  sunit=1 blks, lazy-count=1
        realtime =none                   extsz=4096   blocks=0, rtextents=0
        
    • 마운트 예시

      • disk 속성 확인
        $ sudo file -s /dev/sdc
        /dev/sdc: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
        
      • mount
        $ mkdir data
        $ sudo mount /dev/sdc data
        $ cd data
        $ sudo chown cb-user:cb-user .
        
    • 마운트 해제 예시

      • umount
        $ sudo umount -d /dev/sdc
        

2. 드라이버 개발 노트

  • Zonal vs Regional 관련 선택 옵션 제공하는 경우

    • 현재는 Zonal로 설정, Zone 값은 Connection에서 획득 후 적용
  • Disk 목록은 Root-Disk와 Data-Disk를 구분하지 않는다.

  • Disk의 상태는 다음과 같다.

    • Creating | Available | Attached | Deleting
    • Creating: Disk가 생성 중인 상태
    • Available: Disk가 VM에 부착 되지 않고 사용 가능한 상태
    • Attached: Disk가 VM에 부착되어 특정 VM이 소유 중인 상태
    • Deleting: Disk가 삭제 중인 상태
  • IOPS 정보 등 CSP별로 제공하는 유용한 반환 정보는

    • 현재는 KeyValueList에 추가하여 반환해주시기 바랍니다.
    • 부가 정보로 제공하기 위함뿐만 아니라
    • 모든 CSP가 공통으로 제공하는 정보라면 향후 제공 정보로 확장하기 위함입니다.
  • 꼭 필요해 보이는데 공통 API에서 제공되지 않는 설정일 경우는 상단 링크의 이슈에 현황을 공유 부탁드립니다.

  • 그 외에 대상 CSP Driver 개발시 부족한 부분이 있으시면 상단 링크의 이슈에 공유 부탁드립니다.


3. Disk Driver Common API

  • Source Tree

    $tree cb-spider/cloud-control-manager/cloud-driver/interfaces/
    cb-spider/cloud-control-manager/cloud-driver/interfaces/
    |-- CloudDriver.go
    |-- README.md
    |-- connect
    |   `-- CloudConnect.go
    `-- resources
        .
        |-- ClusterHandler.go
        |-- DiskHandler.go  <======================= Disk Driver API
        |-- IId.go
        |-- ImageHandler.go
        |-- KeyPairHandler.go
        |-- KeyValue.go
        |-- NLBHandler.go
        |-- SecurityHandler.go
        |-- VMHandler.go
        |-- VMSpecHandler.go
        `-- VPCHandler.go
    
  • Driver API Spec V0.6.4 (latest)

    TBD

Table of contents



Clone this wiki locally