BlobFuse v1 を使用して Azure Blob Storage をファイル システムとしてマウントする方法
重要
BlobFuse2 は BlobFuse の最新バージョンであり、この記事で説明している BlobFuse v1 バージョンよりも大幅な機能強化が多数あります。 BlobFuse2 で行われた機能強化については、「BlobFuse2 の機能強化」一覧を参照してください。
BlobFuse は Azure Blob Storage 用の仮想ファイル システム ドライバーです。 BlobFuse を使用すると、Linux ファイル システムからお客様のストレージ アカウント内の既存のブロック BLOB データにアクセスできます。 BlobFuse では、フォワードスラッシュ '/' を区切り記号として使用する仮想ディレクトリ スキームを使用します。
このガイドでは、BlobFuse v1 を使用し、Linux に Blob Storage コンテナーをマウントしてデータにアクセスする方法を示します。 BlobFuse v1 の詳細については、Readme と Wiki を参照してください。
警告
BlobFuse は、単に要求を BLOB REST API に変換するだけなので、100% の POSIX 準拠は保証されません。 たとえば、名前変更操作は POSIX ではアトミックですが、BlobFuse では違います。 ネイティブなファイル システムと BlobFuse の違いの完全な一覧については、BlobFuse ソース コード リポジトリにアクセスしてください。
Linux に BlobFuse v1 をインストールする
BlobFuse バイナリは、Ubuntu、Debian、SUSE、Oracle Linux、RHEL ディストリビューション向けの Linux 用の Microsoft ソフトウェア リポジトリで使用できます。 このようなディストリビューションに BlobFuse をインストールするには、一覧のいずれかのリポジトリを構成します。 使用しているディストリビューション用のバイナリがない場合は、Azure Storage のインストール手順に従ってソース コードからバイナリをビルドすることもできます。
BlobFuse は、次の Linux リポジトリで公開されています: Ubuntu バージョン: 16.04、18.04、20.04、RHEL バージョン: 7.5、7.8、7.9、8.0、8.1、8.2、Debian バージョン: 9.0、10.0、SUSE バージョン: 15、Oracle Linux 8.1。 次のコマンドを実行して、これらのバージョンのいずれかがデプロイされていることを確認します。
cat /etc/*-release
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 ディストリビューションを指すように変更します。
BlobFuse v1 をインストールする
マウントの準備
BlobFuse では、すべての開かれたファイルをバッファリングしてキャッシュするために、ファイル システム内で一時パスを要求することでネイティブのようなパフォーマンスを提供します。 この一時パスには、最もパフォーマンスの高いディスクを選択するか、または最高のパフォーマンスを得るために RAM ディスクを使用します。
Note
BlobFuse は、すべての開かれたファイルの内容を一時パスに格納します。 すべての開かれたファイルを収容するための十分な領域を確保するようにしてください。
(省略可能) 一時パスに RAM ディスクを使用する
次の例では、16 GB の RAM ディスクと BlobFuse 用のディレクトリを作成します。 ニーズに基づいてサイズを選択します。 この RAM ディスクにより、BlobFuse は最大 16 GB のサイズのファイルを開くことができます。
sudo mkdir /mnt/ramdisk
sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp
一時パスとして SSD を使用する
Azure では、BlobFuse に待機時間の短いバッファを提供するために、VM 上で使用可能なエフェメラル ディスク (SSD) を使用できます。 使用するプロビジョニング エージェントによっては、エフェメラル ディスクが cloud-init の場合は "/mnt" に、waagent VM の場合は "/mnt/resource" にマウントされます。
ユーザーが一時パスにアクセスできることを確認してください。
sudo mkdir /mnt/resource/blobfusetmp -p
sudo chown <youruser> /mnt/resource/blobfusetmp
ストレージ アカウントへのアクセスを認可する
アカウントアクセス キー、共有アクセス署名、マネージド ID、またはサービス プリンシパルを使用して、ストレージ アカウントへのアクセスを認可できます。 認可情報は、コマンド ライン、構成ファイル、または環境変数で指定できます。 詳細については、BlobFuse の Readme の有効な認証設定に関する記述を参照してください。
たとえば、アカウント アクセス キーを使用して認可し、それらを構成ファイルに格納するとします。 構成ファイルの形式は次のとおりです。
accountName myaccount
accountKey storageaccesskey
containerName mycontainer
authType Key
accountName
はストレージ アカウントの名前であり、完全な URL ではありません。 myaccount
、storageaccesskey
、および mycontainer
をストレージ情報で更新する必要があります。
次を使用してこのファイルを作成します。
sudo touch /path/to/fuse_connection.cfg
このファイルを作成して編集したら、他のユーザーが読み取れないよう、必ずアクセスを制限してください。
sudo chmod 600 /path/to/fuse_connection.cfg
Note
Windows で構成ファイルを作成した場合は、dos2unix
を実行してこのファイルをサニタイズし、Unix 形式に変換します。
マウント用の空のディレクトリを作成する
sudo mkdir ~/mycontainer
マウントする
Note
マウント オプションの完全な一覧については、「BlobFuse リポジトリ」を確認してください。
BlobFuse をマウントするには、ユーザーが次のコマンドを実行します。 このコマンドは、'/path/to/fuse_connection.cfg' で指定されたコンテナーを '/mycontainer' の場所にマウントします。
sudo blobfuse ~/mycontainer --tmp-path=/mnt/resource/blobfusetmp --config-file=/path/to/fuse_connection.cfg -o attr_timeout=240 -o entry_timeout=240 -o negative_timeout=120
Note
ADLS アカウントを使用する場合は、--use-adls=true
を含める必要があります。
これで、通常のファイル システム API を使用してブロック BLOB にアクセスできるようになりました。 既定で、ディレクトリをマウントしたユーザーがそのディレクトリにアクセスできる唯一の者であるため、アクセスがセキュリティ保護されます。 すべてのユーザーにアクセスを許可するには、オプション -o allow_other
を使用してマウントできます。
sudo cd ~/mycontainer
sudo mkdir test
sudo echo "hello world" > test/blob.txt
マウントの永続化
マウントを永続化する方法については、BlobFuse の Wiki の永続化に関する説明を参照してください。
機能サポート
Data Lake Storage Gen2、Network File System (NFS) 3.0 プロトコル、または SSH ファイル転送プロトコル (SFTP) を有効にすると、この機能のサポートが影響を受ける場合があります。 これらの機能のいずれかを有効にしている場合は、「Azure Storage アカウントでの Blob Storage 機能のサポート」 を参照して、この機能のサポートを評価してください。