階層化ファイルの管理方法

この記事では、階層化ファイルの管理に関する質問があるユーザー向けのガイダンスを提供します。 クラウドを使った階層化の概念に関する質問については、Azure Files の FAQ に関するページを参照してください。

ファイルが階層化されているかどうかを確認する方法

セット ポリシーごとにファイルを階層化する必要があるかどうかは、1 時間に 1 回評価されます。 新しいサーバー エンドポイントの作成時には、次の 2 つの状況が考えられます。

  1. 新しいサーバー エンドポイントを初めて追加するとき、多くの場合、そのサーバーの場所にはファイルが存在します。 これらは、クラウドを使った階層化を開始する前にアップロードしておく必要があります。 ボリュームの空き領域ポリシーの動作は、すべてのファイルの初期アップロードが完了するまで始まりません。 ただし、オプションの日付ポリシーは、ファイルがアップロードされ次第、個々のファイルに対して動作し始めます。 この場合も 1 時間間隔が適用されます。

  2. 新しいサーバー エンドポイントを追加するとき、空のサーバーの場所を、データが含まれている Azure ファイル共有に接続できます。 サーバーへの初回ダウンロード時に名前空間をダウンロードし、コンテンツを呼び戻すことを選んだ場合は、名前空間がダウンロードされた後、ボリュームの空き領域ポリシーとオプションの日付ポリシーの制限に達するまで、最終更新タイムスタンプに基づいてファイルが呼び戻されます。

ファイルが Azure ファイル共有に階層化されたかどうかを確認するには、いくつかの方法があります。

  • ファイル上でファイル属性を確認します。 ファイルを右クリックして [詳細] に移動し、 [属性] プロパティまで下へスクロールします。 階層化されたファイルには、次のような属性設定があります。

    属性の文字 属性 定義
    A アーカイブ バックアップ ソフトウェアによって、ファイルがバックアップされる必要があることを示します。 この属性は、ファイルが階層化されているか、ディスク上に完全に格納されているかに関係なく、常に設定されます。
    P スパース ファイル ファイルがスパース ファイルであることを示します。 スパース ファイルとは、ディスク ストリーム上のファイルがほぼ空である場合に、効率的に使用するために NTFS が提供している特別な種類のファイルです。 ファイルは完全に階層化されているか、部分的に再現されているため、Azure File Sync ではスパース ファイルが使用されます。 完全に階層化されたファイルでは、ファイル ストリームがクラウドに格納されます。 部分的に再現されているファイルでは、ファイルの一部が既にディスク上に存在します。 これは、マルチメディア プレーヤーや圧縮ユーティリティなどのアプリケーションによってファイルが部分的に読み取られた場合に、発生する可能性があります。 ファイルがディスク上に完全に再現されている場合、Azure File Sync では、ファイルはスパース ファイルから通常のファイルに変換されます。 この属性は Windows Server 2016 以前でのみ設定されます。
    M データ アクセス時に再現 ファイルのデータがローカル ストレージ上に完全には存在しないことを示します。 ファイルを読み取ると、サーバー エンドポイントが接続されている Azure ファイル共有から、ファイルの内容の少なくとも一部がフェッチされます。 この属性は、Windows Server 2019 以降でのみ設定されます。
    L 再解析ポイント ファイルが再解析ポイントを保持していることを示します。 再解析ポイントは、ファイル システム フィルターによって使用される特殊なポインターです。 Azure File Sync では、ファイルが格納されるクラウドの場所を Azure File Sync のファイル システム フィルター (StorageSync.sys) に対して定義するために再解析ポイントを使用します。 これにより、シームレスなアクセスが可能になります。 Azure File Sync が使用されていることや、Azure ファイル共有に格納されているファイルへのアクセス方法をユーザーが知る必要はありません。 ファイルが完全に再現されている場合、Azure File Sync によって、そのファイルから再解析ポイントが削除されます。
    O オフライン ファイルのコンテンツの一部または全部がディスクに格納されていないことを示します。 ファイルが完全に再現されている場合、Azure File Sync によってこの属性は削除されます。

    [詳細] タブが選択された、ファイルの [プロパティ] ダイアログ ボックス

    Note

    また、属性フィールドをエクスプローラーのテーブル表示に追加することで、フォルダー内にあるすべてのファイルの属性を確認できます。 これを行うには、既存の列 ( [サイズ] など) を右クリックして、 [詳細] を選択し、ドロップダウン リストから [属性] を選択します。

    Note

    これらの属性はすべて、部分的に再現されたファイルにも表示されます。

  • fsutil を使用して、ファイル上の再解析ポイントを確認します。 前記のオプションで説明したように、階層化されたファイルには必ず再解析ポイントが設定されます。 再解析ポイントを使うと、Azure File Sync ファイル システム フィルター ドライバー (StorageSync.sys) で、サーバーのローカル環境に格納されていないコンテンツを Azure ファイル共有から取得できます。

    ファイルに再解析ポイントがあるかどうかを調べるには、管理者特権でのコマンド プロンプトまたは PowerShell ウィンドウで、fsutil ユーティリティを実行します。

    fsutil reparsepoint query <your-file-name>
    

    ファイルに再解析ポイントがある場合、"Reparse Tag Value: 0x8000001e" と表示されることが想定されます。 この 16 進値は、Azure File Sync が所有する再解析ポイントの値です。また、出力には、Azure ファイル共有上のファイルへのパスを表す再解析データが含まれます。

    警告

    fsutil reparsepoint ユーティリティ コマンドには、再解析ポイントを削除する機能も含まれています。 Azure File Sync のエンジニア チームによって指示されない限り、このコマンドは実行しないでください。 このコマンドを実行すると、データが失われる可能性があります。

