Azure File Storage のしくみ

このポストは、10 月 7 日に投稿された Inside Azure File Storage の翻訳です。

 

先日の AzureCon 2015 で、Azure File Storage の一般提供開始が発表されました。Azure File Storage は、Microsoft Azure の完全なマネージド サービス型クラウド ファイル共有機能です。今回の記事では、このサービスについて詳しくご紹介したいと思います。

Azure File Storage では、単なる Windows のファイル サーバー使用とは異なる手法が使われています。Azure Storage のスケーラビリティを活用するために、Azure File Storage には超大規模スケールの運用が可能な SMB 3.0 プロトコルが実装されています。内部的には、ファイルとディレクトリ メタデータを格納するために、Azure Table ストレージ (英語) のインフラストラクチャを使用しています。メタデータは、従来のファイル システムにより SMB 3.0 のクラスター化されたソリューションで管理されます。同様に、Azure File Storage は各ファイルのデータを Azure ページ BLOB に格納します。Azure Table ストレージと Blob ストレージはいずれも非常にスケーラビリティが高く、堅牢で耐久性も優れています。Azure File Storage にはこの特性が引き継がれており、真の意味でアクティブ/アクティブ モードで継続可能なファイル共有システムとなっています。

このように Azure の技術を Azure File Storage に実装することで、Azure ファイル共有に REST インターフェイスを使用できるというメリットがあります。REST API では SMB クライアントと同様に SMB のリース (英語)、バイト範囲のロック、変更通知などが尊重されるため、アプリケーションはクライアントが SMB インターフェイスを呼び出すと同時にこの REST インターフェイスをファイルに対して使用できます。

Azure File Storage のプレビュー バージョンでは SMB 2.1 プロトコルが実装されていましたが、一般提供されるバージョンでは、シームレスな暗号化と Persistent Handle のサポートを実現する SMB 3.0 が実装されています。通信中の SMB 暗号化には、クライアントとサーバーの両方で SMB 3.0 プロトコルまたはそれ以降をサポートしている必要があります。クライアントとサーバーは連携してセッションごとの暗号化キーを自動的に生成するため、この機能ではクライアント アプリケーションを変更する必要はありません。SMB 3.0 では、クライアントとサーバーの間の通信の機密性と整合性を保証するために、RFC4309 (英語) に従い、実績のある AES 128 CCM 暗号化アルゴリズムが使用されています。

暗号化機能が追加されたことにより、Azure データセンター以外のクライアントも man-in-the-middle 攻撃による傍受や改ざんを心配することなく Azure のファイル共有を使用できるようになります。ユーザーやアプリケーションは、通常どおりにクラウドでホストされているファイル共有をオンプレミスのクライアントから使用するだけです。この機能ではオンプレミスのファイル共有を Azure File Storage の構成に変更するだけでアプリケーションの一部をオンプレミスで使用できるため、「移行と切り替え」が促進されます。Azure 外部から Azure File Storage を使用すると、Azure 内部で使用している場合よりはレイテンシが明らかに大きくなりますが、ExpressRoute 接続を使用すると専用回線により速度と可用性の両面で高い品質を得ることができます。Azure 外部からファイル共有を使用する場合は 445 番ポート (TCP の送信側) を使用するため、このポートが ISP やファイアウォールでブロックされていないことを確認してください。

下の図では、オンプレミスと Azure データセンター内のクライアントそれぞれ 1 台ずつが同じ共有ファイルに接続しています。それぞれのクライアントが Azure File Storage の異なるフロントエンドに接続されていても、同じファイルに対して同時に読み込みおよび書き込みを実行する可能性があることを示しています。Azure File Storage では分散型の整合アルゴリズムを使用しており、同一の物理 SMB サーバーに接続したときと同様の整合性が保証されます。

SMB 3.0 のサポートにより Persistent Handle が導入されました。これは SMB 2.1 の Durable Handle が強化されたもので、Durable Handle の制限 (英語) の一部が撤廃されています。また、ネットワークの切断やサーバー障害が発生した場合、Azure File Storage はクライアントが切断前に永続的にコミットしていたデータを把握する処理を行いますが、このときクライアントが保持および送信する特殊な状態も Persistent Handle に含まれています。これは、正常にコミットされた要求が Azure File Storage で再実行されるとアプリケーション レベルでデータが破損するため、要求条件が変わらない場合に特に重要です。Persistent Handle は、Durable Handle と異なり透過的な再接続が可能です。

Azure File Storage の詳しい利用方法については、Windows 用 Azure File Storage の利用開始および Linux 用 Azure File Storage の利用開始 (英語) のページを参照してください。