皆さまごきげんよう、アーキテクトのやまぱんです。
今回は Azure を用いたファイルサーバークラウド化を検討するなかの候補の一つである Azure File sync を試してみます。AZ-104 とか AZ-800 などの Azure 系 MCP でも問われることの多いサービスですね。
補足コメントや質問、いいね、拡散、是非お願いします🥺!
間違ってたら優しく教えてください!
ファイルサーバークラウド化の選択肢
まず初めに、大きく Microsoft 関連のソリューションを用いたファイルサーバクラウド化には以下の選択肢があるかと思います。
ざっくりですが、下に行くほど高コストで高機能です。
(性能問題に悩みたくない場合はぜひ Azure NetApp Files をガンガン使いましょう。)
- SharePoint / OneDrive for Business
- Azure Files
- Azure Files + Azure File sync
- IaaS でのファイルサーバ構築
- Azure NetApp Files
今回は上記のうち、3つめの 「Azure Files +Azure File Sync」 の構成についてです。
また、Azure Files の中でも SKU がスタンダードファイル共有と高機能なプレミアムファイル共有などさらに種類があります。今回は スタンダードファイル共有を利用した Azure File Syncを構成してみます。
そもそも Azure File sync とは?
まず、「Azure File sync を使わなくても、Azure Files をファイルサーバにマウントして使えばいいじゃん」 と思われる人もいるかもしれません、事実それも可能です。ただし大規模な環境になると多くのユーザーがネットワーク(エンタープライズな環境であれば ExpressRoute や S2S VPNといった拠点間接続) 越しに Azure Files に直接アクセスすることが想定され、帯域不足などによる UX 低下が想定されます。
そうした時の選択肢の一つとなるのがAzure Files +Azure File sync の構成です。
Azure File sync を利用することで、使い勝手は従来のファイルサーバとほぼ同じように利用でき、LAN の高速性アクセスを利用しつつ、さらにオンプレファイル共有をクラウドに拡張できるものです。ユーザーは直接 Azure Files にアクセスするのではなく、オンプレサーバー(Azure File syncエージェントをインストールしたサーバー)にアクセスするようになります。
具体的にはオンプレのファイルサーバをキャッシュ機能のように利用し、必要に応じてクラウドからファイルをダウンロードすることができます。
後ほどの設定画面の画面ショットですが、以下のようにクラウドの階層化の機能により Azure File sync のキャッシュ機能ベネフィットを実現することができます。
具体的にどのレベル規模から Azure Files +Azure File Sync がいいのか?というのは同時アクセス数ユースケースなどにもよるので明確にはないですが、ユーザーが数百規模超えると検討をしてもいいのではと個人的には思います。数百規模を超える場合は基本的にはAzure File syncを使った方がいいと思いますが、結局はなるべく実環境を模した検証をするのが最もよいです。
Azure File Sync 主要コンポーネント
ざっくり説明。
- ストレージ アカウント / Azure Files Share (Azure ファイル共有): Azure のストレージサービス / ファイル共有ストレージ
- Windows Server(ファイルサーバー) : いわゆるオンプレファイルサーバで Azure File Sync エージェント をインストールする
- ストレージ同期サービス:Azure Portal から作成するモノで、Azure ファイル共有と ファイルサーバー のフォルダを紐づけて同期を行う
- クラウドエンドポイント:ストレージ同期サービスからみた紐づける Azure ファイル共有を指す
- サーバーエンドポイント:ストレージ同期サービスからみた紐づける ファイルサーバのフォルダを指す
Azure File Sync を構成する
では実際に簡易的にAzure File Syncを構成してみましょう。
詳細は以下 MS Learn に手順があります。
本ページではこの MS Learn の手順にそって、画面ショット多めにしていきたいと思います。
・前提条件 - Azure File sync のデプロイ
https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-deployment-guide?tabs=azure-portal%2Cproactive-portal#prerequisites
Azure File sync で使用するWindows Server の準備
なお、今回は Azure VM を利用している(OSは Windows Server 2019 Datacenter)
構築中は IEエンハンスドポリシーをOFFにしておく
ストレージ同期サービスのデプロイ(Azure Portal)
・ストレージ同期サービスのデプロイ
https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-deployment-guide?tabs=azure-portal%2Cproactive-portal#deploy-the-storage-sync-service
Azure Portal から ストレージ同期サービス を選択 → 作成
Azure File sync エージェントをインストールする(Windows Server)
下記からダウンロードできる。(PowerShellやAzure CLI でもインストール可能)
ダウンロードセンター:https://www.microsoft.com/en-us/download/details.aspx?id=57159
Edge から上記リンクにアクセスして対象OSのものをダウンロードして、インストールを始める
インストールが完了すると下記の画面、[OK] を押すと次のストレージ同期サービスへの登録画面になる。
Windows Server をストレージ同期サービスに登録する
同期グループとクラウドエンドポイントを作成する
・同期グループとクラウド エンドポイントを作成する
https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-deployment-guide?tabs=azure-portal%2Cproactive-portal#create-a-sync-group-and-a-cloud-endpoint
-
同期グループの作成 (Azure Portal)
Azure Portal → ストレージ同期サービス → 同期グループの作成
-
クラウドエンドポイントの作成 (Azure Portal)
作成された同期グループをクリックするとクラウドエンドポイントもできていることがわかる
サーバーエンドポイントを作成する
・サーバー エンドポイントを作成する
https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-deployment-guide?tabs=azure-portal%2Cproactive-portal#create-a-server-endpoint
サーバー エンドポイントは、登録済みサーバー上の特定の場所を表します。たとえば、サーバー ボリュームのフォルダーなどです。
先ほど作成した同期グループをクリックして、遷移先の画面から [+サーバーエンドポイントの追加] をクリックします。
[クラウドの階層化」と「初期同期」の詳細画面はこちら
クラウドの階層化について
• クラウドの階層化: クラウドの階層化を有効または無効にするスイッチ。 クラウドの階層化によって、使用頻度やアクセス頻度が低いファイルを Azure Files に階層化できます。 クラウドを使った階層化を有効にする場合は、クール ファイルを階層化するタイミングを Azure File Sync に知らせるために設定するポリシーとして、ボリュームの空き領域ポリシーおよび日付ポリシー の 2 つのポリシーがあります。
• ボリュームの空き領域: サーバー エンドポイントが配置されているボリュームに確保する空き領域のサイズ。 たとえば、1 つだけのサーバー エンドポイントがあるボリュームでボリュームの空き領域を 50% に設定すると、データの約半量が Azure Files に階層化されます。 クラウドの階層化が有効かどうかにかかわらず、Azure ファイル共有は、データの完全なコピーを常に同期グループ内に保持します。
- 日付ポリシー: 指定した日数アクセスされていない (これは読み書きされて) ファイルがクラウドに階層化されます。 たとえば、アクセスされずに 15 日以上経過したファイルが通常はアーカイブ ファイルであることがわかった場合は、日付ポリシーを 15 日に設定します。
完了すると Azure Portal → ストレージ同期サービス → 同期グループ から以下のように確認可能
完了!!
データの同期
今回、Azure File Sync に利用した Azure File Sync にはあらかじめ検証用のデータを入れて実施していましたので、早くファイルサーバー側にデータが同期されるのを期待したいところです。
ところがクラウドエンドポイント(Azure ファイル共有)からのデータの同期はリアルタイムでは行われません。
以下 URL に記載の通り、変更検出ジョブが 24 時間ごとに動いているためです。
・SMB またはポータルを使用して Azure ファイル共有上でファイルを直接作成しました。このファイルを同期グループのサーバーで同期するには、どのくらいの時間がかかりますか?
URL:https://learn.microsoft.com/ja-jp/azure/storage/files/storage-files-faq#azure-file-sync
抜粋詳細
- 今回は関係ないですが、「"Azure Files 単体利用(OSから直接マウント)" + "Azure Files + Azure File Sync" の併用構成」の場合上記に関連したファイル同期のタイミングの考慮をした運用が必要になります。
即時反映させたい!!!
ファイルサーバーから Invoke-AzStorageSyncChangeDetection コマンドを使うことで可能です。
- Invoke-AzStorageSyncChangeDetection
https://learn.microsoft.com/ja-jp/powershell/module/az.storagesync/invoke-azstoragesyncchangedetection?view=azps-12.2.0&viewFallbackFrom=azps-5.5.0
Invoke-AzStorageSyncChangeDetection -ResourceGroupName "<リソースグループ>" -StorageSyncServiceName "<ストレージ同期サービス名>" -SyncGroupName "<同期グループ名>" -Name "クラウドエンドポイント名"
クラウドエンドポイント名は下記で確認可能
Azure Portal → ストレージ同期サービス → 同期グループ → クラウドエンドに表示されているファイル共有の名前 をクリックし、「リソースID」をコピー&ペースト
/cloudEndpoints
に続く文字列が -name に入れるクラウドエンド名になります。
例:)/subscriptions/"Subscription ID"/resourceGroups/"リソースグループ名"/providers/Microsoft.StorageSync/storageSyncServices/Azure File sync Srv/syncGroups/SyncGroup/cloudEndpoints/xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
Azure File Sync Agent のログ
参考までに、イベントログで以下のように確認可能。
"Applications and Service Logs" → "Microsoft" → "File Sync" → "Agent"
関連 URL
役立つ URL を紹介します
- Azure File Sync のデプロイ
今回のメインとなるページです
- Azure File Sync よくあるお問合せ - FAQ 公式サポートブログ
- Azure File Sync のデプロイの計画
検討する際に必ず読むことをオススメします。
とくに、評価コマンドレットは実施することをオススメします。
- 複数ファイルサーバー と 複数 Azure Files 間での Azure Files Sync の構成
より実践的、発展的な内容に関しての MS 社員のブログです。
- Azure File Sync 虎の巻 ー 其ノ壱 JBS Tech Blog
- 共有、ディレクトリ、ファイル、メタデータの名前付けと参照 - MS Learn