ネットワーク ファイル システム (NFS) 3.0 プロトコルを使用して Blob Storage をマウントする

NFS 3.0 プロトコルを使用して、オンプレミスで実行される Linux ベースの Azure 仮想マシン (VM) または Linux システムから BLOB ストレージにコンテナーをマウントすることができます。 この記事では、ステップ バイ ステップ ガイダンスを提供しています。 Blob Storage での NFS 3.0 プロトコルのサポートの詳細については、「Azure Blob Storage でのネットワーク ファイル システム (NFS) 3.0 プロトコルのサポート」を参照してください。

手順 1: Azure 仮想ネットワーク (VNet) を作成する

ストレージ アカウントは VNet 内に含まれている必要があります。 VNet を使用すると、クライアントをストレージ アカウントに安全に接続できます。 VNet とその作成方法の詳細については、Virtual Network のドキュメントを参照してください。

注意

同じ VNet 内のクライアントは、アカウントにコンテナーをマウントできます。 オンプレミス ネットワークで実行されているクライアントからコンテナーをマウントすることもできますが、そのためにはまずオンプレミス ネットワークを VNet に接続する必要があります。 詳細については「サポートされているネットワーク接続」を参照してください。

手順 2: ネットワーク セキュリティの構成

アカウント内のデータをセキュリティで保護する唯一の方法は、VNet とその他のネットワーク セキュリティ設定を使用することです。 アカウント キーの承認、Azure Active Directory (AD) セキュリティ、アクセス制御リスト (ACL) などのデータをセキュリティで保護するために使用されるその他のツールは、NFS 3.0 プロトコルのサポートが有効にされているアカウントではまだサポートされません。

アカウントのデータをセキュリティで保護するには、次の推奨事項を参照してください。BLOB ストレージのセキュリティに関する推奨事項

手順 3: ストレージ アカウントの作成と構成

NFS 3.0 を使用してコンテナーをマウントするには、ストレージ アカウントを作成する必要があります。 既存のアカウントを有効にすることはできません。

NFS 3.0 プロトコルは、標準の汎用 v2 ストレージ アカウントおよび Premium ブロック BLOB ストレージ アカウントでサポートされています。 これらのストレージ アカウントの種類について詳しくは、「ストレージ アカウントの概要」を参照してください。

アカウントを構成するときに、次の値を選択します。

設定 Premium パフォーマンス Standard パフォーマンス
場所 利用可能なすべてのリージョン 利用可能なすべてのリージョン
パフォーマンス Premium Standard
アカウントの種類 BlockBlobStorage 汎用 v2
レプリケーション ローカル冗長ストレージ (LRS)、ゾーン冗長ストレージ (ZRS) ローカル冗長ストレージ (LRS)、ゾーン冗長ストレージ (ZRS)
接続方法 パブリック エンドポイント (選択されたネットワーク) またはプライベート エンドポイント パブリック エンドポイント (選択されたネットワーク) またはプライベート エンドポイント
階層型名前空間 Enabled Enabled
NFS V3 Enabled Enabled

他のすべての設定については、既定値をそのまま使用できます。

手順 4: コンテナーを作成する

次のいずれかのツールまたは SDK を使用して、ストレージ アカウントにコンテナーを作成します。

ツール SDK
Azure Portal .NET
AzCopy Java
PowerShell Python
Azure CLI JavaScript
REST

注意

既定では、新しいコンテナーのルート スカッシュ オプションは no root squash です。 ただし、root squash または all squash に変更できます。 これらのスカッシュ オプションの詳細については、オペレーティング システムのドキュメントを参照してください。

次の図は、Azure portal で表示されるスカッシュ オプションを示しています。

Azure portal でのスカッシュ オプション

手順 5: コンテナーをマウントする

Linux システムにディレクトリを作成してから、コンテナーをストレージ アカウントにマウントします。

  1. Linux システムで、ディレクトリを作成します。

    mkdir -p /mnt/test
    
  2. 次のコマンドを使用して、コンテナーをマウントします。

    mount -o sec=sys,vers=3,nolock,proto=tcp <storage-account-name>.blob.core.windows.net:/<storage-account-name>/<container-name>  /mnt/test
    
    • このコマンドに表示される <storage-account-name> プレースホルダーをストレージ アカウントの名前に置き換えます。

    • <container-name> プレースホルダーは、実際のコンテナーの名前に置き換えます。


一般的なエラーを解決する

エラー 原因 / 解決方法
Access denied by server while mounting サポートされているサブネット内でクライアントが実行されていることを確認します。 サポートされているネットワークの場所のページを参照してください。
No such file or directory mount コマンドとそのパラメーターを直接ターミナルに入力するようにしてください。 別のアプリケーションからこのコマンドの一部をコピーしてターミナルに貼り付けると、貼り付けた情報の非表示の文字が原因でこのエラーが発生することがあります。
Permision denied 新しく作成された NFS v3 コンテナーの既定のモードは 0750 です。 ルート以外のユーザーにはボリュームへのアクセス権がありません。 ルート以外のユーザーからのアクセスが必要な場合、ルート ユーザーがモードを 0755 に変更する必要があります。 サンプル コマンド: sudo chmod 0755 /mnt/<newcontainer>
EINVAL ("Invalid argument") このエラーは、クライアントが次の操作を試みたときに発生する可能性があります。
  • BLOB エンドポイントから作成された BLOB に書き込む。
  • スナップショットを持つ BLOB、またはアクティブな WORM (Write Once, Read Many) ポリシーを持つコンテナー内にある BLOB を削除する。
  • EROFS ("Read-only file system") このエラーは、クライアントが次の操作を試みたときに発生する可能性があります。
  • アクティブなリースを保持している BLOB に書き込むか、BLOB を削除する。
  • アクティブな WORM (Write Once, Read Many) ポリシーを持つコンテナー内にある BLOB に書き込むか、BLOB を削除する。
  • NFS3ERR_IO/EIO ("Input/output error") このエラーは、クライアントがアーカイブ アクセス層に格納されている BLOB への読み取り、書き込み、または属性の設定を試みた場合に発生する可能性があります。
    OperationNotSupportedOnSymLink エラー このエラーは、BLOB または Azure Data Lake Storage Gen2 API を介した書き込み操作中に返される可能性があります。 これらの API を使用して、NFS 3.0 を使用して作成されたシンボリック リンクへの書き込みや削除を行うことはできません。 シンボリック リンクを操作する際は、必ず NFS v3 エンドポイントを使用してください。
    mount: /mnt/test: bad option; sudo apt install nfs-common を使用して、nfs ヘルパー プログラムをインストールします。

    関連項目