7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

駆け出しアーキテクトのやまぱんです。

先週 GA(General Available= 一般提供) になった BlobFuse の改良版である 新機能の BlobFuse2 環境を今回構築しましたので手順をメモします。

BlobFuse は Azure Blob Storage 用の仮想ファイル システム ドライバーです。 BlobFuse を使用して、Linux ファイル システムで既存の Azure ブロック BLOB データにアクセスします。

BlobFuse2 は、libfuse オープンソース ライブラリ (fuse3) を使用して Linux FUSE カーネル モジュールと通信するオープンソース プロジェクトです。 BlobFuse2 では、Azure Storage REST API を使用してファイル システム操作を実装します。

なお、今回は Azure VM 上の Linux (Ubuntu) VM を用いて環境を作成しましたが、 Azure 環境上のLinux以外でも可能なはずです。

2022/12/05 現在 日本語版のページは反映が遅れているためプレビュー表記のままです。
(そのうちきっと外れるはずッ!)

日本語版 https://learn.microsoft.com/ja-JP/azure/storage/blobs/blobfuse2-what-is
image.png
英語版 https://learn.microsoft.com/en-US/azure/storage/blobs/blobfuse2-what-is
image.png

今回利用した参考まとめページ

機能強化ポイント

下記 URL より抄訳
https://github.com/Azure/azure-storage-fuse/blob/main/README.md#blobfuse2-performance-compared-to-blobfusev1xx

  • git clone」操作が25%高速化(vscodeレポのクローニングでテスト済み)
  • ResNet50の画像分類が7~8%高速化(130万画像でテスト)。
  • 通常のファイルアップロードが10%高速化
  • ディレクトリ内の10億ファイルのリストアップを検証(v1.xでは未対応)。

準備

ストレージ アカウントの準備

ストレージ アカウントの作成

下記の設定でストレージ アカウントを作成
今回は blob を利用します。
image.png

ストレージ アカウント情報メモ

下記 をメモしておきます。

  • ストレージ アカウント名
  • コンテナー名
  • エンドポイント URL
  • アクセスキー

エンドポイント URL は下記から確認可能です。
image.png

アクセスキーは下記から確認可能です。
image.png

ストレージ アカウントのコンテナーの作成

マウントするコンテナー : fusetest を作成
image.png

Linux OS の Azure VM を作成

今回は Ubuntu 20.04 にて作成
image.png

ディレクトリ構成

”/home/test-admin” 配下ですべて作業。

image.png

下記 2 点はBlobFuse2 のインストール関連 (インストールすれば作成される)

  • azure-storage-fuse
  • blobfuse2-2.0.0-preview.3-Ubuntu-22.04-x86-64.deb(.1)

下記はそれぞれ作成する

  • fuse_temp :キャッシュ用のディレクトリを作成する mkdir ~/fuse_temp
  • fusecontainer:マウントするディレクトリを作成する mkdir ~/fusecontainer
  • config.yaml :構成ファイル(中身は後ほど記述する) touch ~/config.yaml

BlobFuse2 環境の構築

BlobFuse2 のインストール

root 権限 で下記のURLを参考にコマンドを実行する。
https://learn.microsoft.com/ja-jp/azure/storage/blobs/blobfuse2-how-to-deploy#install-blobfuse2

root 権限で行わない場合下記のような Error Message が発生しました。

$sudo apt-get install libfuse3-dev fuse3
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package fuse3 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

構成ファイル (config.yaml) の作成

下記が必要最低限の記述です。
環境に合わせて適宜変更してください。
また、# 行はコメントです。
Windows で構成ファイルを作成した場合は、dos2unix コマンドを実行してUnix 形式に変換してください。

config.yaml

azstorage:
#Required
  type: block
  account-name: rgXXXX  #ストレージ アカウント名
  container: fusetest  #ストレージ アカウントのコンテナー名
  endpoint: https://rgXXXXX.blob.core.windows.net #ストレージ アカウントの blob エンドポイント URL
  mode: key #利用する認証の種類
  account-key: o6XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= #ストレージ アカウントのアクセスキー

#Disk cache related configuration
file_cache:
#Required
  path: /home/test-admin/fuse_temp #キャッシュフォルダのパスを指定
config.yaml
# 必要な設定項目のみを含んだ最小限の設定ファイル

# 共通設定
allow-other: true

# 使用するコンポーネントのリスト
components:
  - libfuse
  - azstorage

# Azure Storageの接続設定
azstorage:
  type: block
  account-name: your_account_name
  account-key: your_account_key
  container: your_container_name
  endpoint: https://your_account_name.blob.core.windows.net

構成ファイルに関しての詳細は下記をご覧ください。下記よりデプロイに最低限必要 (required) なものを抽出したものが上記です。
https://github.com/Azure/azure-storage-fuse/blob/main/setup/baseConfig.yaml

ここから先は主に下記のコマンドを利用します。

現在マウントされていないことを確認

$blobfuse2 mount list

image.png

blob container をマウントする

$blobfuse2 mount ~/fusecontainer --config-file=~/config.yaml

image.png

すでにマウントされている場合下記のような Error Message がでた。

image.png

Mount: error invalid options [argument error: directory is already mounted
構成ファイルの書き方がおかしい場合下記のような Error Message がでた。
test-admin@VM-Ubuntu:~$ blobfuse2 mount ~/fusecontainer --config-file=~/config.yaml
 blobfuse2: A new version (2.0.1) is available. Consider upgrading to latest version for bug-fixes & new features. 
invalid config file [While parsing config: yaml: unmarshal errors:
  line 1: cannot unmarshal !!str account... into map[string]interface {}

マウントされたことを確認

$blobfuse2 mount list

image.png

ディレクトリとファイルを作成する

$mkdir test
$echo "hello world" > test/blob.txt

image.png

Azure Portal のストレージ アカウント → コンテナーより反映を確認

image.png

もちろん削除が反映されることも確認済です。

マウントされたことを確認

$blobfuse2 mount list

image.png

アンマウントし、現在マウントされていないことを確認

#アンマウント
sudo blobfuse2 unmount all 
#マウント確認
sudo blobfuse2 mount list  

image.png

最新版について

blobfuse2-2.0.0 は GA 版ですが、すぐにアップデートがあった模様。
https://github.com/Azure/azure-storage-fuse/releases

7
0
1

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
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?