BlobFuse2 を使用して Linux に Azure Blob Storage コンテナーをマウントする方法
この記事では、BlobFuse2 をインストールして構成し、Azure BLOB コンテナーをマウントし、コンテナー内のデータにアクセスする方法について説明します。 基本的な手順は次のとおりです。
BlobFuse2 をインストールする方法
BlobFuse2 をインストールするためのオプションは 2 つあります。
- Linux 用の Microsoft ソフトウェア リポジトリから BlobFuse2 をインストールする - これは、推奨されるインストール方法です。 BlobFuse2 は、いくつかの一般的な Linux ディストリビューションのリポジトリから入手できます。
- ソース コードから BlobFuse2 バイナリをビルドする - お使いのディストリビューションのリポジトリから入手できない場合、ソース コードから BlobFuse2 バイナリをビルドできます。
オプション 1: Linux 用の Microsoft ソフトウェア リポジトリから BlobFuse2 をインストールする
サポートされているディストリビューションについては、BlobFuse2 リリースに関するページを参照してください。
libfuse のサポートについては、BlobFuse2 の README のページを参照してください。
Linux のバージョンを確認するには、次のコマンドを実行します。
cat /etc/*-release
ディストリビューション用のバイナリがない場合は、オプション 2: ソース コードからバイナリをビルドすることができます。
リポジトリから 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 のインストール
オプション 2: ソース コードからバイナリをビルドする
ソース コードから BlobFuse2 バイナリをビルドするには:
依存関係をインストールする:
Git をインストールします。
sudo apt-get install git
BlobFuse2 依存関係をインストールします。
Ubuntu の場合:
sudo apt-get install libfuse3-dev fuse3 -y
リポジトリを複製します。
sudo git clone https://github.com/Azure/azure-storage-fuse/ sudo cd ./azure-storage-fuse sudo git checkout main
BlobFuse2 をビルドします。
go get go build -tags=fuse3
ヒント
Go をインストールする必要がある場合は、「Download and install Go (Go のダウンロードとインストール)」を参照してください。
BlobFuse2 を構成する方法
BlobFuse2 は、さまざまな設定を使用して構成できます。 いくつかの標準設定には以下が含まれます。
- ログの場所とオプション
- キャッシュ用の一時ファイル パス
- マウントする Azure ストレージ アカウントと BLOB コンテナーに関する情報
設定は、環境変数を使用して、または BlobFuse2 コマンドに渡されるパラメーターとして、YAML 構成ファイルに構成できます。 構成ファイルを使用する方法が推奨されます。
BlobFuse2 の各構成パラメーターとその指定方法の詳細については、次の記事を参照してください。
マウント用に BlobFuse2 を構成するには:
キャッシュを構成する
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 にマウントされたストレージを操作できます。 これは、ファイル パスの区切り記号としてスラッシュ (/
) を持つ仮想ディレクトリ スキームを使用し、次のような基本的なファイル システム操作をサポートします: mkdir
、opendir
、readdir
、rmdir
、open
、read
、create
、write
、close
、unlink
、truncate
、stat
、および 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) のサポートではすべて、階層型名前空間が有効になっているストレージ アカウントが必要です。