ファイルまたはフォルダーを階層化から除外する方法

ファイルまたはフォルダーを階層化から除外し、Windows Server のローカル環境に残す場合は、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSyncGhostingExclusionList レジストリ設定を構成できます。 ファイルは、ファイル名、ファイル拡張子、またはパスで除外できます。

クラウドを使った階層化からファイルまたはフォルダーを除外するには、次の手順に従います。

  1. 管理者特権でのコマンド プロンプトを開きます。

  2. 次のいずれかのコマンドを実行して除外を構成します。

    階層化から特定のファイル拡張子 (例、.one、.lnk、.log) を除外するには、次のコマンドを実行します。
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync" /v GhostingExclusionList /t REG_SZ /d .one|.lnk|.log /f

    階層化から特定のファイル名 (例、FileName.vhd) を除外するには、次のコマンドを実行します。
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync" /v GhostingExclusionList /t REG_SZ /d FileName.vhd /f

    フォルダー (D:\ShareRoot\Folder\SubFolder など) の下にあるすべてのファイルを階層化から除外するには、次のコマンドを実行します: reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync" /v GhostingExclusionList /t REG_SZ /d D:\\ShareRoot\\Folder\\SubFolder /f

    ファイル名、ファイル拡張子、フォルダーの組み合わせ (例、D:\ShareRoot\Folder1\SubFolder1,FileName.log,.txt) を階層化から除外するには、次のコマンドを実行します。
    reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync" /v GhostingExclusionList /t REG_SZ /d D:\\ShareRoot\\Folder1\\SubFolder1|FileName.log|.txt /f

  3. クラウドの階層化の除外を有効にするには、次のコマンドを実行してストレージ同期エージェント サービス (FileSyncSvc) を再起動する必要があります。
    net stop filesyncsvc
    net start filesyncsvc

階層化されたダウンロード

除外したファイルの種類またはパターンは、そのサーバーから階層化されなくなります。 ただし、別のエンドポイントで変更または作成されたファイルはすべて、引き続き階層化されたファイルとしてダウンロードされ、階層化されたままになります。 これらのファイルは、除外ポリシーに基づいて徐々に呼び戻されます。

たとえば、PDF ファイルを除外した場合、サーバー上で直接作成した PDF ファイルは階層化されません。 ただし、別のサーバー エンドポイントや Azure ファイル共有など、異なるエンドポイントで作成した PDF ファイルは、引き続き階層化されたファイルとしてダウンロードされます。 これらの除外した階層化されたファイルは、その後の 3 から 4 日以内に完全に呼び戻されます。

どのファイルも階層化された状態にしたくない場合は、事前呼び戻しを有効にします。 この機能は、すべてのファイルの階層化されたダウンロードを禁止して、バックグラウンドの階層化を停止します。

詳細

  • Azure File Sync エージェントがフェールオーバー クラスターにインストールされている場合は、HKEY_LOCAL_MACHINE\Cluster\StorageSync\SOFTWARE\Microsoft\Azure\StorageSync の下に GhostingExclusionList レジストリ設定を作成する必要があります。
    • 例: reg ADD "HKEY_LOCAL_MACHINE\Cluster\StorageSync\SOFTWARE\Microsoft\Azure\StorageSync" /v GhostingExclusionList /t REG_SZ /d .one|.lnk|.log /f
  • レジストリ内の各除外は、パイプ (|) 文字で区切る必要があります。
  • 除外するパスを指定するときは、2 つの円記号 (\\) を続けて使用します。
    • 例: reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync" /v GhostingExclusionList /t REG_SZ /d D:\\ShareRoot\\Folder\\SubFolder /f
  • ファイル名またはファイルの種類の除外は、サーバー上のすべてのサーバー エンドポイントに適用されます。
  • 特定のフォルダーからのみファイルの種類を除外することはできません。
  • 除外は、既に階層化されているファイルには適用されません。 既に階層化されているファイルを取り消すには、Invoke-StorageSyncFileRecall コマンドレットを使用します。
  • サーバー上のテレメトリ イベント ログでイベント ID 9001 を使用して、構成されているクラウドを使った階層化の除外を確認します。 Telemetry イベント ログは、イベント ビューアーの Applications and Services\Microsoft\FileSync\Agent の下にあります。

