こんにちは、UOZUです!
今回はさくらのクラウドの「オブジェクトストレージ」を、サーバー内で「ブロックストレージ」の様に使う為、マウントを試してみようと思います。
オブジェクトストレージとは
あまり意識する事は無いのですが、一般的なサーバーのディスクは「ブロックストレージ」と呼ばれ、「ブロック単位」で管理されています。
ブロックストレージ以外では、オブジェクトストレージ、ファイルストレージ等があり、特徴は以下の様なイメージです。
| 比較項目 | ブロックストレージ | オブジェクトストレージ | ファイルストレージ |
|---|---|---|---|
| 管理単位 | ブロック(分割されたデータ単位) | オブジェクト(データ+メタデータ) | ファイル / ディレクトリ |
| データ構造 | ボリューム(OSが直接管理) | フラット(階層なし、IDで管理) | 階層構造(フォルダ形式) |
| アクセス方法 | OSを介した直接アクセス | API (HTTP/HTTPS) 経由 | ネットワークプロトコル(NFS/SMB等) |
| 拡張性 | 物理・論理的な容量制限あり | ほぼ無限(非常に高い) | 容量制限あり(プランによる) |
| 主な用途 | OS、データベース、アプリケーション | バックアップ、静的画像、ログ保存 | 社内共有、WEBコンテンツ |
例えば、巨大なログやバックアップを長期的に保存したい場合は、オブジェクトストレージにアップロードする。2つのサーバーでファイルやディレクトリを共通化したいといった際は、ファイルストレージを利用する、といった形です。
通常、オブジェクトストレージは専用のツールでAPIを経由して利用しますが、今回は、サーバー内で扱いやすい様、マウントツールを使い、ファイルストレージやブロックストレージの様に使ってみたいと思います。
マウント動作時の注意点
検証時の注意点となりますが、さくらのクラウドのオブジェクトストレージは、「Amazon S3互換」との記載があるものの、「マウントの動作」の保証まではしていません。
実際にこの記事を元に試される際は、その点を理解した上で、参考としていただければと思います。
検証環境の用意
さくらのクラウドではAlmalinux10のサーバーを用意しました。
また、事前に以下の作業を行っておきましょう。
- オブジェクトストレージサービスの有効化
- バケットの作成
- アクセスキー/シークレットアクセスキーの発行

また発行したバケットの名前、アクセスキー/シークレットアクセスキーはメモしておきましょう。
マウント用パッケージのインストールと設定
では、続けてマウントに必要なパッケージと設定を進めます。
必要パッケージのインストール
まずs3fs-fuseをそのままインストールします。
# dnf install s3fs-fuse
設定情報の作成
またrootユーザーのホームディレクトリ直下に.awsディレクトリを作成し、クレデンシャルファイルを作成し、メモしておいたアクセスキー/シークレットアクセスキーを記入しておきます。
# mkdir ~/.aws
# vi .aws/credentials
------------------------------------------------
[default]
aws_access_key_id = メモしたアクセスキー
aws_secret_access_key = メモしたシークレットアクセスキー
------------------------------------------------
また、利用するリージョン(石狩第一サイト、東京第一サイト)の指定もここで行います。
# vi .aws/config
------------------------------------------------
[default]
region = jp-north-1
output = text
------------------------------------------------
今回、利用するリージョンは石狩第一サイトの為、region を jp-north-1 と指定しています。
マウントと動作確認
続けて、マウント用のディレクトリを作成し、s3fsコマンドでマウントを行ってみます。
今回のコマンドでは、バケット名を「uozu」、接続先は石狩第一サイトのエンドポイントを指定しています。
mkdir /mnt/sakura/
s3fs uozu /mnt/sakura/ -o allow_other,url=https://s3.isk01.sakurastorage.jp
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda2 20G 2.3G 17G 13% /
devtmpfs 459M 0 459M 0% /dev
tmpfs 478M 0 478M 0% /dev/shm
tmpfs 191M 5.3M 186M 3% /run
tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service
tmpfs 1.0M 0 1.0M 0% /run/credentials/getty@tty1.service
tmpfs 96M 4.0K 96M 1% /run/user/0
s3fs 64P 0 64P 0% /mnt/sakura
マウント出来た様なので、実際にファイルを作って見ます。
作業前は空のバケットですが・・・

touchコマンドで空ファイルを作ってみると、オブジェクトストレージ上にもファイルが作成されました。
# touch /mnt/sakura/test
# ll /mnt/sakura/
total 0
-rw-r--r-- 1 root root 0 Feb 16 11:00 test

追加記録なども問題無さそうです
# echo test > /mnt/sakura/test
# ll /mnt/sakura/
total 1
-rw-r--r-- 1 root root 5 Feb 16 11:04 test

おわりに
いかがだったでしょうか、かなり簡単にマウント出来たと思います。
ログを定期的にオブジェクトストレージにアップロードして、ディスク費用を抑えたい、といった際には、s3fsでマウントを利用する事で、スクリプトなど作り易くなりますね。
上記内容が参考になれば幸いです。
最後までおよみいただき、ありがとうございました。



