blobfuse を使用して Blob Storage をファイル システムとしてマウントする方法How to mount Blob storage as a file system with blobfuse

概要Overview

blobfuse は Azure Blob Storage 用の仮想ファイル システム ドライバーです。Blobfuse is a virtual file system driver for Azure Blob storage. blobfuse を使用すると、Linux ファイル システムからお客様のストレージ アカウント内の既存のブロック BLOB データにアクセスできます。Blobfuse allows you to access your existing block blob data in your storage account through the Linux file system. blobfuse は、フォワードスラッシュ '/' を区切り記号として使用する仮想ディレクトリ スキームを使用します。Blobfuse uses the virtual directory scheme with the forward-slash '/' as a delimiter.

このガイドでは、blobfuse を使用し、Linux 上で Blob Storage コンテナーをマウントしてデータにアクセスする方法を示します。This guide shows you how to use blobfuse, and mount a Blob storage container on Linux and access data. blobfuse の詳細については、「the blobfuse repository (blobfuse リポジトリ)」にある詳細を参照してください。To learn more about blobfuse, read the details in the blobfuse repository.

警告

blobfuse は、単に要求を BLOB REST API に変換するだけなので、100% の POSIX 準拠は保証されません。Blobfuse doesn't guarantee 100% POSIX compliance as it simply translates requests into Blob REST APIs. たとえば、名前変更操作は POSIX ではアトミックですが、blobfuse では違います。For example, rename operations are atomic in POSIX, but not in blobfuse. ネイティブなファイル システムと blobfuse の違いの完全な一覧については、blobfuse ソース コード リポジトリにアクセスしてください。For a full list of differences between a native file system and blobfuse, visit the blobfuse source code repository.

Linux に blobfuse をインストールするInstall blobfuse on Linux

blobfuse バイナリは、Linux の Ubuntu および RHEL ディストリビューション用の Microsoft ソフトウェア リポジトリで入手できます。Blobfuse binaries are available on the Microsoft software repositories for Linux for Ubuntu and RHEL distributions. このようなディストリビューションに blobfuse をインストールするには、一覧からいずれかのリポジトリを構成します。To install blobfuse on those distributions, configure one of the repositories from the list. 使用しているディストリビューション用のバイナリがない場合は、Azure Storage のインストール手順に従ってソース コードからバイナリをビルドすることもできます。You can also build the binaries from source code following the Azure Storage installation steps if there are no binaries available for your distribution.

blobfuse では、Ubuntu 14.04、16.04、および 18.04 へのインストールをサポートしています。Blobfuse supports installation on Ubuntu 14.04, 16.04, and 18.04. 次のコマンドを実行して、これらのバージョンのいずれかがデプロイされていることを確認します。Run this command to make sure that you have one of those versions deployed:

lsb_release -a

Microsoft パッケージ リポジトリを構成するConfigure the Microsoft package repository

Microsoft 製品用の Linux パッケージ リポジトリを構成します。Configure the Linux Package Repository for Microsoft Products.

例として、Enterprise Linux 6 ディストリビューション上では、次のようになります。As an example, on an Enterprise Linux 6 distribution:

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

同様に、.../rhel/7/... の URL を Enterprise Linux 7 ディストリビューションを指すように変更します。Similarly, change the URL to .../rhel/7/... to point to an Enterprise Linux 7 distribution.

Ubuntu 14.04 ディストリビューション上での別の例を次に示します。Another example on an Ubuntu 14.04 distribution:

wget https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

同様に、URL を .../ubuntu/16.04/... または .../ubuntu/18.04/... に変更して別のバージョンの Ubuntu を参照します。Similarly, change the URL to .../ubuntu/16.04/... or .../ubuntu/18.04/... to reference another Ubuntu version.

blobfuse をインストールするInstall blobfuse

Ubuntu/Debian ディストリビューション上では、次のようになります。On an Ubuntu/Debian distribution:

sudo apt-get install blobfuse

Enterprise Linux ディストリビューション上では、次のようになります。On an Enterprise Linux distribution:

sudo yum install blobfuse

マウントの準備Prepare for mounting