クラウドを使った階層化の最終アクセス時刻の追跡からアプリケーションを除外する方法

アプリケーションからファイルへアクセスが行われると、ファイルの最終アクセス時刻がクラウドを使った階層化データベースで更新されます。 ファイル システムをスキャンするウイルス対策アプリケーションなどを使用すると、すべてのファイルの最終アクセス時刻が同じになるため、ファイルが階層化された時間に影響を及ぼします。

最終アクセス時刻の追跡からアプリケーションを除外するには、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync の下にある HeatTrackingProcessNamesExclusionList レジストリ設定にプロセスの除外を追加します。

例: reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\StorageSync" /v HeatTrackingProcessNamesExclusionList /t REG_SZ /d "SampleApp.exe|AnotherApp.exe" /f

Azure File Sync エージェントがフェールオーバー クラスターにインストールされている場合は、HKEY_LOCAL_MACHINE\Cluster\StorageSync\SOFTWARE\Microsoft\Azure\StorageSync の下に HeatTrackingProcessNamesExclusionList レジストリ設定を作成する必要があります。

例: reg ADD "HKEY_LOCAL_MACHINE\Cluster\StorageSync\SOFTWARE\Microsoft\Azure\StorageSync" /v HeatTrackingProcessNamesExclusionList /t REG_SZ /d "SampleApp.exe|AnotherApp.exe" /f

Note

データ重複除去と File Server Resource Manager (FSRM) のプロセスは既定で除外されています。 プロセス除外リストの変更は、システムによって 5 分ごとに適用されます。

ヒート ストアにアクセスする方法

クラウドを使った階層化では、ファイルへの最終アクセス時刻とアクセス頻度を使用して、どのファイルを階層化する必要があるかを判断します。 クラウド階層化フィルター ドライバー (storagesync.sys) によって、最後のアクセス時刻の追跡とクラウド階層化ヒート ストアへの情報の記録が行われます。 サーバーローカルの PowerShell コマンドレットを使用して、ヒート ストアを取得し、これを CSV ファイルに保存することができます。

同じボリューム上のすべてのファイルに対して、1 つのヒート ストアが存在します。 ヒート ストアは、場合によっては非常に大きくなります。 "最も変化しない" 項目数だけを取得する必要がある場合は、-Limit と数値を使い、ボリューム ルートではなくサブ パスでフィルタリングすることも検討します。

  • PowerShell モジュールをインポートします: Import-Module '<SyncAgentInstallPath>\StorageSync.Management.ServerCmdlets.dll'

  • ボリュームの空き領域: ボリュームの空き領域ポリシーを使用して、ファイルが階層化される順序を取得する場合: Get-StorageSyncHeatStoreInformation -VolumePath '<DriveLetter>:\' -ReportDirectoryPath '<FolderPathToStoreResultCSV>' -IndexName FilesToBeTieredBySpacePolicy

  • 日付ポリシー: 日付ポリシーを使用して、ファイルが階層化される順序を取得する場合: Get-StorageSyncHeatStoreInformation -VolumePath '<DriveLetter>:\' -ReportDirectoryPath '<FolderPathToStoreResultCSV>' -IndexName FilesToBeTieredByDatePolicy

  • 特定のファイルのヒート ストア情報を見つける: Get-StorageSyncHeatStoreInformation -FilePath '<PathToSpecificFile>'

  • 最終アクセス時刻の降順ですべてのファイルを表示する: Get-StorageSyncHeatStoreInformation -VolumePath '<DriveLetter>:\' -ReportDirectoryPath '<FolderPathToStoreResultCSV>' -IndexName DescendingLastAccessTime

  • バックグラウンドでの再現または PowerShell を使用したオンデマンドでの再現によって階層化ファイルを再現する際の順序を表示する: Get-StorageSyncHeatStoreInformation -VolumePath '<DriveLetter>:\' -ReportDirectoryPath '<FolderPathToStoreResultCSV>' -IndexName OrderTieredFilesWillBeRecalled

ファイルまたはディレクトリを強制的に階層化する方法

Note

階層化するディレクトリを選択すると、そのディレクトリ内の現在のファイルのみが階層化されます。 この時間より後に作成されたファイルは、自動的に階層化されません。

