Linodeとは
Linode (https://www.linode.com/) は Akamaiが提供するIaaS (Infrastructure as a Service) プラットフォームプロバイダーのサービスです。リノードと発音します。
Akamaiは2022年2月にLinode社の買収を発表しました。
https://www.akamai.com/ja/newsroom/press-release/akamai-to-acquire-linode
クラウドコンピューティングをよりシンプルに、手頃な価格で、誰もが利用できるようにすることで、イノベーションを加速することができます。
https://www.linode.com/ja/alternative-cloud-provider/
Linode Object Storageとは
Linode Object Storageは様々なリージョンで利用可能なS3互換の低価格なAkamai Cloud Computing Serviceのストレージソリューションです。
ストレージはNVMe SSDにて動作しており、HDDに比べて高いパフォーマンスと低レイテンシーなアクセスを実現することができます。
データ量は250GBから100TB(※1)まで拡張することができ、オブジェクトはリージョン内でレプリケートされており冗長性が担保されています。
インバウンド転送無料、アウトバウンド1TBまでの転送が標準の価格に含まれており、追加の転送料金は1GBあたり0.005ドルとかなり低コストなのが特徴です(※1)。
今後のアップデートではデータ量が最大1PB、オブジェクト数は最大10億に対応する予定があります。
- Linode Object Storage
- Enhancing Object Storage Performance
- Akamai Cloud Computing Services(Linode)とは何かをわかりやすく解説
※1 リージョンによって制限や価格が異なります、詳しくはこちらを参照ください。
rcloneとは
数十種類のクラウドストレージサービスとの間でファイルとディレクトリを同期するためのオープンソースのコマンドラインツールです。
rcloneでLinode Object StorageをLinuxサーバーにマウントする
Linode Object StorageはS3互換のAPIを備えているため、s3がマウントできるrcloneを利用することができます。
今回は、rcloneを利用してサーバーにObject Storageをマウントする手順となります。
サーバーOSに関してはUbuntuを利用します。
インストール
サーバーにrcloneのインストールを行います。
コマンドが動作することをVersionの表示で確認をします。
curl https://rclone.org/install.sh | sudo bash
rclone version
rclone 接続設定
Linode Object Storageに接続するための設定を記載します。
今回はシンガポールリージョンに接続するための設定となります。
root@localhost:~# vim /root/.config/rclone/rclone.conf
[linode]
type = s3
provider = Linode
access_key_id = <Access_Key_ID>
secret_access_key = <Secret_Access_key>
endpoint = <Cluster ID>.linodeobjects.com
acl = private
各リージョンのCluster IDはこちらから確認できます。
Object StorageのメニューからAPI Keyを発行できます。
このAPI KeyはS3互換のものとなり、アクセスキーの設定方法はS3同様に行います。
接続確認
rcloneはファイルの同期だけに利用するのではなく、ファイル操作も行えます。
いくつかのコマンドを利用して接続を確認します。
その他のコマンドも用意されております。
# ディレクトリ一覧
rclone lsd linode:<bucket_name>
# ファイル一覧
rclone ls linode:<bucket_name>
# ディレクトリ削除
rclone delete linode:<bucket_name>/test
# ファイル削除
rclone deletefile linode:<bucket_name>/test/test.file
# ディレクトリ/ファイルのコピー
rclone copy <file_path> linode:<bucket_name>/
# ディレクトリの同期
rclone sync <directory_path> linode:<bucket_name>/<directory_path>
rcloneでLinode Object Storageをマウントする
mount コマンドにて利用できるようにsymlinkを作成します。
ln -s /usr/bin/rclone /sbin/mount.rclone
マウントするディレクトリを作成します。
mkdir -p /mnt/data
Systemdにマウントする設定を作成します。
vim /etc/systemd/system/mnt-data.mount
[Unit]
After=network-online.target
[Mount]
Type=rclone
What=linode:<bucket_name>
Where=/mnt/data
Options=rw,allow_other,args2env,vfs-cache-mode=writes,config=/root/.config/rclone/rclone.conf,cache-dir=/var/rclone
自動的にマウントするための設定を作成します。
vim /etc/systemd/system/mnt-data.automount
[Unit]
After=network-online.target
Before=remote-fs.target
[Automount]
Where=/mnt/data
TimeoutIdleSec=600
[Install]
WantedBy=multi-user.target
サービスを起動、有効化します。
systemctl start mnt-data.mount
systemctl enable mnt-data.automount
ディスクがマウントされていることを確認します。
# df -h
Filesystem Size Used Avail Use% Mounted on
linode:<bucket_name> 1.0P 0 1.0P 0% /mnt/data
以上で設定は完了です。
動作検証
参考までに、Linode Object Storageをマウントした際のファイル作成、閲覧の時間を確認します。
今回の検証では、シンガポールリージョンにサーバーを立て、同じリージョンにObject Storageを作成し、s3fsでマウントを行っています。
500個のファイルを作成した際の時間
0.1秒ほどで完了しましたが、バックエンド側で作成処理が動いておりました。
表面上の処理は高速のようです。
root@localhost:/mnt/data# i=1; time while [ $i -le 500 ]
> do
> touch test_$i > /dev/null 2>&1
> i=$((i+1))
> done
real 0m0.980s
user 0m0.404s
sys 0m0.252s
500個のファイルを一覧化する時間
38秒かかりました。
root@localhost:/mnt/data# time ls -laR ./ > /dev/null
real 0m38.497s
user 0m0.015s
sys 0m0.020s
まとめ
Linode Object Storageをサーバーにマウントすることで、共有ディスクのような利用方法も検討することができます。
通常のディスクと比べて速度が格段に遅いため、利用用途が適しているか慎重に確認する必要があります。
尚、Linodeがrcloneのツールに関してサポートしているわけではありませんのでご注意ください。
関連記事
アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。