IBM Cloud Object Storage를 사용해 보았습니다.

내용 IBM cloud에서 제공하는 IBM Cloud ObjectStorage(ICOS)를 사용하는 방법입니다.



Linux에서 CLI(awscli)와 Filesystem in Userspace(goofys)에서 이용해 보았습니다.

참고 기사


  • IBM Cloud ObjectStorage Document
  • Qiita:goofys를 사용하여 Amazon Linux에 S3 마운트
  • goofys:a high-performance, POSIX-ish Amazon S3 file system written in Go

  • ICOS(IBM Cloud Object Storage)란?



    AWS의 s3 호환 객체 스토리지입니다. (구 cleversafe 사의 인수 제품)
    IBM cloud의 스토리지 서비스 중 하나에 내장되었습니다.
    IBM cloud에서는 기존의 Openstack Swift 기반 오브젝트 스토리지와 함께 ICOS가 추가되었습니다.

    스토리지 클래스 및 요금 체계에 대해서는 [여기]을 참조하십시오.

    ICOS 주문



    IBM cloud 포털의 메뉴 경로는 다음과 같습니다.

    [IBM cloud 콘솔] -> [인프라] -> [오브젝트 스토리지]



    오브젝트 스토리지 주문을 클릭합니다.



    요금 체계가 표시됩니다. 화면 하단의 주문을 클릭하여 주문을 완료합니다.
    (종량 과금이므로 신경 쓰지 않고 주문합니다.)



    생성된 계정을 클릭하고 자격 증명 보기를 클릭합니다.
    [ACCESS KEYS] 입력란에 있는 アクセスキーID , 秘密アクセス・キー 를 메모합니다.
    이 정보는 아래의 액세스 도구에서 사용됩니다.



    CLI (awscli)로 액세스



    awscli를 설치합니다.

    RHEL7의 예입니다.
    $ sudo yum install python2-pip
    $ sudo pip install awscli

    계정 정보를 등록합니다.
    이전에 기록한 자격 증명 アクセスキーID , 秘密アクセス・キー를 입력합니다.
    region에 us-geo를 입력합니다.

    2017/09 집필 시점에는 일본 국내의 리전은 없습니다. 가장 가까운 us입니다.
    $ aws configure
    AWS Access Key ID []: ****************
    AWS Secret Access Key []: [****************
    Default region name []: us-geo
    Default output format []: json
    

    액세스 확인에서 ls 참조 명령을 실행했습니다.
    endpoint는 디폴트로 aws씨를 참조해 버리므로, 명시가 필요합니다.
    $ aws s3 ls --endpoint=https://s3-api.sjc-us-geo.objectstorage.service.softlayer.net
    2017-08-31 04:42:26 my-bucket
    

    ICOS 엔드포인트 및 스토리지 클래스



    엔드포인트 목록

    [스토리지 클래스]
    스토리지 클래스는 리전과 클래스로 표시됩니다.
    버킷을 만들 때 사용합니다.


    지역
    표준
    Vault
    ColdVault
    플렉스


    us-geo
    us-standard
    us-vault
    us-cold
    us-flex

    us-east
    us-east-standard
    us-east-vault
    us-east-cold
    us-east-flex

    us-south
    us-south-standard
    us-south-vault
    us-south-cold
    us-south-flex

    eu-geo
    eu-standard
    eu-vault
    eu-cold
    eu-flex


    저장소 클래스는 버킷을 만들 때 --region 매개 변수로 지정하십시오.
    $ aws s3 mb s3://my-vault --region=us-valut  --endpoint=https://s3-api.sjc-us-geo.objectstorage.service.softlayer.net
    make_bucket: my-vault
    

    그 외의 조작은 aws s3 와 같습니다.

    Filesystem in Userspace(goofys)로 마운트 및 액세스



    goofys 은 s3fs처럼 마운트하는 도구입니다.
    s3fs보다 고속과의 소문과 실적이므로 시험해 보았습니다.

    goofys 설치


  • golang 패키지를 설치하고 goofys를 빌드합니다.

  • golang은 1.7 이상이 필요하지만 RHEL7에서는 golang v1.6.x가 제공되므로,
    배포판 외부의 go 저장소에서 최신 golang을 설치합니다.
    $ sudo rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
    $ sudo curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
    $ sudo yum clean all
    $ sudo yum install golang git fuse
    
    GOホームディレクトリの作成
    
    $ sudo mkdir /usr/local/go
    $ sudo su -
    
    # export GOPATH=/usr/local/go
    # export PATH=$PATH:$GOPATH/bin
    # go get github.com/kahing/goofys
    # go install github.com/kahing/goofys
    
    ビルドされていることを確認
    # ls -l /usr/local/go/bin/goofys
    -rwxr-xr-x. 1 root root 13915583  9月  7 03:53 /usr/local/go/bin/goofys
    
    誰でも利用できるように/usr/local/binへsymlinkを作成
    # ln -sf /usr/local/go/bin/goofys  /usr/local/bin/goofys
    # type goofys
    goofys はハッシュされています (/usr/local/bin/goofys)
    

    마운트 방법



    수동으로 마운트하는 예는 다음과 같습니다.
    # goofys --endpoint=https://s3-api.sjc-us-geo.objectstorage.service.networklayer.com my-bucket /ext/icos
    
    # df -h
    ファイルシス   サイズ  使用  残り 使用% マウント位置
    /dev/xvda2        25G  4.7G   19G   21% /
    devtmpfs         1.9G     0  1.9G    0% /dev
    tmpfs            1.8G     0  1.8G    0% /dev/shm
    tmpfs            1.8G  8.4M  1.8G    1% /run
    tmpfs            1.8G     0  1.8G    0% /sys/fs/cgroup
    /dev/xvda1       240M  119M  109M   53% /boot
    tmpfs            354M     0  354M    0% /run/user/0
    my-bucket        1.0P     0  1.0P    0% /ext/icos <--1ペタで表示される。(※使用量は見えないです)
    

    일반적인 파일대로 find 명령도 사용할 수 있습니다.
    # find /ext/icos -ls
         1    4 drwxr-xr-x   2 root     root         4096  9月  7 04:41 /ext/icos
         4 1488790 -rw-r--r--   1 root     root     1524520960  9月  7 02:39 /ext/icos/WATSON.tar
         5 3207610 -rw-r--r--   1 root     root     3284592640  9月  7 03:17 /ext/icos/plyabook.tar
    #
    

    자동 마운트하는 경우(/etc/fstab)



    fstab에 다음과 같이 기술합니다.
    /usr/local/bin/goofys#my-bucket  /ext/icos   fuse  _netdev,--endpoint=https://s3-api.sjc-us-geo.objectstorage.service.networklayer.com  0 0
    

    mount
    #sudo mount /ext/icos 
    
    # df -h
    ファイルシス   サイズ  使用  残り 使用% マウント位置
    /dev/xvda2        25G  4.7G   19G   21% /
    devtmpfs         1.9G     0  1.9G    0% /dev
    tmpfs            1.8G     0  1.8G    0% /dev/shm
    tmpfs            1.8G  8.4M  1.8G    1% /run
    tmpfs            1.8G     0  1.8G    0% /sys/fs/cgroup
    /dev/xvda1       240M  119M  109M   53% /boot
    tmpfs            354M     0  354M    0% /run/user/0
    my-bucket        1.0P     0  1.0P    0% /ext/icos <--1ペタで表示される。(※使用量は見え
    

    주의 API endpoint의 부조나 전환이 발생했을 경우나, 클라이언트측의 과부하등에 의존해, 마운트가 끊어질 가능성이 있기 때문에, 별도, 감시나 자동 복구의 구현이 필요합니다.

    좋은 웹페이지 즐겨찾기