クラウドの階層化機能が有効な場合は、クラウド エンドポイントに指定されたボリューム空き領域の割合を達成するために、最終アクセス時刻と最終変更時刻に基づいてファイルが自動的に階層化されます。 手動で強制的にファイルを階層化することが必要な場合もあります。 長期間再使用する予定がない大きなファイルを保存して、当面ボリューム上に他のファイルとフォルダーのための領域を空けておきたい場合、手動による階層化が役立つ可能性があります。 次の PowerShell コマンドを使って、強制的に階層化できます。

Import-Module "C:\Program Files\Azure\StorageSyncAgent\StorageSync.Management.ServerCmdlets.dll"
Invoke-StorageSyncCloudTiering -Path <file-or-directory-to-be-tiered>

階層化ファイルをディスクに再現する方法

ディスクにファイルを再現する最も簡単な方法は、ファイルを開くことです。 Azure File Sync のファイル システム フィルター (StorageSync.sys) は、Azure ファイル共有からファイルをシームレスにダウンロードします。 マルチメディア ファイルや .zip ファイルなど、部分的に読み取りまたはストリーミングできるファイルの種類の場合、単にファイルを開いただけでは、ファイル全体が確実にダウンロードされたかどうかは判断できません。

Note

ショートカット ファイルが階層化されたファイルとしてサーバーにダウンロードされる場合、SMB 経由でファイルにアクセスするときに問題が発生する可能性があります。 これを軽減するため、3 日ごとに実行されてすべてのショートカット ファイルを呼び戻すタスクがあります。 ただし、階層化されたショートカット ファイルをもっと頻繁に呼び戻したい場合は、必要な頻度でこれを実行するスケジュールされたタスクを作成します。

Import-Module "C:\Program Files\Azure\StorageSyncAgent\StorageSync.Management.ServerCmdlets.dll" 
Invoke-StorageSyncFileRecall -Path <path-to-to-your-server-endpoint> -Pattern *.lnk

ファイルがローカル ディスクに完全にダウンロードされたかどうかを確認するには、PowerShell を使用して、強制的にファイルを完全に再現する必要があります。 複数のファイル (フォルダー内にあるすべてのファイルなど) を一度に再現したい場合にも、この方法が役立つことがあります。 Azure File Sync がインストールされているサーバー ノードへの PowerShell セッションを開き、次の PowerShell コマンドを実行します。

Import-Module "C:\Program Files\Azure\StorageSyncAgent\StorageSync.Management.ServerCmdlets.dll"
Invoke-StorageSyncFileRecall -Path <path-to-to-your-server-endpoint>

省略可能なパラメーター:

  • -Order CloudTieringPolicy では、最後に変更またはアクセスされたファイルが最初に呼び戻されて、現在の階層化ポリシーによって許可されます。
    • ボリュームの空き領域ポリシーが構成されている場合、ボリュームの空き領域ポリシー設定に達するまで、ファイルが呼び出されます。 たとえば、ボリュームの空き領域のポリシー設定が 20% の場合、ボリュームの空き領域が 20% に達すると、呼び戻しは停止します。
    • ボリュームの空き領域と日付のポリシーが構成されている場合、ボリュームの空き領域または日付のポリシー設定に達するまで、ファイルが呼び出されます。 たとえば、ボリュームの空き領域ポリシー設定が 20% で、日付ポリシーが 7 日の場合、ボリュームの空き領域が 20% に達するか、または 7 日以内にアクセスまたは変更されたすべてのファイルがローカルであれば、呼び出しは停止されます。
  • -ThreadCount では、並行して呼び戻すことができるファイルの数を指定します (スレッド数の制限は 32)。
  • -PerFileRetryCount では、現在ブロックされているファイルの呼び戻しを試行する頻度を指定します。
  • -PerFileRetryDelaySeconds では、呼び戻しを再試行する間隔を秒単位で指定し、常に前記のパラメーターと組み合わせて使う必要があります。

例:

Import-Module "C:\Program Files\Azure\StorageSyncAgent\StorageSync.Management.ServerCmdlets.dll"
Invoke-StorageSyncFileRecall -Path <path-to-to-your-server-endpoint> -ThreadCount 8 -Order CloudTieringPolicy -PerFileRetryCount 3 -PerFileRetryDelaySeconds 10

Note

  • サーバーをホストしているローカル ボリュームに、階層化されたデータをすべて呼び戻すのに十分な空き領域がない場合、Invoke-StorageSyncFileRecall コマンドレットは失敗します。

Note

階層化されたファイルを再呼び出しするには、1 Mbps 以上のネットワーク帯域幅が必要です。 ネットワーク帯域幅が 1 Mbps 未満の場合、ファイルの呼び戻しがタイムアウト エラーで失敗する可能性があります。

次のステップ