Windows Server 2012 R2 のクラスターの共有ボリュームにおける Defrag および Chkdsk コマンドの実行について

こんにちは。Windows プラットフォーム サポートの野村です。今回は、Windows Server 2012 R2 のフェールオーバー クラスター環境のクラスターの共有ボリューム (CSV) における Defrag および Chkdsk コマンドの実施方法についてご案内いたします。

クラスターの共有ボリューム (CSV) とは、1 つの論理ボリュームに対して複数のクラスター ノードからアクセス可能になる技術です。Windows Server 2012 R2 では、ディスクを NTFS または Resilient File System (ReFS) として、リソースを割り当てることができます。

CSV でない通常のボリュームと同様に、CSV のファイル システムに対してデフラグまたは Chkdsk の実行が必要となる場合があります。以下に、CSV にてデフラグおよび Chkdsk を行う際の推奨される手順をご案内いたします。

 

==================================

CSV における Defrag コマンドの実行手順

==================================

CSV におけるファイルの断片化はシステムのパフォーマンスに影響を及ぼします。従いまして、定期的に CSV にデフラグを実行することにより、ボリューム上の断片化したファイルを統合することを推奨いたします。

スタンドアロン サーバーにおけるデフラグは、メンテナンス タスクとして自動的に実行されますが、CSV においてはデフラグは自動的に実行されません。よって、手動またはスクリプトにて実行する必要があります。なお、デフラグの実行はシステムのパフォーマンスに影響を与える可能性があるため、システムの負荷が少ない時間帯に実施することを推奨いたします。

 

1. 管理者権限で以下のコマンドを実行し、CSV にデフラグが必要かどうかチェックします。

> Defrag.exe <CSV Mount Point> /A /U /V

   /A : 指定したボリュームを最適化しないで、分析レポートを表示します。

   /U : 画面上に処理の進行状況を出力します。

   /V : 詳細モードで実行します。

 注意点 :

・CSV にデフラグが必要な場合は、赤枠内に "このボリュームを最適化してください。" とメッセージが表示されます。

・CSV がシン プロビジョニング環境のストレージである場合、スラブ統合がデフラグ時に行われます。スラブ統合を実行するには、実行前に CSV をリダイレクト モードにする必要があります。CSV をリダイレクト モードにするには手順 2. を参照してください。

  

2. CSV をリダイレクト モードにします。以下の a. または b. の手順のどちらかを実施してください。

a. 管理者権限のある PowerShell にて、下記のコマンドを実行します。

> Suspend-ClusterResource <Cluster Disk Name> -RedirectedAccess

 

b. [フェールオーバー クラスター マネージャー] にて、CSV を右クリックし、[リダイレクトされたアクセスの有効化] を選択します。

 

注意点 :

 ・CSV をリダイレクト モードにしていない場合、以下のエラーが出力されます。

   "ボリュームがリダイレクト モードでないため、CSVFS での操作が失敗しました。(0x8007174F)"

 

 

 また、次のエラー メッセージが表示される可能性もあります。

  "このファイルシステムでは、この操作はサポートされていません。(0x89000020)"

  3. 以下のコマンドを管理者権限で実行します。デフラグが実行されます。

 > Defrag.exe <CSV Mount Point>

 

  

4. デフラグが完了したら、CSV をリダイレクト モードからダイレクト モードに戻します。以下の a. または b. の手順のどちらかを実施してください。

a. 管理者権限のある PowerShell にて、下記のコマンドを実行します。

> Resume-ClusterResource <Cluster Disk Name>

b. [フェールオーバー クラスター マネージャー] にて、CSV を右クリックし、[リダイレクトされたアクセスの無効化] を選択する。

 

===================================

CSV における ChkDsk コマンドの実行手順

===================================

ファイル システムが破損した場合は Chkdsk による修復が必要です。しかし、Windows Server 2012 R2 の CSV は ReFS をサポートしています。ReFS にはメタデータの整合性チェックによる自己修復機能があるため、Chkdsk は ReFS の CSV には実施する必要はありません。ここでは、CSV のファイル システムが NTFS の場合についてご案内いたします。

Windows Server 2012 にて、Chkdsk の操作は破損のスキャン (オンライン処理) と修復 (オフライン処理) に分けられるようになりました。また、Chkdsk /Spotfix は CSV に該当する物理ディスク リソースのクラスター IsAlive チェックに統合されました。従って、CSV のファイル システム破損の修復に、ほとんどダウンタイムが生じなくなりました。

------------------------------------------------------------------

ファイル システムの破損の検知について

-------------------------------------------------------------------

Windows Server 2012 R2 における NTFS の破損をスキャンする流れは以下のようになります。

 

システムがアイドルでない状態の場合、Chkdsk のスキャン実行されない可能性があります。この場合は、手動で実行する必要があります。手動で実行する際には、以下のコマンドを管理者権限で実行します。

> Chkdsk.exe <CSV mount point name> /scan

-----------------------------------------------------------------------------------------------------------------------

物理ディスク リソースの IsAlive チェック時における CSV の破損の修復について

------------------------------------------------------------------------------------------------------------------------

Windows Server 2012 R2 における CSV のファイル システムの修復は、以下の流れで行われます。

1 つの CSV の破損を修復するのに 15 秒よりかかる場合、上記の流れでファイルシステムの破損が修復されません。この場合、手動で修復する必要があります。

Chkdsk を実行する前に CSV をメンテナンスまたはリダイレクト モードにする必要はありません。Chkdsk が完了したら、CSV は自動的に状態を回復します。この操作を手動で実行するには、以下のコマンドを管理者権限で実行してください。

> Chkdsk.exe <CSV mount point name> /Spotfix

======================================================================

Repair-ClusterSharedVolume コマンドレットにおける Defrag と Chkdsk の実行について

======================================================================

Repair-ClusterSharedVolume コマンドレットによる Defrag または Chkdsk の実行についてもご紹介いたします(※このコマンドは今後使用できなくなる予定です)。CSV に上述の手順にて Defrag.exe および Chkdsk.exe を実行することを推奨いたしますが、Repair-ClusterSharedVolume コマンドレットの使用は、まだサポートされています。このコマンドレットにて Chkdsk または Defrag を実行する際には、管理者権限のある PowerShell にて実行してください。

> Repair-ClusterSharedVolume <Cluster Disk Name> -ChkDsk –Parameters <ChkDsk parameters>

> Repair-ClusterSharedVolume <Cluster Disk Name> –Defrag –Parameters <Defrag parameters>

なお、Get-ClusterSharedVolume コマンドレットを以下のように実行することで、CSV に該当するクラスター ディスクの名前を特定することが可能です。

> Get-ClusterSharedVolume | fl *

<参考情報>

- How to Run ChkDsk and Defrag on Cluster Shared Volumes in Windows Server 2012 R2

https://blogs.msdn.com/b/clustering/archive/2014/01/02/10486462.aspx