Edited at

blobfuseつかってみた①~blobfuseとは?~

blobってストレージだよね?fuseってなんかきいたことあるような・・という感じからblobfuseをつかってみました:wink:

ひとまず①はblobfuseってなんじゃらふぉいというせつめいデス。


Blobfuseとは


ざっくりいうと…AzureBlob用のドライバ

さすがにAzureBlob用のドライバはざっくりしすぎですが、

BlobfuseとはAzureBlobStorage向けの仮想ファイルシステムを提供するためのLinux用のドライバです。オープンソースプロジェクトで開発されています。

(公式サイト) https://github.com/Azure/azure-storage-fuse(英語)


でも、なぜ仮想ファイルシステム用のドライバが必要なの?

Azure Blob Storage はオブジェクト ストレージ サービスであるため、Rest API経由でファイルを操作し、 "/"で区切った階層的な名前空間を持っていません。(=ファイルシステムがありません。)

ファイルシステムがないということはLinuxから利用しようと思ってもマウントできず、ファイルシステムがないのでmkdirしたりrenameなどでファイル名変更したりもできないんです:persevere:


そこで登場するのが Blobfuse デス。

大容量でお得なBlobStorage。RestAPI経由で操作するだけでなく、マウントしてファイル操作したいこともありますよね。そんな要望を実現するのがBlobfuse デス。


Blobfuse 仕組み

BlobfuseはLinux FUSE カーネルモジュールと通信するためのオープンソースライブラリ libfuse とAzure Storage Blob REST APIとを利用して、Blobストレージにフォワードスラッシュ '/' を区切り記号とした仮想ディレクトリ スキームによってこの名前空間を提供します。


Blobfuse 用法

公式ドキュメントからの抜粋になりますが、仮想ファイルシステムとしてマウントする以外にも下記のような用法があります。

Blob読み書きのキャッシュとして利用できるのは便利ですね:relaxed:

機能(公式ドキュメント翻訳)

- Linux上でのBlobストレージコンテナーのマウント

- Linuxのよくあるファイルシステムオペレーションの実現

 (mkdir, opendir, readdir, rmdir, open, read, create, write, close, unlink, truncate, stat, renameなど)

- アクセス時間を改善するためのローカルキャッシュ

- 大きなBlobへ高速にアクセスのための並列ダウンロードおよびアップロード

- 読み取り専用で複数のノードが同じコンテナをマウント


制約事項

Blobfuseはあくまで仮想的にファイルシステムを実現するドライバのため、標準仕様のposixに準拠していないことがあります。OSのファイルシステムの仕様=Blobfuseの仕様ではありません。

公式ページに使用が記載されていますのでご利用の際は検証の上ご利用ください><


次回は・・

お待ちかねのBlobfuseのインストール作業に入っていきます。


参考ドキュメント

blobfuseソースコードリポジトリ

blobfuse を使用して Blob Storage をファイル システムとしてマウントする方法(MS公式)