Azure Local での ReFS 重複除去と圧縮を使用してストレージを最適化する
[アーティクル] 11/23/2024
2 人の共同作成者
フィードバック
この記事の内容
適用対象: Azure Local バージョン 23H2
この記事では、Resilient File System (ReFS) の重複除去と圧縮機能と、Azure Local でこの機能を使用してストレージを最適化する方法について説明します。
ReFS 重複除去と圧縮とは
ReFS 重複除去と圧縮は、Azure Local 上の Azure 仮想デスクトップ インフラストラクチャ (VDI) など、アクティブなワークロード専用に設計されたストレージ最適化機能です 。 この機能は、ストレージ使用量を最適化し、ストレージ コストを削減するのに役立ちます。
この機能では、 ReFS ブロックの複製 を使用してデータ移動を減らし、メタデータのみの操作を有効にします。 この機能はデータ ブロック レベルで動作し、システム サイズに応じて固定ブロック サイズを使用します。 圧縮エンジンによってヒートマップが生成され、ブロックが圧縮の対象になる必要があるかどうかを識別し、CPU 使用率に最適化されます。
ReFS 重複除去と圧縮は、1 回限りのジョブとして実行することも、スケジュールされたジョブで自動化することもできます。 この機能は、オール フラッシュ システムとハイブリッド システムの両方で機能し、双方向ミラー、入れ子になった双方向ミラー、3 方向ミラー、ミラー 高速パリティなど、さまざまな回復性設定をサポートします。
メリット
ReFS 重複除去と圧縮を使用する利点を次に示します。
アクティブなワークロードの記憶域の節約。 VDI などのアクティブなワークロード向けに設計されており、要求の厳しい環境で効率的なパフォーマンスを確保します。
複数のモード。 重複除去のみ、圧縮のみ、重複除去と圧縮 (既定モード) の 3 つのモードで動作し、ニーズに基づいて最適化を可能にします。
増分重複除去。 毎回ボリューム全体をスキャンするのではなく、新しいデータまたは変更されたデータのみを重複除去し、ジョブの期間を最適化し、システムパフォーマンスへの影響を軽減します。
前提条件
開始する前に、次の前提条件が満たされていることを確認してください。
デプロイおよび登録されている Azure ローカル インスタンスにアクセスできます。
インスタンスに作成されたクラスター共有ボリューム (CSV) があり、それにアクセスできます。
CSV では、Windows データ重複除去機能がまだ有効になっていません。
ReFS 重複除去と圧縮を使用する
ReFS 重複除去と圧縮は、Windows Admin Center または PowerShell を使用して使用できます。 PowerShell では手動ジョブと自動ジョブの両方を使用できます。一方、Windows Admin Center ではスケジュールされたジョブのみがサポートされます。 方法に関係なく、ジョブ設定をカスタマイズし、ファイル変更の追跡を利用して、後続の実行をすばやく行うことができます。
ReFS 重複除去と圧縮を有効にして実行する
Windows Admin Center では、ReFS 重複除去のスケジュールを作成して、ボリュームの作成時に既存のボリュームまたは新しいボリュームで実行できます。 ただし、圧縮の有効化は PowerShell 経由でのみサポートされます。
Windows Admin Center を使用して ReFS 重複除去を有効にし、実行するスケジュールを設定するには、次の手順に従います。
システムに接続し、左側の Tools ペインで Volumes を選択します。
Volumes ページで、Inventory タブを選択し、適切なボリュームを選択し、Settings を選択します。 新しいボリュームの ReFS 重複除去を有効にするには、 + 作成 を選択します。
右側の Volume 設定 ペインの その他のオプション ドロップダウンで、 ReFS 重複除去の使用 チェックボックスをオンにします。
ReFS 重複除去を実行する曜日、ジョブの実行を開始する時間、最大期間 (既定値は無制限) を選択し、 保存 を選択します。
次のスクリーンショットは、ReFS 重複除去が金曜日と土曜日の午後 10:00 に実行され、2024 年 9 月 27 日金曜日から最大期間が 2 時間であることを示しています。 Start 日付が 2024 年 9 月 30 日月曜日に変更された場合、最初の実行は 2024 年 9 月 30 日以降の最初の金曜日の午後 10/4/2024 10:00 になります。
ボリュームの Properties セクションの変更を確認します。 スケジュールは Properties セクションの下に表示され、コスト削減の内訳と次のスケジュールされた実行時間が表示されます。 これらの節約は各実行後に更新され、 Performance セクションのグラフのパフォーマンスへの影響を確認できます。 PowerShell を使用して圧縮を有効にした場合、その節約は Properties セクションにも表示されます。
PowerShell を使用して ReFS 重複除去と圧縮を使用するには、まずこの機能を有効にしてから、1 回限りの手動ジョブとして実行するか、スケジュールされたジョブとして実行するように自動化します。 ジョブは各システムの CSV レベルで設定され、モード、期間、システム リソースの使用状況などを基にカスタマイズできます。
ReFS 重複除去と圧縮を有効にする
PowerShell を使用して ReFS 重複除去と圧縮を有効にするには、次の手順に従います。
Azure ローカル インスタンスに接続し、管理者として 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
は必須のパラメーターであり、次のいずれかの値を受け取ることができます。
重複除去 : 重複除去のみを有効にします。
DedupAndCompress : 重複除去と圧縮の両方を有効にします。 既定のオプションです。
圧縮 : 圧縮のみを有効にします。
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
Enabled
フィールドがTrue
として表示され、Type
フィールドがDedupAndCompress
として表示される、Get-ReFSDedupStatus
コマンドレットの出力例を次に示します。
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 です。 必要に応じて、ある実行から別の実行にアルゴリズムを変更できます。
より複雑なユース ケースでは、より多くのパラメーターを指定できます。 このセクションで使用するコマンドレットは、最も簡単なユース ケース用です。
[除外されたフォルダー]、[除外されたファイル拡張子]、および [最終変更時刻の最小時間] フィルターは、重複除去の実行時にのみ適用され、圧縮の実行時には適用されません。
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 分に LZ4 形式で 5 時間実行するようにスケジュールされた定期的なジョブを設定するには、次のコマンドレットを実行します。 ジョブを毎日実行する場合は、 -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 を使用してスケジュールされたジョブを中断するには、次の手順に従います。
システムに接続し、左側の Tools ペインで Volumes を選択します。
Volumes ページで、Inventory タブを選択し、適切なボリュームを選択し、Settings を選択します。
右側の Volume 設定 ペインの [ オプション ドロップダウンで、 [スケジュールの設定 ] チェック ボックスをオフにして、[ 保存 ] を選択します。
次のコマンドレットを使用して、スケジュールされたジョブを中断し、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 重複除去と圧縮を無効にすると、進行中の実行が停止し、今後スケジュールされたジョブが取り消されます。 さらに、関連するボリューム メタデータは保持されず、ファイル変更の追跡は停止されます。
Note
この機能を無効にしても、メタデータ レイヤーですべての操作が行われるため、重複除去や圧縮は元に戻しません。 時間の経過と同時に、重複除去されたデータは、ボリュームが読み取りと書き込みを行う際に元の状態に戻ります。 データを展開するには、使用可能な十分な容量があることを確認し、 ReFSUtil を使用して次の操作を実行します。
refsutil compression /c /f NONE <vol>
Windows Admin Center を使用して機能を無効にするには、次の手順に従います。
システムに接続し、左側の Tools ペインで Volumes を選択します。
Volumes ページで、Inventory タブを選択し、適切なボリュームを選択し、Settings を選択します。
右側の Volume 設定 ペインの [ オプション ドロップダウンで、 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
パラメーターを使用すると、システムでデッドロックが発生する可能性があります。
Status: Open。
Type
がDedup
されていない限り、手動で開始されたジョブでは-FullRun
を使用しないでください。
この問題を軽減するには、一時的な回避策として次の手順に従います。
ボリュームの ReFS 重複除去と圧縮を無効にします。
Disable-ReFSDedup -Volume <path>
refsutil
を使用してボリュームを展開します。
refsutil compression /c /f NONE <vol>
必要に応じて、 Dedup
のみモードで ReFS 重複除去と圧縮を再度有効にします。
Enable-ReFSDedup -Volume <path> -Type Dedup
Status: Open。
推奨されるベスト プラクティスとして、重複を回避するためにジョブの開始時刻をずらす方法を検討してください。 ただし、すべてのジョブを同時に実行する必要がある場合は、システム全体の CPU 使用率の 50% 未満になるように、すべての CSV にわたってジョブごとの CPU 割り当てを調整します。 CPU の制限を課すと、ジョブの実行時間が長くなる可能性があることに注意してください。
ReFS 重複除去と圧縮ジョブの完了 (正常または取り消し) が行われ、ストレージの節約は Get-ReFSDedupStatus
または Windows Admin Center に表示されません。
Status: Resolved.
この問題の一時的な回避策は、1 回限りのジョブを開始し、結果を直ちに更新することです。
Start-ReFSDedupJob -Volume <path>
ボリュームの ReFS 重複除去と圧縮を無効にした後、停止した監視イベント トレーシング for Windows (ETW) イベントを送信します。
Status: Resolved.
ボリュームで ReFS 重複除去と圧縮が無効になると、ReFS 重複除去の ETW チャネルは停止された監視イベントを繰り返しログに記録します。 ただし、この問題により、大きな使用への影響は予測されません。
圧縮中にボリュームが別のノードに移動された場合、ジョブ失敗イベントはログに記録されません。
Status: Resolved.
圧縮の進行中に CSV がシステムの別のマシンに移動された場合、ジョブ失敗イベントは ReFS 重複除去チャネルに記録されません。 ただし、この問題により、大きな使用への影響は予測されません。
次のステップ