#内容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のストレージサービスの1つに組み込まれました。
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のエンドポイントとストレージクラス
[エンドポイント一覧](https://ibm-public-cos.github.io/crs-docs/endpoints)
[ストレージクラス]
ストレージクラスはリージョンとクラスで示されます。
バケットを作る際に利用します。
|リージョン | 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](https://github.com/kahing/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の不調や切り替えが発生した場合や、クライアント側の過負荷等に依存し、マウントが切れる可能性があるため、別途、監視や自動リカバリの実装が必要です。