🍍

複数ファイルサーバー と 複数 Azure Files 間での Azure Files Sync の構成

2023/06/02に公開

はじめに

Azure File Sync は、オンプレミスのファイルサーバーと Azure Files を同期するためのサービスです。
例えば、オンプレミス側の拠点内に、Azure File Sync サーバー を設置することで、ファイル共有へのアクセスを LAN内で、高速に行えるようになります。


Azure File Sync 無し


Azure File Sync がある場合

また、既存ファイルサーバーに Azure File Sync を導入することで、ファイルサーバーの容量をクラウドに拡張することもできます。
エンドユーザーがアクセスするファイルサーバーは引き続きオンプレミスにありますが、Azure File Sync Agent を導入することで、ファイルサーバーのファイルを Azure Files に同期することができます。バックアップ/DR目的で Azure Files を利用したり、アクセス頻度が低い、不要なファイルは Azure Files に移動させることができます。
これにより実質的に、オンプレミスのファイルサーバーを Azure ファイル共有の高速キャッシュとして利用する構成になり、 LAN内でのファイルアクセスの高速性を維持したまま、容量をクラウドに拡張できます。


既存ファイルサーバーに Azure File Sync を導入して容量を拡張

Azure File Sync を試す

それでは、Azure File Sync を試してみます!

以下のような既存環境がある状態で、Azure File Sync を導入してみることを考えてみます。


File Sync 導入前の構成

  • 本社と支社のような異なる2拠点があり、それぞれにファイルサーバーがある構成。
  • share001 は 本社と支社双方で利用する、全社共用のファイル共有領域。 share002 は本社のみ、share003 は支社のみで利用するファイル共有領域です。
  • WAN回線経由で本社-支社が接続されていて、支社から、WAN回線を経由して本社ファイルサーバ(server001)の全社共用(share001) にアクセスしている。

本社と支社、双方のファイルサーバーに File Sync Agent を導入して、Azure Files に同期するようにします。

File Sync 導入後の構成

用途 サーバー ドライブ・フォルダ \\<サーバー名>\<ファイル共有> 同期している Azure Files
本社・支社共用ファイル共有 Server01 F:\share001 \\server01\share001 str001 内 share001
Server02 F:\share001 \\server02\share001 str001 内 share001
本社用ファイル共有 Server01 F:\share002 \\server01\share002 str002 内 share002
支社用ファイル共有 Server02 F:\share003 \\server02\share003 str002 内 share003
  • Azure 上には、3つの Storage Account を作成し、3つのAzure Files (share001, share002, share003) を作成し、それぞれオンプレミス側と同期させます。
  • 全社共用(share001) は、本社と支社双方のファイルサーバーに同期させ、支社からWAN回線を経由してアクセスすることがない構成にします。

前提条件: Azure Files Sync Agent をインストールできるサーバー と 同期できるデータソース

Azure Files Sync Agent をインストールして Azure File Sync サーバー にすることができるのは、 Windows Server 2012 R2 以降のサーバーです。
 → Windows ファイル サーバーに関する考慮事項

Azure Files Sync Agent をインストールすると、軽量な、2つのエージェントが動作します。
既存のファイルサーバーにインストールすることができます。

  • FileSyncSvc.exe は、サーバー エンドポイントの変更の監視と同期セッションの開始を担当するバックグラウンド Windows サービス
  • StorageSync.sys はクラウドの階層化と迅速なディザスター リカバリーを可能にするファイル システム フィルター

Azure File Sync Agent をインストールしたサーバー の ローカルボリューム のみ、Azure Files との同期先として指定ができます。

Storage 方式 データソース指定可否 参考URL
直接接続記憶域 (DAS) できる Windows Local ドライブとして認識されるドライブ サーバー エンドポイントを作成
ネットワーク接続ストレージ (NAS) できない ネットワーク越しにマウントする (\\ファイルサーバ\ファイル共有) のような領域 NASからの移行

