chkdsk の刷新と新しい NTFS 正常性モデルの追加

これまで私たちは、OS カーネル、ネットワーク、ファイル システムの改良についてさまざまな記事を書いてきました。既に有効性が実証されている chkdsk ユーティリティは、ごく一部の状況を除き、ほとんどのクライアント PC で使われなくなる予定ですが、Windows 8 を機会にこのユーティリティにも改良が加えられています。私たちは、chkdsk 操作によるダウンタイムを短縮して可用性を高めるために、このユーティリティの機能を集中的に見直したいと考えました。実世界での chkdsk の使用状況を見ると、破損が生じるのはきわめてまれでありながら、chkdsk の実行はそれほど珍しくないことに気付きます。私たちは、ディスク ツール (デフラグなど) を手動で実行する必要性を減らすことに力を入れてきましたが、そういったツールを "念のため" 手動で実行することを好むユーザーが多いことも理解しています。そこで、chkdsk の実行によってコンピューターの可用性が制限される状況を解消するため、chkdsk の処理能力を全体的に改善する取り組みを行いました。ディスク容量が巨大になり、マルチディスク システムが一般的になった現在、このユーティリティには改良が必要と思われました。今回の記事は、コア システム チームのプログラム マネージャーである Kiran Bangalore が執筆しました。
-- Steven


このブログ記事では、Windows 8 に導入される新しい NTFS 正常性モデルと、ディスク破損の検出と修正を行うツールである chkdsk ユーティリティの刷新についてお話しします。

皆さんの多くは、自宅のコンピューターや職場のサーバーの再起動中に突然 chkdsk が実行されていらついた経験をお持ちかと思います。起動プロセスが完了して Windows を利用できるようになるのを待っている最中に、予想外の割り込みが入るのですからたまりません。Windows 8 では、このような問題が発生した場合にすばやい解決方法を提供し、ユーザーが制御できない状態になるのを回避しています。これにより、システムの可用性とスケーラビリティが向上します。

Windows 8 の主要な設計目標の 1 つは、可用性を向上させ、システムの全体的なダウンタイムを短縮することでした。この機能は、記憶域スペースなどの他のストレージ機能や新しい ReFS ファイル システムと合わせて、破損の修正時の複雑さを軽減し、システム全体の可用性を向上させる役割を果たします。

以前の chkdsk と NTFS 正常性モデル

ディスクが破損することはまれではありますが、その発生にはさまざまな原因があります。原因がハード ディスクのメディア エラーの場合でも一時的なメモリ エラーの場合でも、ファイル システムのメタデータに破損が生じることがあります (メタデータとは、物理ブロックを個々のデータ、たとえば昨年撮影した休暇中の写真に対応付けるために使われる情報です)。このような場合、データへのアクセスを維持するために Windows でエラーを分離して修正する必要があり、その手段が chkdsk ユーティリティを実行することです。

過去のバージョンの NTFS に実装されていた正常性モデルは、ファイル システム ボリュームが正常かそうでないかという単純なものでした。そのモデルでは、ファイル システムの破損を修正してボリュームを正常な状態に戻すまでに必要な間、ボリュームはずっと "オフライン" になりました。このダウンタイムは、ボリューム内のファイル数に比例して長くなりました。

世界中のシステムから収集された信頼性の高い製品利用統計情報データによると、破損が発生する頻度はかなり低いものの、chkdsk が必要となった場合、その実行時間はドライブ上のファイル数によって数秒から数時間に及び、大規模なストレージ サーバーではさらに長い時間がかかる可能性もあることがわかりました。

Windows Vista と Windows 7 で chkdsk の速度は大幅に最適化されましたが、ハード ディスクの容量が 18 か月ごとに倍増する現在、ボリュームあたりのファイル数も同等の速度で増え続けているため、chkdsk の完了までにかかる時間は (速度が改善されたにもかかわらず) 長くなる一方となっています。

そこで Windows 8 では、NTFS 正常性モデルに対するアプローチを見直すと共に、破損時の修正方法を変更して chkdsk によるダウンタイムを最小限に抑えるようにしました。また、将来に向けた新しいファイル システムである ReFS も導入しました。このファイル システムでは、破損を修正するためにオフラインで chkdsk を実行する必要はありません。

ファイル システムの正常性機能の見直し

ストレージ容量とユーザー データ ファイルの大幅な増加に伴い、私たちは、NTFS 正常性モデルと chkdsk を刷新する必要に迫られました。

