goofysで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)を参照ください。


## goofysとは

goofys では s3fs と同じく、クラウドオブジェクトストレージをファイルシステムとして扱えるオープンソースのツールとなります。
パフォーマンスを優先し、ディスク上のデータキャッシュ(checkout catfs）を持たない特徴があります。
GitHub： https://github.com/kahing/goofys


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

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

### インストール


goofysが利用するFilesystem in Userspace (FUSE)をインストールします。
FUSEはUnix系コンピュータオペレーティングシステム用のソフトウェアインタフェースです。

```
apt update 
apt install fuse 
```

### goofysのインストール

最新版のgoofysをダウンロードし、ファイルを配置します。
記事を記載している時点の最新版はv0.24.0です。
最新版はGithubから確認してください。
https://github.com/kahing/goofys

```
curl -L https://github.com/kahing/goofys/releases/download/v0.24.0/goofys -o /usr/local/bin/goofys
chmod 755 /usr/local/bin/goofys
goofys --version
```

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

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

```
mkdir /root/.aws/
vim /root/.aws/credentials

[default]
aws_access_key_id = ＜YourAccessKey＞ 
aws_secret_access_key = ＜YourSecretKey＞ 
region = <Region-id>
```

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

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 /goofys
```
### fstabの記載

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

```
vim /etc/fstab

/usr/local/bin/goofys#[bucket_name] /goofys fuse _netdev,allow_other,--file-mode=0666,--dir-mode=0777,--endpoint=https://[region-id].linodeobjects.com 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)


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

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

```
mount -a
```

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

```
df -Th
Filesystem     Type       Size  Used Avail Use% Mounted on
goofys-ap-south-1 fuse   1.0P     0  1.0P   0% /goofys
```

### 動作検証

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

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

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

1分かかりました。

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

real	1m0.351s
user	0m0.423s
sys	0m0.210s
```

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

0.03秒かかりました。

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

real	0m0.036s
user	0m0.000s
sys	0m0.007s
```

## まとめ

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

## 関連記事

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

https://qiita.com/organizations/Akamai