ローカル環境オブジェクトストレージをsaio(Swift All In One)からRustFSに切り替えました
切り替えの動機
先日のエントリでDocker Desktopバージョンアップの影響か、saioが起動しなくなったということをお話しました
一応手動のパッチで動作はするものの、本番環境のConoHaオブジェクトストレージがS3にも対応しているので、互換性などを考えて業界標準となりつつあるS3に合わせておくのがいいかなと思い、このタイミングで移行しました
なぜRustFS?
S3互換ストレージとしてはMinIOが有名で、最初は自分もMinIOへ移行するつもりでいました
ただ、情報を集めてみるとMinIOが公式DockerImageの配布を終了したとアナウンスされており、MinIO界隈がざわついていたため、今回はMinIOの採用は見送りました
では、RustFSを採用したかというと、特に理由は無いです・・・
強いて言えば自分がRustに興味があり、今後勉強しようと思っているのでRust製アプリに触れてみたかったというのが理由です
ちなみにRustFSは開発中のソフトウェアであり、「本番環境では使用しないこと!」とアナウンスされています

Docker Composeで使ってみる
GitHubにサンプルのdocker composeファイルがあるので、それを利用するのが簡単です
https://github.com/rustfs/rustfs の docker-compose-simple.yml
上記ファイルについてお好みで変更して利用すれば大丈夫です
個人的に気になった & 変更したのは以下の設定です
environment:
- RUSTFS_VOLUMES=/data/rustfs{0...3} # ←イレイジャーコーディングというディスク冗長化の仕組みを利用しているため、最低4本ディスクが必要
# - RUSTFS_TLS_PATH=/opt/tls # ローカルではhttpで運用するため、不要
- RUSTFS_UNSAFE_BYPASS_DISK_CHECK=true # ディスクトポロジーチェックをスキップ。イレイジャーコーディングでは4本のディスクは別ボリュームに配置されている必要があるが、ローカルでは同一ボリューム内への配置となるため、ディスクチェックをスキップし起動できるようにするほかの設定はデフォルトのまま利用しています
docker compose up -dで起動すれば、9001ポートにアクセスすることで管理画面にアクセスできます

アカウントとキーは、どちらも「rustfsadmin」でログインできます
バケットを作製し、公開する
RustFSもバケットを公開し、直接コンテンツを公開する使い方ができます
まずは管理画面からバケットを作成します

作製したバケットの設定をクリックし、publicにするだけで公開になります


後は画像をアップロードすれば、httpアクセスで画像が閲覧できるようになります


以上
ということで、簡単にですがRustFSの紹介でした
まだ本番環境では使用ができないものの、今後を期待させてくれるオブジェクトストレージだと思います
導入も簡単 & シンプルな管理画面、何より日本語対応されていることもありがたいですね!