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