LoginSignup
13
14

More than 5 years have passed since last update.

IBM Cloud Object Storageを使ってみた

Last updated at Posted at 2017-09-08

内容IBM cloudで提供しているIBM Cloud ObjectStorage(ICOS)の使い方です。

LinuxからCLI(awscli)とFilesystem in Userspace(goofys)で利用してみました。

参考記事

ICOS(IBM Cloud Object Storage)とは

AWSのs3互換のオブジェクトストレージです。(旧cleversafe社の買収製品)
IBM cloudのストレージサービスの1つに組み込まれました。
IBM cloudでは従来のOpenstack SwiftベースのオブジェクトストレージとともにICOSが加わったことになります。

ストレージクラスや料金体系については[こちら]を参照してください。

ICOSのオーダー

IBM cloudポータルからのメニューパスは次の通りです。

[IBM cloudコンソール]->[インフラストラクチャー]->[オブジェクトストレージ]

ICOS-0.png

[オブジェクトストレージの注文]をクリックします。

ICOS-2.png

料金体系が表示されます。画面下部にある[注文]をクリックしてオーダー完了です。
(従量課金ですので気にせずオーダーします。)

ICOS-3.png

作成されたアカウントをクリックして、[資格情報の表示]をクリックします。
[ACCESS KEYS]の欄にあるアクセスキーID秘密アクセス・キーをメモします。
この情報は後述のアクセスツールで使用します。

ICOS-4.png

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のエンドポイントとストレージクラス

エンドポイント一覧

[ストレージクラス]
ストレージクラスはリージョンとクラスで示されます。
バケットを作る際に利用します。

リージョン Standard Vault ColdVault Flex
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の不調や切り替えが発生した場合や、クライアント側の過負荷等に依存し、マウントが切れる可能性があるため、別途、監視や自動リカバリの実装が必要です。

13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14