IBM Cloud：IBM Cloud Object Storageを仮想サーバーにマウントしてみる

# はじめに
IBM Cloud Object Storage (ICOS)はS3 APIに対応しているため、AWSのS3と同様の操作が可能です。そのため様々なs3用ツール等を利用することができます。
今回はS3をローカルにマウントするツールとして有名な **goofys** を使ってICOSをマウントしてみます。

# 環境情報
```
# cat /etc/os-release
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PLATFORM_ID="platform:el9"
PRETTY_NAME="CentOS Stream 9"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:centos:centos:9"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
```

# 作業
## ICOS の設定
ICOSインスタンスを作成し、バケット作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/ab2ba989-7add-0cf5-b3d6-726424056ae9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/d2e52bb3-5697-898b-0092-7afbcf331872.png)

## Credentials の作成
ICOSインスタンス画面の「Service credentials」より、認証情報を作成します。この際、「**HMACを含める**」にチェックを入れます。
（`access_key_id`と`secret_access_key`は後ほど使います）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/aabce4aa-1436-41ca-7287-0a29ce898a9b.png)

## goofys のインストール
プレビルド版があるので、ダウンロードします。
最新リリースは以下を確認ください。
・[kahing/goofys](https://github.com/kahing/goofys/releases/)

```
$ sudo yum -y update
$ sudo yum install -y golang fuse
$ sudo wget https://github.com/kahing/goofys/releases/download/v0.24.0/goofys -P /usr/local/bin/
$ sudo chmod 755 /usr/local/bin/goofys

$ goofys -v
goofys version 0.24.0-45b8d78375af1b24604439d2e60c567654bcdf88
```

## クレデンシャル・ファイルの作成
```
$ mkdir ~/.aws
$ vim ~/.aws/credentials <- 先ほど確認したHMAC情報を記載します
$ cat ~/.aws/credentials
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

## ICOS のマウント
マウント用ディレクトリを用意しておきます。
```
$ sudo mkdir /mnt/icos
```
マウント用のエンドポイントをIBM Cloudポータルで確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/ba8fdc39-b84f-5ed4-74bf-8509b6427e65.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2199676/e55436ce-b2cd-be2a-20d1-f93461c594cb.png)

:::note 
VPCクライアントは、パブリック・エンドポイントとダイレクト・エンドポイントを用いて API アクセスできます。
https://cloud.ibm.com/docs/vpc?topic=vpc-connecting-vpc-cos&locale=en
:::

以下のコマンドでマウントします。
```
$ goofys --endpoint https://s3.direct.jp-tok.cloud-object-storage.appdomain.cloud takason-bucket-tok /mnt/icos
```
無事マウントできていることが確認できました。
`ls`コマンドでもテストファイルが見えていますね。
```
$ df -h
Filesystem          Size  Used Avail Use% Mounted on
devtmpfs            4.0M     0  4.0M   0% /dev
tmpfs               3.8G     0  3.8G   0% /dev/shm
tmpfs               1.6G   45M  1.5G   3% /run
/dev/vda3           100G   13G   88G  13% /
/dev/vda2           100M  7.5M   93M   8% /boot/efi
tmpfs               769M     0  769M   0% /run/user/0
takason-bucket-tok  1.0P     0  1.0P   0% /mnt/icos
$
$  ls /mnt/icos
1.png
```

# 書き込みテスト
安定して 100MB/s 以上出ていますね！

```
# cd /mnt/icos
# dd if=/dev/zero of=1G.dat bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 7.93839 s, 132 MB/s
# dd if=/dev/zero of=1G.dat bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 6.44592 s, 163 MB/s
# dd if=/dev/zero of=1G.dat bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 6.43512 s, 163 MB/s

```