そのため、例えば現在ファイルサーバーとして何らかのアプライアンスを利用しているといった場合では、いったんそのアプライアンスから Azure Files へデータを移行したうえで、新たに Azure File Sync Agent をインストールしたサーバー をオンプレミスに配置する、という手順が必要になります。
→ ファイル同期の一般的なシナリオと考慮事項

事前準備: ストレージアカウント の作成、Azure Files (ファイル共有) の作成、模擬オンプレ環境の用意

Azure 上に 3つの Azure Files を作成します。
ここでは手順省略してしまいますが、以下では step by step で紹介しています。

https://zenn.dev/microsoft/articles/azurefiles-getstart#step1.-azure-files-を作成する

また、File Sync 導入前の構成 として図示した環境も構成しておきます。
2台のサーバーを用意し、ファイル共有領域を作成しておきます。

用途 サーバー ドライブ・フォルダ \\<サーバー名>\<ファイル共有>
本社・支社共用ファイル共有 Server01 F:\share001 \\server01\share001
本社用ファイル共有 Server01 F:\share002 \\server01\share002
支社用ファイル共有 Server02 F:\share003 \\server02\share003

それぞれのファイル共有には適当にファイルとフォルダを作っておきました。

Step1. ストレージ同期サービス の作成

Azure 上に ストレージ同期サービス を作成します。
Azure Portal にて [sync] と検索し、[ストレージ同期サービス] を選択します。

[作成] へ進み、リソースグループ、ストレージ同期サービス名、リージョンを指定します。

[ネットワーク]タブでは、接続を Private Endpoint 経由にするかどうかを指定できます。
今回は、そのまま、インターネット経由で行ってしまいます。

すぐ、ストレージ同期サービスの作成が完了します。

Step2. 対象サーバーに Azure File Sync Agent をインストール

オンプレミスの対象サーバーに Azure File Sync Agent をインストールします。
対象サーバーは、IE セキュリティ強化の構成 を [無効] にしておきます。