ファイル システムの正常性に関しては、ユーザーの皆さんから重要な要件が 3 つ寄せられていました。

  1. ファイル システムの破損によって生じるダウンタイムは、継続的な可用性が求められる構成ではゼロ、それ以外の構成でもゼロに近いこと。
  2. ユーザーまたは管理者に常にファイル システムの正常性が通知されること。
  3. 破損が発生した場合でも、ユーザーまたは管理者がスケジュールに沿った形で簡単にファイル システムを修正できること。

私たちは、最大限の可用性を達成するため、ファイル システムと chkdsk ユーティリティの両方に変更を加えるような設計を行いました。 新しい設計では、プロセスを以下のフェーズに分け、破損に対する協調的で迅速、かつ透過的な解決方法を実現します。

フロー図。破損の検出 (NTFS でファイル システム メタデータに異常が検出される) → オンライン自己復旧 (NTFS で迅速な自己復旧を試みる。ボリュームはオンラインのまま) → オンライン検証 (問題が一時的なものか本質的なものかを NTFS で検証する。ボリュームはオンラインのまま) → オンライン識別とログ作成 (自己復旧できない場合、NTFS で修正操作を特定してログに記録する。ユーザーや管理者に通知される。ボリュームはオンラインのまま) → 的確で迅速な修正 (ユーザーや管理者は都合の良いときにボリュームをオフラインにして、記録された破損を短時間で修正できる。CSV では、短時間の修正のために I/O が透過的に一時停止され、自動的に再開される)

私たちは、破損の種類を "動詞" として表す新しい方法を考案しました。これらの動詞は、主要なコンポーネントや設計上のポイント (ファイル システム ドライバー (NTFS)、自己復旧モジュール、スポット修正サービス、chkdsk ユーティリティ) に働きかける動作を示します。ファイル システムの破損はすべて、Windows 8 に定義された 18 種類の "動詞" のいずれかに分類されます。さらに、将来発生し得る問題の診断にも対応しやすいように、新しい動詞を定義できる余地も残されています。

可用性を高めるための設計上の主な変更点

    1. オンライン自己復旧: NTFS 自己復旧機能は、chkdsk を実行する必要性を減らすために Windows Vista (および Windows Server 2008) で導入されました。自己復旧は NTFS に組み込まれた機能の 1 つで、通常操作の中で発生した一定の種類の破損を修正します。この修正はオンラインのままで行うことができます。検出された問題のすべてが自己復旧によってオンラインで修正されれば、"オフライン" での修復の必要はありません。Windows 8 では、オンラインで対処できる問題の数を増やし、chkdsk の必要性をさらに低減しました。
    2. オンライン検証: ディスク上に実際に破損箇所があるのではなく、メモリの問題が原因となって断続的に破損が発生する場合もあります。このため Windows 8 には、スポット検証サービスと呼ばれる新しいサービスも追加されました。これはファイル システム ドライバーによって呼び出され、正常性モデルに沿ってファイル システムの状態を移行する前に、ディスク上に実際に破損箇所があるかどうかを検証します。この新しいサービスはバックグラウンドで動作するため、システムの通常の機能に影響することはありません。このサービスは、破損の検証のためにファイル システム ドライバーから呼び出されない限り何もしません。
    3. オンライン識別とログ作成: 問題が検証されると、それをトリガーとしてファイル システムのオンライン スキャンが行われます。これはファイル システムのメンテナンス タスクとして実行されます。Windows 8 では、コンピューターのメンテナンス用にスケジュールされたタスクは、アイドル時間などの適切なタイミングにのみ実行されます。このスキャンは、他のプログラムがフォアグラウンドで実行されている間にバックグラウンド タスクとして実行できます。ファイル システムのスキャンに伴い、見つかった問題は後で修正できるようにすべてログに記録されます。
    4. 的確で迅速な修正: ユーザーや管理者の都合の良いときにボリュームをオフラインにして、前のステップで記録された破損を修正することができます。この操作は "スポット修正" と呼ばれ、これによって発生するダウンタイムはほんの数秒です。クラスター共有ボリュームのある Windows Server 8 システムでは、このダウンタイムが完全になくなります。この新しいモデルでは、chkdsk offline の実行時間は破損の数に比例し、以前のモデルのようにファイル数に比例するのではなくなります。

