LoginSignup
1
0

AlibabaCloudでFUSEとSambaを使ってオブジェクトストレージベースのファイルサーバー構築

Posted at

頻繁にアクセスしないファイルについて、安価なオブジェクトストレージをサーバーにマウントして、ファイルサーバーを構築すればコスト削減できるというニーズがあります。その場合、FUSE(Filesystem in Userspace)を使います。今回は、AlibabaCloudを例としてFUSE+Sambaで構築していきたいと思います。

目次

  1. AlibabaCloudのストレージ種類一覧
  2. FUSEとは
  3. AlibabaCloudのFUSEベースのツール
  4. 実装する手順
  5. さいごに

1. AlibabaCloudのストレージ種類一覧

まずはAlibabaCloudのストレージをまとめて、レイテンシー順で並んでいます。
オブジェクトストレージレイテンシーが一番高いですが、料金は最も低価格で利用できます。
今回はこのオブジェクトストレージを仮想サーバーにマウントして、ファイルサーバーを構築していきます。

  1. ローカルストレージ: ECSのローカルディスク
  2. ブロックストレージ: ブロックストレージ
  3. ファイルストレージ: NAS
  4. オブジェクトストレージ: OSS

2. FUSEとは

オブジェクトストレージの特徴は、シンプルなキーバリューの構造で、安価なストレージとして提供しています。コンテンツ配信、ビッグデータ処理などに最適ですが、頻繁に更新するデータには向いていないという特徴があります。アクセスのレイテンシーは、ローカルストレージ、ブロックストレージやファイルストレージより高いため、仮想サーバーのストレージとしてマウントして使うのは向いていません。

ただし、何らかの理由でオジェクトストレージをサーバーにマウントしたいときには、FUSEが役に立ちます。
280px-FUSE_structure.svg.png
※画像出所:wikipedia
FUSE(Filesystem in Userspace)とは、、その名の通りユーザー空間にあるファイルシステムです。
OSは、セキュリティと安定性のために、メモリ領域である仮想アドレス空間をカーネル空間とユーザー空間に分離されています。通常、Linuxのファイルシステムはカーネル空間にあります。つまりファイルシステムに関するソースコードは、全部全てLinuxのカーネル空間にあります。FUSEの特徴は、ファイルシステムのロジック部分がユーザー空間にあることです。

メリット:
  1. 修正する際に、Linuxカーネルを更新する必要がありません
  2. 修正の自由度が高いです
デメリット:
  1. パフォーマンスが悪い

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. さいごに

オブジェクトストレージはレイテンシーがあるものの、費用対効果が優れているストレージです。一般的ではないですが、ニーズに合えばサーバー上にマウントして利用できます。またサーバー上によくアクセスするファイルをキャッシュしておけば、パフォーマンスがある程度改善されます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0