web-dev-qa-db-ja.com

ReFSの「強制」ファイルの整合性をオフにする方法は?

短縮版

整合性ストリームの整合性が強制がtrueであるReFSボリュームにファイルがあります。

PS M:\> Get-Item Contoso.vhdx | Get-FileIntegrity

FileName         Enabled  Enforced
--------         -------  --------
M:\Contoso.vhdx  False    True

強制をオフにしたい:

PS M:\> Get-Item "M:\Contoso.vhdx" | Set-FileIntegrity -Enforce $False
PS M:\> Get-Item Contoso.vhdx | Get-FileIntegrity

FileName         Enabled  Enforced
--------         -------  --------
M:\Contoso.vhdx  False    True

強制ファイルの整合性をオフにするにはどうすればよいですか?

ロングバージョン

ReFSには、Integrity Streamsと呼ばれる機能があります。このオプション機能をファイルに対して有効にすると、ファイルシステムはファイルのCRCを維持します。このチェックサムを使用すると、ファイルが破損していないことを検証できます。

Integrity Streams機能の欠点は次のとおりです。

  • シングルビットエラーでも検出された場合
  • それ以外の場合は問題のない340GBファイル(例:ProductionServer.vhdx
  • deleteファイル全体

警告はありません。質問なし。上訴なし。修正不可能なビットが1つあると、すべてのデータが失われます。

これがEnforcedの意味です。それはあなたが完全なデータ損失に苦しむことを余儀なくされていることを意味します。そして、それが気に入らなかった場合:ファイルの整合性を有効にするべきではありませんでした。

この振る舞いは静かに 文書化:

主な利点

弾力性

データのサルベージ-ボリュームが破損し、破損したデータの代替コピーが存在しない場合、ReFSは名前空間から破損したデータを削除します。ReFSは保持しますボリュームはオンラインですが、修正不可能な破損のほとんどを処理しますが、ボリュームをオフラインにするためにReFSが必要になるまれなケースがあります。

(強調鉱山)

Set-FileIntegrityコマンドレット: にも部分的に記載されています

-Enforce:整合性ストリームがデータの破損を示している場合にファイルへのアクセスのブロックを有効にするかどうかを示します。

それは、私たちが望んでいたこと存在しないように聞こえます。それは、地球上の正気の人が存在、ましてや有効にしたいとは思わない機能のように聞こえます。それでも、デフォルトでオンになっています。

"block"と表示され、最初のページにはと表示されます。 "削除する"。用語が何であれ、ファイルに再びアクセスする方法はありません。つまりそれを「ブロック解除」する方法も、「削除解除」する方法もありません。重要なすべての点で、データは失われます。

オフにする方法強制

問題は、どうやってそれをオフにするのかということです。

PowerShellコマンドレットを実行してみます。

PS M:\> Get-Item "M:\Contoso.vhdx" | Set-FileIntegrity -Enforce $False

そして、それは機能しません。エラーなし。オプションがオフにならないだけです。

それを機能させる方法は?

  • はい、管理者として実行しています。
  • はい、高架のPowerShellで。
  • Windows Server 2012(6.2.9200)
  • Windows 10(10.0.17763.864)

tl; dr:オフにする方法強制file integrity ReFSで?

ファイルの整合性が有効になるまで、強制は意味がありません

ファイルの整合性がEnforcedである場合でも、その間の数か月で、ファイルの整合性がになるまで強制は効果がないことを発見しました。 == --- ==)Enabled

Enabled$Falseの場合、次に、無関係の値。

ファイルの整合性

| Enabled | Enforced | Result    |
|---------|----------|-----------|
| $False  | n/a      | No effect | (Default) Irreparable damage will **not** cause the file to be deleted
| $True   | $False   | Good      | A good choice that you have to opt-into. File damage will be found, and simply reported in the event log
| $True   | $True    | Disaster  | Any damage that cannot be repaired and your file will be deleted without warning

なぜ誰かが壊滅的なデータ損失を強制することを選択するのかわかりません。しかし、オプションがあります。

データ機能を意図的に削除する方法の詳細

Microsoftによるよく隠されたWord文書 を見つけました。 Application Compatibility with ReFS.docx

ReFSとのアプリケーションの互換性

マイクロソフト
公開日:2012年3月

データを即座に削除する機能(逆説的に「サルベージ」と呼ばれる)について言及しています。

1.7サルベージ

ボリューム上のデータの可用性を最大化するために、ReFSは「サルベージ」を実装します。これは、破損を自動的に修復できない場合に、名前空間から破損したデータを削除する機能です。 この機能の背後にある目的は、修復不可能な破損が破損していないデータの可用性に悪影響を及ぼさないようにすることです。たとえば、単一の場合ディレクトリ内のファイルが破損し、自動的に修復できなかった場合、salvageはそのファイルをファイルシステムの名前空間から削除します。破損したファイルはファイルシステムで開いたり削除したりできないため、管理者が応答できません。サルベージを使用すると、管理者はそのファイルをバックアップから回復するか、アプリケーションに再作成させることができます。 Salvageは、ユーザーファイル、ディレクトリ、およびその他のファイルシステムメタデータと互換性があります。

ファイルシステムフィルタードライバーの場合、ファイルまたはディレクトリが突然消えたことに適切に反応できるコードを実装する必要があります。

ReFSはchkdskを必要とせず、chkdskがReFSボリュームで実行されることはないことに注意してください。

ファイルを削除するための合理的は...トートロジーです:

この機能は、修復不可能な破損が破損していないデータの可用性に悪影響を与えないようにするためのものです。

プログラミング、論理、英語のいずれにおいても、それは意味がありません。しかし、それはあります。

1
Ian Boyd
Set-FileIntegrity -FileName 'M:\Contoso.vhdx' -Enforce $False

フラグを立てる代わりに名前空間から破損したデータを削除することは恐ろしい設計上の決定でした。 ReFSを使用しない#1の理由。私がReFSを使用しない唯一の理由。

いつものように、私たちは決して素晴らしいものを持つことはできません。 決して

1
Robot