Windows Server 2008 R2 と Windows Server 8 の chkdsk を比較した棒グラフ。以前のシステムでは、1 億個のファイルのチェックと修正に約 2 分、2 億個のファイルのチェックと修正に 4:48、3 億個のファイルのチェックと修正に 6 分以上かかっている。Windows Server 8 では、それぞれのスポット修正にかかる時間は 2 秒未満になる。
Windows Server の比較: chkdsk /f と chkdsk /spotfix

  1. 管理性の向上: 新しい正常性モデルの透明性を高めるために、ファイル システムの状態は Windows の次の各インターフェイスで確認できるようになります。
    • アクション センター: ドライブの正常性を最も詳しく確認できるのは、アクション センターの [Drive Status] (ドライブの状態) (下の図を参照) です。ボリュームを正常な状態にするためになんらかのアクションが必要な場合は、ここに表示されます。
    • エクスプローラー: 正常性の状態は、エクスプローラーのドライブのプロパティにも表示されます。
    • PowerShell: chkdsk の機能は、PowerShell で REPAIR-VOLUME という新しいコマンドレットを使って呼び出すこともできます。これは、ファイル システムの正常性をリモート管理する場合に役立ちます。
    • サーバー マネージャー: Windows Server では、サーバー マネージャー ユーティリティから直接ボリュームの正常性の状態を管理することもできます。

新しいファイル システム正常性モデル

新しい正常性モデルでは、ファイル システムの正常性は 4 つの状態で表されます。いくつかの状態は単に情報を表すものですが、ユーザーによる操作が必要な状態もあります。4 つの正常性の状態は次のとおりです。

  1. オンラインで正常
  2. オンライン スポット検証が必要
  3. オンライン スキャンが必要
  4. スポット修正が必要

正常な状態から、スポット修正が必要、オンライン スキャンが必要、スポット修正が必要へと遷移し、正常な状態に戻る。
Windows 8 ファイル システムの正常性の状態

    1. オンラインで正常 – この状態ではファイル システムの破損は検出されていないため、ユーザーによる操作は必要ありません。ファイル システムは、ほとんどの間この状態になります。

アクション センターに "No action needed" (操作は不要です) と表示されている。

    1. オンライン スポット検証が必要 – これは一時的な状態です。自己復旧できない破損がファイル システムに見つかると、その後の短時間だけこの状態になります。スポット検証サービスによって破損が確認されるまで、ボリュームはこの状態に置かれます。この場合もユーザーによる操作は必要ありません。
    2. オンライン スキャンが必要 – スポット検証サービスで破損が確認されると、ファイル システムは "オンライン スキャンが必要" という状態になります。次回のメンテナンス時にオンライン スキャンが実行されるため、ユーザーによる操作は必要ありません。この状態はアクション センターに反映され、必要であれば次回のメンテナンス時期が来る前に手動でスキャンを実行することもできます。スキャンはバックグラウンド処理として実行されるので、スキャンの実行中でもコンピューターを使い続けることができます。検証された問題と修正方法は、後で修復するときに参照できるように、このオンライン スキャン中にログに記録されます。Windows Server 8 システムでは、CPU とストレージのアイドル時間が監視され、アイドル時間が決定されます。

"Scan drive for errors" (ドライブ エラーのスキャン) というメッセージと "Open Action Center" (アクション センターを開く) リンク

[Maintenance] (メンテナンス) の下に、"Scan drive for errors" (ドライブ エラーのスキャン) という見出しと、"We found potential errors on a drive, and need to scan it. You can keep using the drive during the scan." (ドライブでエラーが発生している可能性があります。このドライブをスキャンする必要がありますが、スキャン中もドライブを使用できます。) というメッセージが表示されている。ボタン: [Run scan] (スキャンの実行)。アクション リンク: [Turn off messages about Drive status] (ドライブの状態に関するメッセージを無効にする)。

  1. スポット修正が必要 - オンライン スキャンの完了後、ファイル システムは必要に応じてボリュームをこの状態に変更します。この状態はアクション センターに反映されます。クライアント システムでは、PC を再起動することで、前のステップで記録されたファイル システムの問題をすべて修正できます。再起動はすぐに完了し (通常よりも数秒長くなるだけです)、PC は正常な状態に戻ります。Windows Server 8 システムの場合は、データ ボリュームの破損を修正するために再起動する必要はありません。管理者は、次回のメンテナンス時にスポット修正が行われるようにスケジュールできます。

通知に "Restart to repair drive errors. Click to restart your PC" (再起動してドライブ エラーを修復、クリックすると PC を再起動します) と表示されている。

"Restart to repaie drive errors (Important)" (再起動してドライブ エラーを修復 (重要)) "We found errors on a drive. To repair these errors and prevent loss of data, restart your PC now." (ドライブでエラーが検出されました。エラーを修復してデータが失われないようにするために、今すぐ PC を再起動してください。) ボタン: [Restart] (再起動)。

