s3fsでLinode Object StorageをLinuxサーバーにマウントする

# 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 とは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/cd7e77ba-cc88-036a-0a94-96f5cc55dff2.png)

Linode Object Storageは様々なリージョンで利用可能なS3互換の低価格なAkamai Cloud Computing Serviceのストレージソリューションです。
ストレージはNVMe SSDにて動作しており、HDDに比べて高いパフォーマンスと低レイテンシーなアクセスを実現することができます。
データ量は250GBから100TB(※1)まで拡張することができ、オブジェクトはリージョン内でレプリケートされており冗長性が担保されています。
インバウンド転送無料、アウトバウンド1TBまでの転送が標準の価格に含まれており、追加の転送料金は1GBあたり0.005ドルとかなり低コストなのが特徴です(※1)。
今後のアップデートではデータ量が最大1PB、オブジェクト数は最大10億に対応する予定があります。

- [Linode Object Storage](https://www.linode.com/ja/products/object-storage/)
- [Enhancing Object Storage Performance](https://www.linode.com/blog/cloud-storage/nvme-object-storage-enhanced-performance/)
- [Akamai Cloud Computing Services(Linode)とは何かをわかりやすく解説](https://qiita.com/isss802/items/5313c7a6da1d9ed50a38)

※1 リージョンによって制限や価格が異なります、詳しくは[こちら](https://www.linode.com/docs/products/storage/object-storage/#specifications)を参照ください。


## S3FSとは

クラウドオブジェクトストレージをファイルシステムとして扱えるオープンソースのツールですとなります。
FUSE Filesystem in Userspace を利用して S3 のバケットを Linuxにマウントさせることができます。
GitHub： https://github.com/s3fs-fuse/s3fs-fuse


## s3fsでLinode Object StorageをLinuxサーバーにマウントする

Linode Object StorageはS3互換のAPIを備えているため、s3fsを利用することができます。
今回はs3fsを利用してサーバーにObject Storageをマウントする手順となります。
サーバーOSに関してはUbuntuを利用します。

### インストール

s3fsをUbuntu 22.04 LTSにインストールし、コマンドが動作するか確認します。

```
apt update
apt install s3fs
s3fs --version
```

### アクセスキーの準備

Linode Object Storageのアクセスキーをファイルに記載します。

```
echo "[access_key]:[secret_access_key]" > /etc/passwd-s3fs
chmod 600 /etc/passwd-s3fs
```
Linode Object Storageのアクセスキーは以下から発行が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/61074b58-8f51-f826-ca18-7d31f98816db.png)

### ディレクトリの作成

Linode Object Storageをマウントするディレクトリを作成します。

```
mkdir -p /s3fs
```

### fstabの記載

サーバー起動時に自動的にマウントを行うため、fstabにs3fsの記載を行います。

```
vim /etc/fstab

s3fs#[bucket_name] /s3fs fuse nonempty,allow_other,url=https://[region-id].linodeobjects.com,endpoint=[region-id],passwd_file=/etc/passwd-s3fs 0 0
```

[bucket_name] : Linode Object Storageで作成したバケット名
[region-id]：Linode Object Storageを作成したregion-id

Bucket Nameはコンソールから確認が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/4dfe4ce9-a8c2-9edb-e190-945c7027caa5.png)


各リージョンのRegion IDは[**こちら**](https://www.linode.com/docs/products/storage/object-storage/#availability)から確認できます。


### ディスクをマウント

fstabを記載した後に、Linode Object Storageのマウントを行う。

```
mount -a
```

dfコマンドでマウントが行われているか確認します。

```
df -Th
Filesystem     Type       Size  Used Avail Use% Mounted on
s3fs           fuse.s3fs   16E     0   16E   0% /s3fs
```

以上でインストールは完了となります。

### 動作検証

参考までに、Linode Object Storageをマウントした際のファイル作成、閲覧の時間を確認します。

今回の検証では、シンガポールリージョンにサーバーを立て、同じリージョンにObject Storageを作成し、s3fsでマウントを行っています。

#### 500個のファイルを作成した際の時間

1分33秒かかりました。

```
root@localhost:/s3fs# i=1; time while [ $i -le 500 ]
> do
> touch test_$i > /dev/null 2>&1
> i=$((i+1))
> done

real	1m33.043s
user	0m0.451s
sys	0m0.219s
```

#### 500個のファイルを一覧化する時間

10秒かかりました。

```
root@localhost:/s3fs# time ls -laR /s3fs > /dev/null

real	0m10.715s
user	0m0.004s
sys	0m0.000s
```


## まとめ

Linode Object Storageをサーバーにマウントすることで、共有ディスクのような利用方法も検討することができます。
通常のディスクと比べて速度が格段に遅いため、利用用途が適しているか慎重に確認する必要があります。
尚、Linodeがs3fsのツールに関してサポートしているわけではありませんのでご注意ください。


## 関連記事

アカマイ・テクノロジーズ合同会社のQiitaではLinode関連など開発者向けの記事を記載しております。

https://qiita.com/organizations/Akamai