適用対象: Azure Local 2311.2 以降
この記事では、Resilient File System (ReFS) の重複除去と圧縮の機能について、および Azure Local でこの機能を使用してストレージを最適化する方法について説明します。
ReFS の重複除去と圧縮とは
ReFS の重複除去と圧縮とは、ストレージ使用量を最適化し、ストレージ コストを削減するのに役立つストレージ最適化機能です。 重複除去は特に、パフォーマンスに影響されやすいアクティブなワークロード、または読み取り負荷の高いワークロード (Azure Local 上の Azure 仮想デスクトップ インフラストラクチャ (VDI) など) に使用します。 パフォーマンス負荷の低いワークロードの場合は、重複排除と圧縮の組み合わせを使用するか、圧縮のみを使用できます。
この機能では ReFS ブロックの複製を使用して、データ移動を減らし、メタデータのみの操作を有効にします。 この機能はデータのブロック レベルで動作し、システム サイズに応じた固定ブロック サイズを使用します。 圧縮エンジンは、ブロックが圧縮の対象となるかどうかを識別するためのヒートマップを生成し、CPU 使用率を最適化します。
ReFS の重複除去と圧縮は、1 回限りのジョブとして実行することも、スケジュールされたジョブで自動化することもできます。 この機能は、オールフラッシュ システムとハイブリッド システムの両方で機能し、双方向ミラー、入れ子になった双方向ミラー、3 方向ミラー、ミラー高速パリティなど、さまざまな回復性の設定をサポートします。
メリット
ReFS の重複除去と圧縮を使用する利点を次に示します。
- アクティブなワークロードのストレージ節約。 VDI などのアクティブなワークロード用に設計されており、要求の多い環境でも効率的なパフォーマンスを保証します。
- 複数のモデル。 重複排除のみ (既定のモード)、圧縮のみ、重複排除と圧縮という 3 つのモードで動作し、ニーズに応じて最適化できます。
- 増分重複除去。 ボリューム全体を毎回スキャンするのではなく、新しいデータまたは変更されたデータのみを重複排除するため、ジョブの期間が最適化され、システム パフォーマンスへの影響が軽減されます。
前提条件
開始する前に、次の前提条件が満たされていることを確認します。
- デプロイされ登録されている Azure Local インスタンスにアクセスできる。
- インスタンス上にクラスターの共有ボリューム (CSV) が作成され、それにアクセスできる。
- CSV では、Windows のデータ重複除去機能がまだ有効になっていない。
ReFS の重複排除と圧縮の使用
Windows Admin Center または PowerShell を介して、ReFS の重複除去と圧縮を使用できます。 PowerShell では手動ジョブと自動化されたジョブの両方を使用できますが、Windows Admin Center ではスケジュールされたジョブのみがサポートされます。 方法に関係なく、ジョブ設定をカスタマイズし、ファイル変更追跡を利用して、後続の実行を迅速化できます。
注
パフォーマンスが考慮されるワークロードでは、圧縮を使用したり両方を組み合わせて使用したりするのではなく、重複排除のみを使用することをお勧めします。
ReFS の重複除去と圧縮を有効にして実行する
Windows Admin Center では、ボリュームの作成時に、既存のボリュームまたは新しいボリュームに ReFS 重複除去の実行スケジュールを作成できます。 ただし、圧縮の有効化は PowerShell を使用する場合のみサポートされます。
次の手順に従って、Windows Admin Center を使用して ReFS 重複除去を有効にし、実行スケジュールを設定します。
システムに接続し、左側の [ツール] ペインで [ボリューム] を選択します。
[ボリューム] ページで [インベントリ] タブを選択し、適切なボリュームを選んでから [設定] を選択します。 新しいボリュームに対して ReFS 重複除去を有効にするには、[+ 作成] を選択します。
右側の [ボリューム設定] ペインの [その他のオプション] ドロップダウンで、[ReFS 重複除去を使用する] チェックボックスをオンにします。
ReFS の重複除去を実行する曜日、ジョブの実行を開始する時刻、最大期間 (既定値は無制限) を選んだら、[保存] を選択します。
次のスクリーンショットは、ReFS の重複除去が 2024 年 9 月 27 日 (金) に開始され、金曜日と土曜日の午後 10 時に最大 2 時間実行されることを示しています。
[開始] の日付が 2024 年 9 月 30 日 (月) に変更された場合、最初の実行は 2024 年 9 月 30 日以降の最初の金曜日にあたる 2024 年 10 月 4 日の午後 10 時になります。
ボリュームの [プロパティ] セクションの変更を確認します。 スケジュールは [プロパティ] セクションに表示され、節約の内訳と次にスケジュールされた実行時間が表示されます。 これらの節約は実行のたびに更新され、[パフォーマンス] セクションのグラフでパフォーマンスへの影響を確認できます。 PowerShell で圧縮が有効になっている場合、その節約は [プロパティ] セクションにも表示されます。
PowerShell を使用して ReFS の重複除去と圧縮を使用するには、まず機能を有効にしてから、1 回限りの手動ジョブとして実行するか、スケジュールされたジョブとして実行を自動化します。 ジョブは、各システムの CSV レベルで設定され、モード、期間、システム リソース使用量などに基づいてカスタマイズできます。
ReFS の重複除去と圧縮の有効化
次の手順に従い、PowerShell を使用して ReFS の重複除去と圧縮を有効にします。
Azure Local インスタンスに接続し、管理者として PowerShell を実行します。
所有者ノードで特定のボリュームの設定を変更するには、すべてのコマンドを実行する必要があります。 次のコマンドレットを実行して、すべての CSV 所有者ノードとボリューム パスを表示します。
Get-ClusterSharedVolume | FT Name, OwnerNode, SharedVolumeInfo
コマンドレットの使用の出力例を次に示します。
Name OwnerNode SharedVolumeInfo
---- --------- ----------------
Cluster Virtual Disk (Volume1) hci-server1 {C:\ClusterStorage\Volume1}
次のコマンドレットを実行して、特定のボリュームで ReFS の重複除去と圧縮を有効にします。
Enable-ReFSDedup -Volume <path> -Type <Dedup | DedupAndCompress | Compress>
ここで、Type
は必須パラメータで、次のいずれかの値を取ることができます。
-
Dedup: 重複除去のみを有効にします。 既定のオプションです。
-
DedupAndCompress: 重複除去と圧縮の両方を有効にします。
-
Compress: 圧縮のみを有効にします。
Type
パラメーターを変更する場合は、最初に ReFS の重複除去と圧縮を無効にしてから、新しい Type
パラメーターを使用してもう一度有効にする必要があります。
たとえば、次のコマンドレットを実行し、ボリュームに対して重複除去と圧縮の両方を有効にします。
PS C:\Users\hciuser> Enable-ReFSDedup -Volume "C:\ClusterStorage\Volume1" -Type DedupAndCompress
ReFS の重複除去と圧縮を有効にした後、CSV でその状態を確認します。 次のコマンドレットを実行し、出力の Enabled
フィールドに True
と表示され、Type
フィールドに指定したモードが表示されていることを確認します。
Get-ReFSDedupStatus -Volume <path> | FL
Get-ReFSDedupStatus
コマンドレットの出力例を次に示します。Enabled
フィールドには True
と表示され、Type
フィールドには DedupAndCompress
と表示されます。
PS C:\Users\hciuser> Get-ReFSDedupStatus -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
Status : --
Used : 1.4 TiB
Deduped : 0 B
Compressed : 0 B
ScannedOnLastRun : 0 B
DedupedOnLastRun : 0 B
LastRunTime : N/A
LastRunDuration : N/A
MextRunTime : N/A
CompressionFormat : Uncompressed
CompressionLevel : 0
CompressionChunkSize : 0 B
VolumeClusterSizeBytes : 4 KiB
VolumeTotale lusters : 805289984
VolumeTotalAllocatedelusters : 353850628
VolumeTotalAllocatedCompressibleClusters : 0
VolumeTota1InUseCompressibleClusters : 0
VolumeTota1Compressedelusters : 0
ReFS の重複排除と圧縮の実行
この機能を有効にすると、1 回限りのジョブを手動で実行したり、必要に応じて定期的なジョブをスケジュールしたりできます。
実行する前に、次の点も考慮する必要があります。
- 圧縮形式を指定しない場合、既定のアルゴリズムは LZ4 になります。 必要に応じて、アルゴリズムを 1 つの実行から別の実行に変更できます。
- より複雑なユース ケースには追加のパラメーターを指定できます。 このセクションで使用するコマンドレットは、最も単純なユース ケース用です。
- "除外されたフォルダー"、"除外されたファイル拡張子"、および "最小最終変更時刻時間" のフィルターは重複除去の実行時にのみ適用され、圧縮の実行時には適用されません。
ReFS の重複除去と圧縮のジョブを手動で実行する
ジョブをすぐに開始するには、次のコマンドレットを実行します。 ジョブを開始すると、その State
はまだ初期化フェーズにある可能性があるため、NotStarted
と表示される場合があります。
Start-ReFSDedupJob -Volume <path> -Duration <TimeSpan> -CompressionFormat <LZ4 | ZSTD>
たとえば、次のコマンドレットは、LZ4 圧縮形式を使用して 5 時間のジョブをすぐに開始します。
PS C:\Users\hciuser> $Start = “10/31/2023 08:30:00”
PS C:\Users\hciuser> $Duration = New-Timespan -Hours 5
PS C:\Users\hciuser> Start-ReFSDedupJob -Volume "C:\ClusterStorage\Volume1" -Duration $Duration -CompressionFormat LZ4
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
12 Job12 NotStarted True Start-Re...
実行中のジョブを停止するには、次のコマンドレットを実行します。 このコマンドレットは、進行中のスケジュールされたジョブでも機能します。
Stop-ReFSDedupJob -Volume <path>
たとえば、次のコマンドレットは、前の例で開始したジョブを停止します。
PS C:\Users\hciuser> Stop-ReFSDedupJob -Volume "C:\ClusterStorage\Volume1"
ジョブの進行状況、節約量、および状態を表示するには、次のコマンドレットを実行します。
Get-ReFSDedupStatus -Volume <path> | FL
たとえば、次のコマンドレットはジョブの状態を表示します。
PS C:\Users\hciuser> Get-ReFSDedupStatus -Volume "C:\ClusterStorage\Volume1"
Volume Type Used Deduped Compressed Format
------ ---- ---- ------- ---------- ------
C:\ClusterStorage\Volume1 DedupAndCompress 1.38 TiB 0 B 0 B Unc...
定期的な ReFS 重複除去ジョブと圧縮ジョブをスケジュールする
ボリュームのストレージ最適化を実行するための定期的なスケジュールを設定します。 その後、ジョブ スケジュールを表示、設定または変更、中断、再開、あるいはクリアできます。
スケジュールを設定または変更するには、次のコマンドレットを実行します。
Set-ReFSDedupSchedule -Volume <Path> -Start <DateTime> -Days <DayOfWeek[]> -Duration <TimeSpan> -CompressionFormat <LZ4 | ZSTD> -CompressionLevel <UInt16> -CompressionChunkSize <UInt32>
たとえば、毎週木曜日の午前 8 時 30 分に 5 時間実行するようにスケジュールされた定期的なジョブを LZ4 形式で設定するには、次のコマンドレットを実行します。 ジョブを毎日実行する場合は、-Days EveryDay
を使用します。
PS C:\Users\hciuser> $Start = “10/31/2023 08:30:00”
PS C:\Users\hciuser> $Duration = New-Timespan -Hours 5
PS C:\Users\hciuser> Set-ReFSDedupSchedule -Volume C:\ClusterStorage\Volume1 -Start $Start Days "Thursday" -Duration $Duration -CompressionFormat LZ4
ジョブのスケジュールを表示するには、次のコマンドレットを実行します。
Get-ReFSDedupSchedule -Volume <path> | FL
前の例でスケジュールされたジョブの出力を次に示します。
PS C:\Users\hciuser> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 1
CompressionChunkSize : 4 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : 8:30:00 AM
Duration : 00m:00.000s
Days : Thursday
Suspended : False
スケジュールされたジョブの停止
スケジュールを停止すると、実行中のジョブがキャンセルされ、以降のスケジュールされた実行が停止します。 このオプションでは、ReFS の重複除去と圧縮に関連するメタデータが保持され、引き続きファイルの変更を追跡して将来の実行を最適化します。 スケジュール設定を保持したまま、いつでもスケジュールを再開できます。
Windows Admin Center を使用してスケジュールされたジョブを中断するには、次の手順に従います。
システムに接続し、左側の [ツール] ペインで [ボリューム] を選択します。
[ボリューム] ページで [インベントリ] タブを選択し、適切なボリュームを選んでから [設定] を選択します。
右側の [ボリューム設定] ペインの [その他のオプション] ドロップダウンで、[スケジュールの設定] チェックボックスの選択を解除し、[保存] を選択します。
次のコマンドレットを使用して、スケジュールされたジョブを停止し、PowerShell を使用して状態を確認します。
Suspend-ReFSDedupSchedule -Volume <path>
コマンドレットの使用の出力例を次に示します。
Suspended
フィールドには True
と表示されます。
PS C:\Users\hciuser> Suspend-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1"
PS C:\Users\user> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 1
CompressionChunkSize : 4 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : 8:30:00 AM
Duration : 00m:00.000s
Days : Thursday
Suspended : True
ボリュームに対して ReFS の重複除去と圧縮を無効にする
ボリュームに対して ReFS の重複除去と圧縮を無効にすると、進行中のすべての実行が停止し、今後スケジュールされているジョブが取り消されます。 さらに、関連するボリューム メタデータは保持されず、ファイル変更の追跡は停止します。
注
この機能を無効にしても、すべての操作はメタデータ レイヤーで行われるため、重複排除や圧縮は元に戻されません。 読み取りと書き込みが発生するのに伴い、重複排除されたデータは徐々に元の状態に戻ります。 データを圧縮解除するには、使用可能な十分な容量があることを確認し、ReFSUtil を使用して次の操作を実行します。
refsutil compression /c /f NONE <vol>
Windows Admin Center を使用して機能を無効にするには、次の手順に従います。
システムに接続し、左側の [ツール] ペインで [ボリューム] を選択します。
[ボリューム] ページで [インベントリ] タブを選択し、適切なボリュームを選んでから [設定] を選択します。
右側の [ボリューム設定] ペインの [その他のオプション] ドロップダウンで、[ReFS の重複除去を使用する] チェックボックスの選択を解除し、[保存] を選択します。
次のコマンドレットを使用して、スケジュールされたジョブを停止し、状態を確認します。
Disable-ReFSDedup -Volume <path>
コマンドレットの使用の出力例を次に示します。
Enabled
フィールドには False
と表示され、Type
には空白として表示されます。
PS C:\Users\hciuser> Disable-ReFSDedup -Volume "C:\ClusterStorage\Volume1"
PS C:\Users\hciuser> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : False
Type :
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 0
CompressionChunkSize : 0 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : N/A
Duration : N/A
Days : None
Suspended : False
よく寄せられる質問 (FAQ)
このセクションでは、ReFS の重複除去と圧縮に関してよく寄せられる質問に回答します。
ReFS の重複除去と圧縮の機能は、Windows のデータ重複除去とは異なりますか?
はい、この機能は Windows データ重複除去機能とはまったく異なります。
重要
ReFS の重複除去と圧縮、および Windows データ重複除去の両方を同時に有効にすることはできません。
ReFS の重複排除と圧縮は、アクティブなワークロード用に設計されており、最適化後のパフォーマンスへの影響を最小限に抑えることに重点を置いています。 Windows データ重複除去とは異なり、ReFS の重複除去と圧縮では、重複除去されたデータの格納にチャンク ストアは使用されず、物理的なデータ移動を伴いません。 この機能は、ReFS ブロックの複製に依存してメタデータのみの操作を可能にします。 Windows データ重複除去では可変ブロック サイズが使用されるためストレージの節約が向上する可能性があり、汎用ファイル サーバー (GPFS) やバックアップ ターゲットなど幅広いワークロードの種類にも適しています。
ReFS の重複排除と圧縮のフェーズは何ですか?
最適化プロセスは、指定されたモードに応じて順番に発生する次のフェーズで構成されます。 最適化の実行が時間制限に達すると、圧縮が実行されない可能性があります。
初期化。 このフェーズでは、ストレージ ボリュームがスキャンされ、冗長なデータ ブロックが識別されます。
データの重複除去。 このフェーズでは、冗長ブロックは単一インスタンス化され、ReFS ブロックの複製を使用して追跡されます。
圧縮。 このフェーズでは、ブロックが圧縮の対象となるかどうかを識別するためのヒートマップが生成されます。 既定の設定では、アクセス頻度の低いデータやコールド データを圧縮してサイズを縮小します。 圧縮レベルを変更して、圧縮の対象となるブロックの範囲を調整できます。
ボリュームが完全に最適化される前に時間制限に達した場合はどうなりますか?
時間制限は、営業時間中に最適化ジョブによって顧客のワークロードにパフォーマンスへの影響が及ばないようにするために設けられています。 重複排除サービスは、ボリュームの最適化された部分と受信ファイルの変更を監視します。 このデータは、最適化時間を短縮するために将来のジョブで利用されます。 たとえば、時間制限により、最初の実行でボリュームの 30% しか処理されない場合、後続の実行では残りの 70% と新しいデータが処理されます。
既知の問題
次のセクションでは、ReFS の重複除去と圧縮に現在存在する既知の問題を一覧で示します。
圧縮が有効になっている場合、最初の最適化の実行後にジョブで -FullRun
パラメーターを使用すると、システムでデッドロックが発生する可能性があります。
状態: オープン。
-FullRun
が Type
でない限り、手動で開始したジョブで Dedup
を使用しないでください。
この問題を軽減するには、一時的な回避策として次の手順に従います。
ボリュームに対して ReFS の重複除去と圧縮を無効にします。
Disable-ReFSDedup -Volume <path>
refsutil
を使用してボリュームの圧縮を解除します。
refsutil compression /c /f NONE <vol>
必要に応じて、Dedup
専用モードで ReFS の重複除去と圧縮をもう一度有効にします。
Enable-ReFSDedup -Volume <path> -Type Dedup
状態: オープン。
推奨されるベスト プラクティスとして、重複を避けるためにジョブの開始時間をずらすことを検討してください。 ただし、すべてのジョブを同時に実行する必要がある場合は、すべての CSV でジョブごとの CPU 割り当てを調整して、システム全体の CPU 使用率の 50% 未満になるようにします。 CPU の制限を設けると、ジョブの実行時間が長くなる可能性があることに注意してください。
ReFS の重複除去と圧縮のジョブが完了しました (正常に完了した、または取り消された) が、ストレージの節約が Get-ReFSDedupStatus
や Windows Admin Center に一覧表示されません。
状態: 解決済み。
この問題の一時的な回避策は、1 回限りのジョブを開始し、結果をすぐに更新することです。
Start-ReFSDedupJob -Volume <path>
ボリューム上の ReFS 重複除去と圧縮を無効にした後、Event Tracing for Windows (ETW) イベントの監視の送信が停止した。
状態: 解決済み。
ボリュームに対して ReFS の重複除去と圧縮が無効化されると、ReFS の重複除去の ETW チャネルは、停止した監視イベントを繰り返しログに記録します。 ただし、この問題による使用への大きな影響は予想されていません。
圧縮中にボリュームが別のノードに移動された場合、ジョブ失敗イベントがログに記録されません。
状態: 解決済み。
圧縮の進行中に CSV がシステムの別のマシンに移動された場合、ジョブ失敗イベントは ReFS の重複除去チャネルに記録されません。 ただし、この問題による使用への大きな影響は予想されていません。
次のステップ