より詳しい知識のあるユーザーは、システムを再起動せずに非システム ボリュームの破損を修正することができます。問題のあるボリュームのプロパティ ダイアログを開いて [Tools] (ツール) タブをクリックすると、ドライブのファイル システム エラーをチェックするオプションが表示されます。現在使用中でないドライブ上の破損であれば、コンピューターを完全に再起動しなくても修正できます。

[Tools] (ツール) タブの [Error checking] (エラー チェック) に "This option will check the drive for file system errors." (ドライブのファイル システム エラーをチェックします。) と表示されている。ボタン: [Check] (チェック)。

[Error Checking (Chk2 (D:))] (エラー チェック (Chk2 (D:))) "Repair this drive" (このドライブを修復する) "We found errors on this drive. To prevent data loss, repair this drive now." (このドライブでエラーが検出されました。データが失われないようにするには、このドライブを今すぐ修復してください。) "Repair drive" (ドライブの修復) "You won't be able to use the drive while Windows repairs errors found in the last scan. You might need to restart your computer." (最後に実行したスキャンで検出されたエラーの修復中は、ドライブを使用できません。コンピューターの再起動が必要になる場合があります。) ボタン: [Cancel] (キャンセル)。

まとめ

Windows 8 では、ファイル システム エラーの検出と修正がより透過的に行われ、通常操作が中断されることは少なくなります。この変更による機能強化は、きっと皆さんに喜んでいただけるものと思います。皆さんからのフィードバックを楽しみにしています。

-- Kiran Bangalore
    Windows コア ストレージおよびファイル システム担当シニア プログラム マネージャー

お使いのブラウザーでは HTML5 ビデオがサポートされていません。

ビデオをダウンロードしてお好みのメディア プレーヤーで再生することができます:
高画質 MP4 | 低画質 MP4

FAQ

Q) 新しい正常性モデルはリムーバブル ドライブでも機能しますか?
はい、新しいモデルは固定メディアとして認識されるリムーバブル ドライブで機能します。これには、ほとんどの外付けハード ドライブが該当します。

Q) 新しいファイル システム正常性モデルを有効にするにはどうすればよいですか?
特に何もする必要はありません。新しいファイル システム正常性モデルは、既定で有効になっています。

Q) 新しいファイル システム正常性モデルは Windows Server にも適用されるのですか?
はい、正常性モデルはサーバーでもクライアントでもまったく同じです。既定で異なるのは、システムの起動中にデータ ドライブのチェックと修正が行われないという 1 点だけです。このメンテナンスは管理者の判断に任され、時間に余裕のあるときに行うことができます。

Q) ファイル システムの正常性モデルに影響を与えずに Windows 8 と Windows 7 を混在させることはできますか?
はい、ファイル システムの正常性モデルは、マウント先のオペレーティング システムがどちらでも適切に対応します。

Q) ReFS で chkdsk を実行する必要はありますか?
ReFS では、復元性に関して別のモデルが採用されており、従来の chkdsk ユーティリティを実行する必要はありません。

Q) 昔ながらの chkdsk /f の実行が必要になることはありますか?
状況によっては、障害のあるハードウェアで深刻な破損が発生し、ファイル システムをマウントできなくなることもあり得ます。このような場合には、オフラインで完全な chkdsk を実行してファイル システムを修復する必要があります。なんらかの理由でこれが失敗した場合は、バックアップから復元することをお勧めします。

Q) 非システム ボリュームの修正時にも必ず再起動が必要になるのですか?
いいえ、そうではありませんが、アクション センターでは一般に最もシンプルな解決策が提示されます。詳しい知識のあるユーザーは、ドライブのプロパティを開くか、コマンド ラインから chkdsk /scan <ボリューム>: および chkdsk /spotfix <ボリューム>: を実行することで非システム ボリュームを修正できます。

Q) ドライブの状態をチェックするために chkdsk /f をよく実行しているのですが、今後もこれを実行する必要はありますか?
いいえ、破損が見つかった場合はシステムがお知らせします。その後 chkdsk /scan を実行すれば、すべての問題を検出できます。オンラインの chkdsk /scan では、ドライブやシステムの可用性が損なわれることはありません。

Q) 現在はドライブの状態をチェックするために読み取り専用モードで chkdsk を実行しているのですが、今後もこれを実行する必要はありますか?
いいえ、代わりに chkdsk/scan を実行することをお勧めします。chkdsk/scan では、実行できるオンライン修正はすべて実行され、必要に応じてスポット修正の準備も行われます。