はじめに
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 の設定
Credentials の作成
ICOSインスタンス画面の「Service credentials」より、認証情報を作成します。この際、「HMACを含める」にチェックを入れます。
(access_key_id
とsecret_access_key
は後ほど使います)
goofys のインストール
プレビルド版があるので、ダウンロードします。
最新リリースは以下を確認ください。
・kahing/goofys
$ 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ポータルで確認します。
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