BlobFuse2 を使用して Linux に Azure Blob Storage コンテナーをマウントする方法

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

この記事では、BlobFuse2 をインストールして構成し、Azure BLOB コンテナーをマウントし、コンテナー内のデータにアクセスする方法について説明します。 基本的な手順は次のとおりです。

BlobFuse2 のインストール

BlobFuse2 の構成

BLOB コンテナーのマウント

データにアクセスする

BlobFuse2 をインストールする方法

BlobFuse2 をインストールするためのオプションは 2 つあります。

オプション 1: Linux 用の Microsoft ソフトウェア リポジトリから BlobFuse2 をインストールする

サポートされているディストリビューションについては、BlobFuse2 リリースに関するページを参照してください。

libfuse のサポートについては、BlobFuse2 の README のページを参照してください。

Linux のバージョンを確認するには、次のコマンドを実行します。

cat /etc/*-release

ディストリビューション用のバイナリがない場合は、オプション 2: ソース コードからバイナリをビルドすることができます。

リポジトリから BlobFuse2 をインストールするには:

Microsoft パッケージ リポジトリを構成する

BlobFuse2 のインストール

Microsoft パッケージ リポジトリを構成する

Microsoft 製品用の Linux パッケージ リポジトリを構成します。

例として、Redhat Enterprise Linux 8 ディストリビューション上では、次のようになります。

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm

同様に、.../rhel/7/... の URL を Redhat Enterprise Linux 7 ディストリビューションを指すように変更します。

BlobFuse2 のインストール

sudo yum install blobfuse2

オプション 2: ソース コードからバイナリをビルドする

ソース コードから BlobFuse2 バイナリをビルドするには:

  1. 依存関係をインストールする:

    1. Git をインストールします。

      sudo apt-get install git
      
    2. BlobFuse2 依存関係をインストールします。

      Ubuntu の場合:

      sudo apt-get install libfuse3-dev fuse3 -y
      
  2. リポジトリを複製します。

    sudo git clone https://github.com/Azure/azure-storage-fuse/
    sudo cd ./azure-storage-fuse
    sudo git checkout main
    
  3. BlobFuse2 をビルドします。

    go get
    go build -tags=fuse3
    

ヒント

Go をインストールする必要がある場合は、「Download and install Go (Go のダウンロードとインストール)」を参照してください。

BlobFuse2 を構成する方法

BlobFuse2 は、さまざまな設定を使用して構成できます。 いくつかの標準設定には以下が含まれます。

  • ログの場所とオプション
  • キャッシュ用の一時ファイル パス
  • マウントする Azure ストレージ アカウントと BLOB コンテナーに関する情報

設定は、環境変数を使用して、または BlobFuse2 コマンドに渡されるパラメーターとして、YAML 構成ファイルに構成できます。 構成ファイルを使用する方法が推奨されます。

BlobFuse2 の各構成パラメーターとその指定方法の詳細については、次の記事を参照してください。

マウント用に BlobFuse2 を構成するには:

  1. キャッシュを構成します
  2. BLOB コンテナーをマウントするための空のディレクトリを作成します
  3. ストレージ アカウントへのアクセスを認可します

キャッシュを構成する

BlobFuse2 は、ローカル ファイルキャッシュ手法を使用して、ネイティブに似たパフォーマンスを提供します。 キャッシュの構成と動作は、大きなファイルをストリーミングしているか、より小さいファイルにアクセスしているかによって異なります。

大きなファイルをストリーミングするためのキャッシュを構成する

BlobFuse2 では、ファイルのディスク キャッシュの代わりに、読み取り操作と書き込み操作のストリーミングがサポートされています。 ストリーミング モードでは、BlobFuse2 は読み取りと書き込みの両方で、大きなファイルのブロックをメモリにキャッシュします。 ストリーミングのキャッシュに関連する構成設定は、構成ファイルの stream: 設定にあります。

stream:
    block-size-mb:
        For read only mode, the size of each block to be cached in memory while streaming (in MB)
        For read/write mode, the size of newly created blocks
    max-buffers: The total number of buffers to store blocks in
    buffer-size-mb: The size for each buffer

基本的なストリーミング シナリオの一部の設定をすばやく開始するには、ストリーミング構成ファイルのサンプルに関するページを参照してください。

小さいファイルのキャッシュを構成する

小さいファイルは、構成ファイルの file_cache: で指定されている一時パスにキャッシュされます。

file_cache:
    path: <path to local disk cache>

注意

BlobFuse2 は、すべての開かれたファイルの内容を一時パスに格納します。 すべての開かれたファイルを収容するための十分な領域を確保するようにしてください。

ファイル キャッシュの一時パスを構成するには、次の 3 つの一般的なオプションがあります。

ローカルの高パフォーマンスのディスクを使用する

ファイル キャッシュに既存のローカル ディスクを使用する場合は、ソリッドステート ディスク (SSD) など、可能な限り最高のパフォーマンスを提供するディスクを選択してください。

RAM ディスクを使用する

次の例では、16 GB の RAM ディスクと BlobFuse2 用のディレクトリを作成します。 要件を満たすサイズを選択します。 BlobFuse2 は RAM ディスクを使用して、最大 16 GB のサイズのファイルを開きます。

sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfuse2tmp
sudo chown <youruser> /mnt/ramdisk/blobfuse2tmp
SSD を使用する

Azure では、BlobFuse2 に低遅延バッファーを提供するために、VM 上で使用可能な SSD エフェメラル ディスクを使用できます。 使用するプロビジョニング エージェントに応じて、cloud-init の場合は /mnt に、Microsoft Azure Linux エージェント (waagent) VM の場合は /mnt/resource にエフェメラル ディスクをマウントします。

ユーザーが一時パスにアクセスできることを確認してください。

sudo mkdir /mnt/resource/blobfuse2tmp -p
sudo chown <youruser> /mnt/resource/blobfuse2tmp

BLOB コンテナーをマウントするための空のディレクトリを作成する

BLOB コンテナーをマウントするための空のディレクトリを作成するには:

mkdir ~/mycontainer

ストレージ アカウントへのアクセスを認可する

コンテナーをマウントするユーザーのストレージ アカウントへのアクセス権を許可する必要があります。 アクセス権を許可する最も一般的な方法として、次のいずれかのオプションを使用します。

  • ストレージ アカウントのアクセス キー
  • 共有アクセス署名
  • マネージド ID
  • サービス プリンシパル

認可情報は、構成ファイルまたは環境変数で指定できます。 詳細については、「BlobFuse2 の設定を構成する」を参照してください。

BLOB コンテナーをマウントする方法

重要

BlobFuse2 では、重複するマウント パスはサポートされていません。 BlobFuse2 の複数のインスタンスを実行する場合、各インスタンスに一意で重複しないマウント ポイントがあることを確認します。

BlobFuse2 では、同じマウント パス上の NFS との共存はサポートされていません。 NFS と同じマウント パスで BlobFuse2 を実行した結果は未定義であり、データが破損する可能性があります。

BlobFuse2 を使用して Azure ブロック BLOB コンテナーをマウントするには、次のコマンドを実行します。 このコマンドは、./config.yaml で指定されたコンテナーを ~/mycontainer の場所にマウントします。

sudo blobfuse2 mount ~/mycontainer --config-file=./config.yaml

Note

マウント オプションの完全な一覧については、BlobFuse2 マウント コマンドに関する記事を確認してください。

これで、Linux ファイル システムおよび関連する API を使用してブロック BLOB にアクセスできるようになりました。 デプロイをテストするには、新しいディレクトリとファイルを作成してみてください。

cd ~/mycontainer
mkdir test
echo "hello world" > test/blob.txt

データにアクセスする方法

一般に、ネイティブ Linux ファイル システムと同様に、BlobFuse2 にマウントされたストレージを操作できます。 これは、ファイル パスの区切り記号としてスラッシュ (/) を持つ仮想ディレクトリ スキームを使用し、次のような基本的なファイル システム操作をサポートします: mkdiropendirreaddirrmdiropenreadcreatewritecloseunlinktruncatestat、および rename

ただし、主な機能の違いを認識しておく必要があります。

機能サポート

この表は、アカウントでのこの機能のサポート状況と、特定の機能を有効にした場合のサポートへの影響を示しています。

ストレージ アカウントの種類 BLOB Storage (既定のサポート) Data Lake Storage Gen2 1 NFS 3.0 1 SFTP 1
Standard 汎用 v2 はい イエス イエス はい
Premium ブロック BLOB はい イエス イエス はい

1 Azure Data Lake Storage Gen2、ネットワーク ファイル システム (NFS) 3.0 プロトコル、SSH ファイル転送プロトコル (SFTP) のサポートではすべて、階層型名前空間が有効になっているストレージ アカウントが必要です。

関連項目

次のステップ