blobfuse では、ファイル システム内に、すべての開かれたファイルをバッファリングおよびキャッシュするための一時パスを必要とすることで、ネイティブのようなパフォーマンスを提供します。Blobfuse provides native-like performance by requiring a temporary path in the file system to buffer and cache any open files. この一時パスには、最もパフォーマンスの高いディスクを選択するか、または最高のパフォーマンスを得るために RAM ディスクを使用します。For this temporary path, choose the most performant disk, or use a ramdisk for best performance.

注意

blobfuse は、すべての開かれたファイルの内容を一時パスに格納します。Blobfuse stores all open file contents in the temporary path. すべての開かれたファイルを収容するための十分な領域を確保するようにしてください。Make sure to have enough space to accommodate all open files.

(省略可能) 一時パスに RAM ディスクを使用する(Optional) Use a ramdisk for the temporary path

次の例では、16 GB の RAM ディスクと blobfuse 用のディレクトリを作成します。The following example creates a ramdisk of 16 GB and a directory for blobfuse. ニーズに基づいてサイズを選択します。Choose the size based on your needs. この RAM ディスクにより、blobfuse は、サイズが最大 16 GB のファイルを開くことができます。This ramdisk allows blobfuse to open files up to 16 GB in size.

sudo mount -t tmpfs -o size=16g tmpfs /mnt/ramdisk
sudo mkdir /mnt/ramdisk/blobfusetmp
sudo chown <youruser> /mnt/ramdisk/blobfusetmp

一時パスとして SSD を使用するUse an SSD as a temporary path

Azure では、blobfuse に待機時間の短いバッファを提供するために、VM 上で使用可能な一時ディスク (SSD) を使用できます。In Azure, you may use the ephemeral disks (SSD) available on your VMs to provide a low-latency buffer for blobfuse. Ubuntu ディストリビューションでは、この一時ディスクは '/mnt' にマウントされます。In Ubuntu distributions, this ephemeral disk is mounted on '/mnt'. Red Hat および CentOS ディストリビューションでは、ディスクは '/mnt/resource/' にマウントされます。In Red Hat and CentOS distributions, the disk is mounted on '/mnt/resource/'.

ユーザーが一時パスにアクセスできることを確認してください。Make sure your user has access to the temporary path:

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

ストレージ アカウントの資格情報を構成するConfigure your storage account credentials

blobfuse では、資格情報が次の形式でテキスト ファイルに格納されている必要があります。Blobfuse requires your credentials to be stored in a text file in the following format:

accountName myaccount
accountKey storageaccesskey
containerName mycontainer

accountName は完全な URL ではなく、ご自分のストレージ アカウントのプレフィックスです。The accountName is the prefix for your storage account - not the full URL.

次を使用してこのファイルを作成します。Create this file using:

touch ~/fuse_connection.cfg

このファイルを作成して編集したら、他のユーザーが読み取れないよう、必ずアクセスを制限してください。Once you've created and edited this file, make sure to restrict access so no other users can read it.

chmod 600 fuse_connection.cfg

注意

Windows で構成ファイルを作成した場合は、dos2unix を実行してこのファイルをサニタイズし、Unix 形式に変換します。If you have created the configuration file on Windows, make sure to run dos2unix to sanitize and convert the file to Unix format.

マウント用の空のディレクトリを作成するCreate an empty directory for mounting

mkdir ~/mycontainer

マウントするMount

注意

マウント オプションの完全な一覧については、「the blobfuse repository (blobfuse リポジトリ)」を確認してください。For a full list of mount options, check the blobfuse repository.

blobfuse をマウントするには、ユーザーが次のコマンドを実行します。To mount blobfuse, run the following command with your user. このコマンドは、'/path/to/fuse_connection.cfg' で指定されたコンテナーを '/mycontainer' の場所にマウントします。This command mounts the container specified in '/path/to/fuse_connection.cfg' onto the location '/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

これで、通常のファイル システム API を使用してブロック BLOB にアクセスできるようになりました。You should now have access to your block blobs through the regular file system APIs. 既定で、ディレクトリをマウントしたユーザーがそのディレクトリにアクセスできる唯一の者であるため、アクセスがセキュリティ保護されます。The user who mounts the directory is the only person who can access it, by default, which secures the access. すべてのユーザーにアクセスを許可するには、オプション -o allow_other を使用してマウントできます。To allow access to all users, you can mount via the option -o allow_other.

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

次の手順Next steps