Azure Blob Storage では、ネットワーク ファイル システム (NFS) 3.0 プロトコルがサポートされるようになりました。 このサポートにより、オブジェクト ストレージのスケールと価格で Linux ファイル システムの互換性が提供され、Linux クライアントは Azure 仮想マシン (VM) またはオンプレミスのコンピューターから Blob Storage にコンテナーをマウントできます。
ハイ パフォーマンス コンピューティング (HPC) などの大規模なレガシ ワークロードをクラウドで実行することは困難です。 その理由の 1 つは、アプリケーションでは、NFS などの従来のファイル プロトコルを使用してデータにアクセスすることが多いことです。 また、オブジェクト ストレージに重点を置いたネイティブ クラウド ストレージ サービスには、階層型名前空間と効率的なメタデータ操作を提供するファイル システムではなく、フラットな名前空間と広範なメタデータがあります。
Blob Storage で階層型名前空間がサポートされるようになりました。 NFS 3.0 プロトコルのサポートと組み合わせると、Azure を使用すると、大規模なクラウド オブジェクト ストレージ上でレガシ アプリケーションをはるかに簡単に実行できます。
Blob Storageで NFS 3.0 を使用するのに適したアプリケーションとワークロード
NFS 3.0 プロトコル機能は、シーケンシャル I/O を使用した高スループット、大規模、読み取り負荷の高いワークロードに最適化されています。 これは、待機時間が短いよりもスループットが重要な複数のリーダーや多数のスレッドを含むシナリオに最適です。 たとえば、次のような場合です。
ハイ パフォーマンス コンピューティング: HPC ジョブには、多くの場合、同じ大規模なデータセットを同時に読み取る何千ものコアが含まれます。 NFS 3.0 プロトコル機能では、オブジェクト ストレージのスループットを使用して、従来のファイル サーバーのボトルネックを排除します。 いくつかの例を次に示します。
- ゲノムシーケンシング: 大量の DNA データセットの処理。
- 財務リスク モデリング: 履歴データに対するモンテカルロ シミュレーションの使用。
- 地震解析: 石油およびガス探査のための地質データの分析。
- 天気予報: 気候と嵐の予測のための大気データのモデリング。
ビッグ データと分析 (データ レイク): 多くの分析ツールには階層ディレクトリが必要です。 BlobNFS (Azure Data Lake Storage Gen2 経由) は、標準のファイル プロトコルをサポートしながら、この構造を提供します。 いくつかの例を次に示します。
- 機械学習: 標準ファイル I/O を使用して GPU クラスターにトレーニング データをフィードします。
- ログ分析: 何千ものソースからのログの集計。
Advanced Driver Assistance Systems (ADAS):ADAS ワークフローでは、LiDAR ポイント クラウドや高解像度カメラ フィードなど、ペタバイト単位のシーケンシャル センサー データが生成されます。 シミュレーションとモデルトレーニングのために、データを効率的に取り込み、大規模に分析する必要があります。 たとえば、NFS 3.0 を使用して自律テスト車両から生の LiDAR スキャンとマルチカメラ ビデオ ストリームを格納し、数千のコンピューティング ノードで大規模な再生シミュレーションを実行して知覚アルゴリズムを検証します。
メディアとエンターテイメント: レンダリング ファームでは、大規模なアセット ライブラリに効率的にアクセスする必要があります。 NFS 3.0 over BLOB は、ファイル パスを必要とするレガシ レンダリング ツール用のファイル インターフェイスを提供します。 いくつかの例を次に示します。
- ビデオ レンダリング: 分散ノードを使用したソース 資産の読み取り。
- コード変換: 大きな生のビデオ ファイルをストリーミング形式に変換します。
データベース バックアップ: 複雑なコネクタやコストの高いスナップショットを含まない、コスト効率に優れた高スループット NFS 3.0 ターゲット。 Oracle RMAN は、長期アーカイブのために大規模なバックアップ部分を直接書き込み、NFS マウントされた Linux VM からの直接復元を可能にすることができます。
Blob Storageで NFS 3.0 を使用しない場合
オブジェクト ストレージの特性により、汎用ファイル共有またはトランザクション ワークロードには使用しないでください。
| ワークロードの種類 | 理由 | より良い代替手段 |
|---|---|---|
| トランザクション データベース | 細かいロック、ミリ秒未満の待機時間、および頻繁なランダム書き込みが必要です。 | マネージド ディスクまたは Azure NetApp Files または Azure Files |
| インプレース ファイルの編集 | ファイルを編集すると、BLOB の完全な書き換えが強制され、操作が非効率的になります。 | Azure Files |
NFS 3.0 と階層型名前空間
NFS 3.0 プロトコルのサポートでは、BLOB を階層型名前空間に編成する必要があります。 ストレージ アカウントを作成するときに、階層型名前空間を有効にできます。
Azure Data Lake Storage では、階層型名前空間を使用する機能が導入されました。 これにより、コンピューター上のファイル システムを編成するのと同じ方法で、オブジェクト (ファイル) がディレクトリとサブディレクトリの階層に編成されます。 階層型名前空間は、スケールが線形で、データ容量もパフォーマンスも低下しません。 階層型名前空間からさまざまなプロトコルが拡張されます。 NFS 3.0 プロトコルは、使用可能なプロトコルの 1 つです。
ブロック BLOB として格納されるデータ
NFS 3.0 プロトコルを使用してアプリケーションが要求を行うと、その要求はブロック BLOB 操作の組み合わせに変換されます。 たとえば、NFS 3.0 読み取りリモート プロシージャ コール (RPC) 要求は Get Blob 操作に変換されます。 NFS 3.0 書き込み RPC 要求は、Get Block List、Put Block、Put Block List の組み合わせに変換されます。
ブロック BLOB は、読み取り負荷の高い大量のデータを効率的に処理するように最適化されています。 ブロック BLOB はブロックで構成されています。 ブロック ID は、各ブロックを識別します。 ブロック BLOB には、最大 50,000 個のブロックを含めることができます。 ブロック BLOB 内の各ブロックのサイズは、お客様のアカウントで使用されているサービスのバージョンで許可される最大サイズまで変更できます。
| NFSv3 RPC | REST API 操作 |
|---|---|
| メタデータと属性 | |
Nfs3GetAttr |
Get Blob Properties |
Nfs3SetAttr |
Set Blob Properties (ファイル サイズが設定されている場合は、 Nfs3Write が呼び出されます)。 |
Nfs3Lookup |
Get Blob Properties |
Nfs3Access |
Get Blob Properties |
Nfs3Readlink |
Get Blob Properties |
Nfs3FsStat |
Get Blob Properties |
Nfs3Fsinfo |
Get Blob Properties |
Nfs3Pathconf |
Get Blob Properties |
| ディレクトリ列挙 | |
Nfs3ReadDir |
List Blobs |
Nfs3ReadDirPlus |
List Blobs |
| 読み取り操作 | |
Nfs3Read |
Get Blob |
Nfs3ReadLink |
Get Blob Properties
+
Get Blob 基になるファイルの |
| 書き込み操作 | |
NFs3Write |
Get Block List (1) + Put Block (x) + Put Block List (1) |
Nfs3Commit |
操作なし。 |
| ファイルのライフサイクル | |
Nfs3Create |
Put Blob + Get Blob Properties |
Nfs3Remove |
Delete Blob |
Nfs3Rename |
サポートされていません (1 対 1 のマッピングなし)。 |
Nfs3Link |
サポートされていません。 |
| ディレクトリの管理 | |
Nfs3MkDir |
Put Blob + Get Blob Properties |
Nfs3RmDir |
Put Blob |
| その他 | |
Nfs3SymLink |
Put Blob + Get Blob Properties |
Nfs3MkNod |
サポートされていません。 |
Nfs3Null |
操作は実行されません。 |
キャッシュ ヒットまたはミスの結果は、他の Get Blob Properties 要求をトリガーして、操作前属性と操作後属性を取得する可能性があります。 いくつかの変数は、エンドツーエンド操作 (ファイルの読み取りまたは書き込みなど) の Blob Storage トランザクション数に影響を与え、反復によって異なる場合があります。 代表的なワークロードのトランザクション数を見積もるために、サンプル シナリオでは Blob Storage ログを使用します。
一般的なワークフロー: ストレージ アカウント コンテナーをマウントする
Linux クライアントは、Azure VM またはオンプレミスのコンピューターから Blob Storage にコンテナーをマウントできます。 ストレージ アカウント コンテナーをマウントするには、次のタスクを実行します。
- Azure 仮想ネットワークを作成します。
- ネットワーク セキュリティを構成します。
- 仮想ネットワークからのトラフィックのみを受け入れるストレージ アカウントを作成して構成します。
- ストレージ アカウントにコンテナーを作成します。
- コンテナーをマウントします。
詳細なガイダンスについては、「 ネットワーク ファイル システム (NFS) 3.0 プロトコルを使用した Blob Storage のマウント」を参照してください。
ネットワークのセキュリティ
トラフィックは仮想ネットワークから送信される必要があります。 仮想ネットワークを使用すると、クライアントはストレージ アカウントに安全に接続できます。 アカウント内のデータをセキュリティで保護する唯一の方法は、仮想ネットワークとその他のネットワーク セキュリティ設定を使用することです。 アカウント キーの承認、Microsoft Entra セキュリティ、アクセス制御リスト (ACL) など、データのセキュリティ保護に使用されるその他のツールは、NFS 3.0 要求の承認には使用できません。
詳細については、「 Blob Storage のネットワーク セキュリティに関する推奨事項」を参照してください。
注
ストレージ アカウントにアクセスするためのパブリック IP フィルター処理はサポートされていません。
サポートされているネットワーク接続
接続が次のいずれかのネットワークの場所から発信されている場合、クライアントはパブリック エンドポイントまたは プライベート エンドポイント 経由で接続できます。
ストレージ アカウント用に構成する仮想ネットワーク。
この記事では、その仮想ネットワークを プライマリ仮想ネットワークと見なします。 詳細については、「仮想ネットワークからアクセスの許可」を参照してください。
プライマリ仮想ネットワークと同じリージョンにあるピアリングされた仮想ネットワーク。
このピアリングされた仮想ネットワークへのアクセスを許可するようにストレージ アカウントを構成する必要があります。 詳細については、「仮想ネットワークからアクセスの許可」を参照してください。
Azure VPN Gateway または Azure ExpressRoute ゲートウェイを使用してプライマリ仮想ネットワークに接続されているオンプレミス ネットワーク。
詳細については、「 オンプレミス ネットワークからのアクセスを構成する」を参照してください。
ピアリングされたネットワークに接続されているオンプレミス ネットワーク。
VPN ゲートウェイまたはExpressRoute ゲートウェイをゲートウェイ転送と共に使用できます。
重要
NFS 3.0 プロトコルでは、ポート 111 および 2048 が使用されます。 オンプレミス ネットワークから接続する場合は、クライアントがそれらのポートを介した送信通信を許可していることを確認します。 特定の仮想ネットワークへのアクセスを許可した場合は、それらの仮想ネットワークに関連付けられているネットワーク セキュリティ グループに、それらのポートを介した受信通信をブロックするセキュリティ規則が含まれていないことを確認します。
既知の問題と制限事項
NFS 3.0 サポートの現在のリリースに関する問題と制限事項の完全な一覧については、「 既知の問題」を参照してください。
価格
データ ストレージとトランザクションのコストについては、 Azure Blob Storage の価格 に関するページを参照してください。