頻繁にアクセスしないファイルについて、安価なオブジェクトストレージをサーバーにマウントして、ファイルサーバーを構築すればコスト削減できるというニーズがあります。その場合、FUSE(Filesystem in Userspace)を使います。今回は、AlibabaCloudを例としてFUSE+Sambaで構築していきたいと思います。
目次
- AlibabaCloudのストレージ種類一覧
- FUSEとは
- AlibabaCloudのFUSEベースのツール
- 実装する手順
- さいごに
1. AlibabaCloudのストレージ種類一覧
まずはAlibabaCloudのストレージをまとめて、レイテンシー順で並んでいます。
オブジェクトストレージレイテンシーが一番高いですが、料金は最も低価格で利用できます。
今回はこのオブジェクトストレージを仮想サーバーにマウントして、ファイルサーバーを構築していきます。
- ローカルストレージ: ECSのローカルディスク
- ブロックストレージ: ブロックストレージ
- ファイルストレージ: NAS
- オブジェクトストレージ: OSS
2. FUSEとは
オブジェクトストレージの特徴は、シンプルなキーバリューの構造で、安価なストレージとして提供しています。コンテンツ配信、ビッグデータ処理などに最適ですが、頻繁に更新するデータには向いていないという特徴があります。アクセスのレイテンシーは、ローカルストレージ、ブロックストレージやファイルストレージより高いため、仮想サーバーのストレージとしてマウントして使うのは向いていません。
ただし、何らかの理由でオジェクトストレージをサーバーにマウントしたいときには、FUSEが役に立ちます。
※画像出所:wikipedia
FUSE(Filesystem in Userspace)とは、、その名の通りユーザー空間にあるファイルシステムです。
OSは、セキュリティと安定性のために、メモリ領域である仮想アドレス空間をカーネル空間とユーザー空間に分離されています。通常、Linuxのファイルシステムはカーネル空間にあります。つまりファイルシステムに関するソースコードは、全部全てLinuxのカーネル空間にあります。FUSEの特徴は、ファイルシステムのロジック部分がユーザー空間にあることです。
メリット:
- 修正する際に、Linuxカーネルを更新する必要がありません
- 修正の自由度が高いです
デメリット:
- パフォーマンスが悪い
3. AlibabaCloudのFUSEベースのツール
AlibabaCloudはossfsというツールを提供しています。それを使えばオブジェクトストレージを仮想サーバーにマウントできるようになります。
https://github.com/aliyun/ossfs
それ以外にAlibabaCloudにはCloud Storage Gatewayエージェントというのがあります。まだベータ版ですが、Azure Blobfuse2のようにサーバー上のエージェントでキャッシュ機能を持ちます。
4. 実装する手順
ゴール:FUSEでオブジェクトストレージを仮想サーバーにマウントして、Samba経由でフォルダをシェアします。
例として手順を書いていきます。
手順1:FUSEのインストール
wget https://gosspublic.alicdn.com/ossfs/ossfs_1.80.7_ubuntu20.04_amd64.deb
sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi ossfs_1.80.6_ubuntu16.04_amd64.deb
手順2:オブジェクトストレージバケットの作成
以下のバケットを作成
管理コンソールから以下のバケットを作成します。
fuse-samba-bucket
手順3:バケットへのアクセス権限付与
バケットへのアクセス権限を持つロールを作成し、仮想サーバーにアタッチします。
RoleFuse
手順4:バケットのマウント
ディレクトリを作成します。
mkdir /mnt/sharefuse
一時利用なら、コマンドでマウントできますが、サーバーを再起動したら毎回マウントし直す必要があります。
ossfs fuse-samba-bucket /mnt/sharefuse -o url=http://oss-ap-northeast-1.aliyuncs.com -oram_role=http://100.100.100.200/latest/meta-data/ram/security-credentials/RoleFuse -oallow_other
恒久敵に利用する場合、fstabに登録しておけば、サーバー再起動後も自動的にマウントされます。
AlibabaCloudの場合、fstabに登録するとRAMロールの認証が使えなくなります。AccessKeyIDとAccessKeySecretを設定ファイル/etc/passwd-ossfsに設定する必要があります。
ossfs#fuse-samba-bucket /mnt/sharefuse fuse _netdev,url=http://oss-ap-northeast-1.aliyuncs.com,allow_other 0 0
手順5:Sambaのインストール
sudo apt install samba
手順6:Sambaの設定
設定ファイルを開きます。
sudo vi /etc/samba/smb.conf
設定ファイルの最後に追加
[sharefuse]
comment = share folder
browseable = yes
path = /mnt/sharefuse/
create mask = 0755
directory mask = 0755
public = yes
available = yes
writable = yes
sambaの再起動
sudo service smbd restart
手順7:動作確認
セキュリティグループの以下のポートを自宅のIPアドレスに開けます。
tcp:139, 445
udp:137, 138
WindowsPCのエクスプローラからシェアフォルダにアクセスできることを確認します。
簡単な確認ならこのようにセキュリティグループを開ける形で確認します。SMBはバージョン2以降暗号化はしていますが、インターネット前提で設計したものではないため、本格的な利用の場合は、専用線、Site-To-Site VPNなどのセキュリティ環境でアクセスする必要があります。
また本格利用の場合、認証情報としてSambaとActive Directryの連携が必要になってくる場合があります
5. さいごに
オブジェクトストレージはレイテンシーがあるものの、費用対効果が優れているストレージです。一般的ではないですが、ニーズに合えばサーバー上にマウントして利用できます。またサーバー上によくアクセスするファイルをキャッシュしておけば、パフォーマンスがある程度改善されます。