次の方法で共有


NTFS 圧縮として作成された重複除去されたボリュームでファイルが破損する

この記事では、重複除去されたボリュームでファイルを開けず、破損としてログに記録される問題の解決策を示します。

元の KB 番号: 3066174

現象

ユーザーは、ボリュームのルートで NTFS 圧縮を有効にして作成された重複除去が有効なボリューム上のファイルを開くことができません。 さらに、データ重複除去スクラブ ジョブは、イベント ログにイベントを記録して、修復できないファイルのボリュームの破損を報告する場合があります。

原因

この問題は、重複除去されたボリューム上のファイルにプロセスがインプレースで書き込むと、圧縮ボリューム ルートに格納されている重複除去メタデータが破損するため発生します。 圧縮ボリューム ルートに格納されている重複除去メタデータは、システム ボリューム情報 (SVI) フォルダーの下にあります。

ボリュームの作成時にルートで圧縮が有効になっているボリュームでは、重複はサポートされません。 ただし、圧縮フォルダーの重複除去はサポートされており、想定どおりに機能します。

解決方法

この問題を解決するには、ボリューム レベルの圧縮が有効になっている NTFS ボリュームでデータ重複除去を有効にしないでください。

残念ながら、重複除去が有効になっている既存の圧縮ボリュームで既に破損しているデータを復元することはできません。 既に破損しているファイルが使用可能な場合は、バックアップから復元する必要があります。

重複除去メタデータ フォルダーを展開して、このボリューム上の重複除去されたファイルへの書き込みアクションが破損しないようにするには、次の手順に従います。

Note

このコマンド例では、 <X> は圧縮として作成され、データ重複除去が有効になっているボリュームです。

  1. 次の Windows Sysinternals Web サイトから PsExec ツールをダウンロードします: PsExec v2.2

    Note

    PsExec ツールを使用すると、ユーザーは "SYSTEM" ユーザー権限を持つことでプロセスを実行できます。 これは、システム ボリューム情報フォルダーにある保護されたデータ重複除去メタデータ フォルダーにアクセスするために必要です。

  2. 影響を受けるボリューム上のユーザーのデータ アクセスをブロックします。 これを行うには、次の Windows PowerShell disable-dedupvolume コマンドを実行します。

    disable-dedupvolume X: -dataaccess
    

    Note

    • このコマンドは、データ重複除去フィルターをアタッチせずにボリュームのマウントを解除してから再マウントします。 これにより、重複除去されたファイルにユーザーがアクセスできなくなります。
    • マウント解除アクションを実行すると、このボリュームで開いているファイル ハンドルが無効になります。
  3. PsExec を使用して、Cmd.exeを "SYSTEM" ユーザーとして実行します。 そのためには、次のコマンドを実行します。

    Psexec.exe -i -s cmd
    

    Note

    コマンド プロンプト ウィンドウが開き、"SYSTEM" ユーザー権限が割り当てられます。

    注意事項

    "SYSTEM" アカウントは、管理者アカウントよりもはるかに高いレベルのアクセス権を持つユーザー アカウントです。 ユーザーは、"SYSTEM" アカウントの実行中に記事に記載されている手順のみを実行するように注意する必要があります。 ユーザーは、ACL を変更したり、システム ボリューム情報フォルダーの所有権を取得したりしないように特に注意する必要があります。

  4. PsExec コマンド プロンプト ウィンドウで、影響を受けるボリュームのシステム ボリューム情報フォルダーを見つけます。

  5. ボリュームの重複除去メタデータ フォルダーが現在圧縮されていることを確認します。

  6. ボリュームの重複除去メタデータ フォルダーを展開します。

  7. PsExec コマンド プロンプト ウィンドウで、次のコマンドを実行します。

    X:\System Volume Information>compact /s:Dedup
    

    出力には、次の概要メッセージが含まれます。

    N 個のディレクトリ内の M ファイルの数
    <X> は圧縮され、 <Y> は圧縮されません。

    <X>がゼロ (0) より大きい場合は、手順 8 に進みます。 それ以外の場合は、重複除去メタデータ フォルダーが圧縮されていないため、手順 11 に進みます。

  8. PsExec コマンド プロンプト ウィンドウで、次のコマンドを実行します。

    X:\System Volume Information>compact /u /s:Dedup
    
  9. 重複除去メタデータ フォルダーが圧縮解除されるまで待ちます。 プロセスは一度に 1 つのファイルで動作し、時間がかかる可能性があります。

    Note

    このプロセスで必要な時間は、ボリューム上にあるデータの量に比例します。 テラバイト単位のデータを含むボリュームの場合、このプロセスの完了には数時間かかることがあります。 完了すると、コマンドが終了し、次のステータス メッセージが生成されます。
    M ディレクトリ内の N 個のファイルが圧縮されていません。

  10. PsExec コマンド プロンプト ウィンドウで、次の "圧縮状態の表示" コマンドを実行して、データ重複除去メタデータ フォルダーに圧縮ファイルがないことを確認します。

    X:\System Volume Information>compact /s:Dedup
    
  11. PsExec コマンド プロンプト ウィンドウを閉じます。

  12. 影響を受けるボリューム上のユーザーのデータ アクセスを再度有効にします。 そのためには、次のコマンドを実行します。

    Enable-DedupVolume X: -DataAccess
    

    Note

    • このコマンドは、マウントを解除してから、データ重複除去フィルターがアタッチされたボリュームを再マウントします。 ユーザーは重複除去されたファイルにアクセスできるようになります。
    • マウント解除アクションを実行すると、このボリュームで開いているファイル ハンドルが無効になります。

Note

同様の破損が発生しないようにするには、圧縮として作成されたすべての重複除去が有効なボリュームに対してこの手順を実行します。