対象サーバー上に、[Azure File Sync Agent の インストーラー を ダウンロード します。
以下のURLを開き、OS のバージョンに合わせて、ダウンロードします。

→ https://go.microsoft.com/fwlink/?linkid=858257

今回はオンプレミス側のファイルサーバー を Windows Server 2022 で構成しているため、 StorageSyncAgent_WS2022.msi をダウンロードしています。

ダウンロードしたインストーラーをダブルクリックし、インストールを行います。
今回は、全て既定値のままインストールを行っていますが、プロキシ経由の設定や、agent を自動的に更新するかどうかなどを指定できます。
エージェントのライフサイクルについてはこちら を参照してください。

インストールの画面








インストールが完了すると、エージェントの初期設定が開始されます。
エージェントのアップデートが必要な場合には、アップデート画面が表示されます。

Azure へのサインインを行い、ストレージ同期サービス への登録を行います。
Azure Cloud を選び、[Sign in] をクリックします。

サインイン画面が表示されます。
サインインするのは、ストレージ同期サービスに対する所有者または共同作成者の管理ロールのメンバーである必要があります。
必要な権限については公開ドキュメントを参照してください。
https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-deployment-guide?tabs=azure-portal%2Cproactive-portal#register-windows-server-with-storage-sync-service

サインインが完了すると、サブスクリプション、リソースグループ、ストレージ同期サービス を指定する画面が表示されます。
選択可能なものがプルダウンで表示されます。
Step1 で作成したストレージ同期サービスを選択し、[Register] をクリックします。

ストレージ同期サービスへの登録が完了しました。

Azure Portal で、ストレージ同期サービスの [サーバー] タブを開くと、登録したサーバーが表示されます。

メモ: Network connectivity test の Report

Discovery service connectivity result:
Result: Success
HostUri: https://sync4294management.japaneast.afs.azure.net:443
HostIPv4Addr: 20.43.66.0

Management service connectivity result:
Result: Success
HostUri: https://sync4294management.japaneast.afs.azure.net:443
HostIPv4Addr: 20.43.66.0
HostNetworkLatency [min,avg,max]: 31ms, 47ms, 60ms

Management data access service connectivity result for monitoring:
Result: Success
HostUri: https://sync4294monitoring.japaneast.afs.azure.net:443
HostIPv4Addr: 20.43.66.0

Telemetry storage connectivity result for monitoring:
Result: Success
HostUri: https://kailaniprodjpe1hm.blob.core.windows.net:443
HostIPv4Addr: 20.150.85.4,20.150.85.36,20.38.117.228

Diagnostic storage connectivity result for monitoring:
Result: Success
HostUri: https://kailaniprodjpe1dd.blob.core.windows.net:443
HostIPv4Addr: 20.150.85.4,20.38.117.228,20.150.85.36

Step3. 同期グループを作成する

同期グループを作成し、登録したサーバーと Azure Files の同期を設定していきます。
まずは、本社・支社共用のファイル共有についての同期を設定してみます。

用途 サーバー ドライブ・フォルダ \\<サーバー名>\<ファイル共有>
本社・支社共用ファイル共有 Server01 F:\share001 \\server01\share001

Azure Portal で、ストレージ同期サービスの [同期グループ] タブを開き、[+同期グループ] をクリックして、同期グループの作成をおこないます。
同期グループ名を入力し、クラウドエンドポイントとして、Azure Files をプルダウンで選択します。
本社・支社共用ファイル共有用の、Azure Files を選択します。

同期グループが作成されました。
続けて、サーバーエンドポイントを設定します。

[+サーバーエンドポイントの追加] より、追加をおこないます。
登録済みのサーバー をプルダウンで選択し、サーバーの[パス]を指定します。
Server01 の ファイル共有 share001 のパスは "F:\share001" ですので、これを指定します。

サーバーエンドポイントが追加されました。
早速同期がスタートしています。

しばらく待つと、同期が完了しました。

Azure Portal から Azure Files 内を確認すると、オンプレミスで作成していたファイルやフォルダが同期されていることが確認できました。

Step4. 2 台目のサーバーを同期に追加する

支店側のサーバー Server02 についても、Azure Files と同期させ、Azure Files を介して、本店側のサーバー Server01 とも同期できるよう構成してみます。
なお、支店側のサーバー Server02 では、もともと share001 というファイル共有は存在しない状況です。

Server02 側の F ドライブを確認しても、share001 はありません。

さて、Server02 にも Azure File Sync Agent をインストールします。(手順省略)
先ほど Step3 で作成した同期グループのサーバーエンドポイントとして、Server02 を追加します。
パスには、"F:\share001" を指定します。

Server02 が追加され、同期がはじまります。
改めて Server02 側の F ドライブを確認すると、パスとして指定した "F:\share001" が作成されています。

後は、このパスを使って、Server02 で新たにファイル共有を作成してあげます。
これで、Azure Files を介して、本店側のサーバー Server01 とも同期できている状況になりました。

用途 サーバー ドライブ・フォルダ \\<サーバー名>\<ファイル共有> 同期している Azure Files
本社・支社共用ファイル共有 Server01 F:\share001 \\server01\share001 str001 内 share001
Server02 F:\share001 \\server02\share001 str001 内 share001

Step5. 本社・支社共用ファイル共有の同期を確認する

動きを確認してみます。本社側の Server01 (画面中、上側)で、ファイルを作成してみます。

本社側の Server01 (画面中、上側)で ファイル を作成しましたが、まだ Server02 (画面中、下側)側には同期されていません。

20-30秒程で同期され、 Server02 (画面中、下側)側にも変更が反映されました。逆側、Server02 内にファイル等を作成した場合も同様です。

なお、同一ファイルを双方で編集するなど競合が発生した場合には、ファイルは共に保持されます。後から保存したファイルが、オリジナルとなり、先に保存されていたファイルには、ファイル名に "-サーバー名" が付与されて、ファイルが2つある形になります。

例えば以下のように、"新規作成したtxt" という同一ファイルに、異なる内容を記載してserver001側を先に保存し、その後server002側のファイルを保存したとします。

両サーバーが保存結果を Azure Files へ同期する際、Azure Files は、後に保存された server002側のファイルをオリジナルとします。先に保存されていたファイルには、"-server001" が付与され、"新規作成したtxt-server001" として保持されます。その後、両サーバーと Azure Files が同期され、両サーバーに "新規作成したtxt" 及び "新規作成したtxt-server001" が表示されます。
この際、Server001 側の "新規作成したtxt" の内容は、Server002 側で作成したものとなります。Server001 側で保存した内容は、 "新規作成したtxt-server001" に保持されています。

この動作については、公開ドキュメントにも記載があります。
https://learn.microsoft.com/ja-jp/azure/storage/files/storage-files-faq#azure-file-sync

同じファイルが 2 つのサーバー上でほぼ同時に変更されると、どうなりますか?
... 略 ...
ファイルに対して 2 つのエンドポイントで同時に変更を加えた場合、その両方の変更が保持されます。 最後に書き込まれた変更では、元のファイル名が維持されます。

Step6. 複数の同期グループを構成する

ストレージ同期サービス 内に 複数の 同期グループ を作成して、それぞれの同期グループで異なる Azure Files と同期することも可能です。

用途 サーバー ドライブ・フォルダ \\<サーバー名>\<ファイル共有> 同期している Azure Files
本社・支社共用ファイル共有 Server01 F:\share001 \\server01\share001 str001 内 share001
Server02 F:\share001 \\server02\share001 str001 内 share001
本社用ファイル共有 Server01 F:\share002 \\server01\share002 str002 内 share002
支社用ファイル共有 Server02 F:\share003 \\server02\share003 str002 内 share003

同期グループを構成します。
同期グループを 2つ 作り、クラウドエンドポイントとして異なる Azure Files 指定します。

それぞれの同期グループに、サーバーエンドポイントを追加します。

同期が完了し、異なる Azure Files と同期されていることが確認できます。


まとめ

Azure File Sync の構成方法を確認してみました。

  • オンプレミスのサーバーに Azure File Sync Agent をインストールし、Azure 上に作成した ストレージ同期サービス に登録する
  • ストレージ同期サービス内に 同期グループ を作成し、クラウドエンドポイント と サーバーエンドポイント の紐づけを行う
    という流れで、利用できることを確認できました。

今回確認したように、オンプレミスにある既存ファイルサーバーに Azure File Sync Agent をインストールすることで、エンドユーザーに影響を与えることなく、裏側で Azure Files と同期するよう構成することができます。

なお今回、サーバー2台 と Azure Files 3つ を同期させるために、同期サービス1つ と 同期グループ3つ を構成しました。
このサーバー、同期サービス、同期グループ、そして AzureFiles(クラウドエンドポイント) の関係は、

  • 1 つのサーバーは、1 つのストレージ同期サービスにのみ、登録できます。
  • 1 つのストレージ同期サービス内には、複数の同期グループを作成可能です。
  • 1 つの同期グループ内に、クラウドエンドポイントは 1つ、作成可能です。
  • 1 つの同期グループ内に、サーバーエンドポイントは 複数 作成可能です。
    という制約があります。
    構成にあたっては、既存ファイル共有を、どの Azure Files へ同期させるのか、検討が必要です。

参考URL

https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-extend-servers

https://learn.microsoft.com/ja-jp/azure/storage/files/storage-files-faq

https://learn.microsoft.com/ja-jp/azure/storage/file-sync/file-sync-planning

https://jpaztech.github.io/blog/storage/storageFileSyncFAQ/

Microsoft (有志)

Discussion