Windows検索インデックスでCドライブ残り容量が0になった話と解決策

履歴

Note

お急ぎの方へ
容量不足の状態で再起動を行わないでください
最終的にインデックスの再構築で事態を解消しました。詳細は インデックスの再構築
加えて、インデックスの場所を変更インデックスの無効化 といった再発防止を行っています

Windows 10でパソコンのファイル整理をしていたところ、急に Windows.edb のサイズが増え続けるようになり、最終的に40 GB にまで膨れ上がり C ドライブの残り容量が0バイトになるという事態に陥りました。
発生から解決、そして原因の考察を記事にまとめておきます。記事内の画像は撮影した時系列のバラバラな箇所があります。

問題の発生

症状としては通常、数十 MB から大きくとも数 GB で安定するはずの Windows.edb のサイズが数十 GB を超えて数十 MB[1]で常時増え続けるというものです。

最初は Windows.edb のサイズ増加に気づかず、ファイル整理を進めていたところ整理したはずの C ドライブの容量が急激に減っていったところで気づきました。
この増加量はすさまじく数秒に100 MB 程度増え続け、C ドライブを埋め尽くすまであっという間でした。

増加の様子 ※微点滅注意

増加するサイズ

気づいた頃にはだいぶ遅く、C ドライブの容量が0バイトになってからの対処になりました。
ここでシステムがクラッシュしなかったのは幸いでした。

0バイトのC ドライブ
残容量0バイトはなかなか衝撃的な光景です。

解決

事態の把握後、以下の方法で解決を試みました。

インデックスのデフラグ(失敗)

Microsoft の公式サイト でもこの問題について載っており、回避策として デフラグの方法 が記載されていたのでまずはそれを行おうとしました。

Sc config wsearch start=disabled
Net stop wsearch
 
EsentUtl.exe /d %AllUsersProfile%\Microsoft\Search\Data\Applications\Windows\Windows.edb
 
Sc config wsearch start=delayed-auto
 
Net start wsearch

しかし、EsentUtl.exe を実行している途中にディスクの容量不足で止まってしまい失敗しました。
ちなみにこの方法では数 GB 程度しか変わらず、あまり効果はないそうです。

インデックスの再構築

最終的にはこの方法で解決しました。増加自体は止められず根本的解決にならない場合がありますが容量をあけることが可能です。

やり方

インデックス設定を開く

再構築はインデックス設定から行います。
まず Windows + Rファイル名を指定して実行 を開きます。

ファイル名を指定して実行ウィンドウ

名前のところに以下のテキストを入力して OK を押します。

rundll32.exe shell32.dll,Control_RunDLL srchadmin.dll

起動コマンド

参考:https://www.haruru29.net/blog/windows-search-index-file/

これでインデックスの設定画面が開きます。
ディスクの容量不足が深刻な場合は 一時停止 を押してください。

Windows Search インデックス設定画面

次に、詳細設定 を押します。

Windows Search インデックス設定画面

再構築

詳細オプションが開いたら 再構築 を押します。

インデックス詳細オプション

これによりインデックスが削除され、再構築が始まります。

再発防止

増加自体は止められましたが、このままではシステムに影響が出かねないので対策します。

インデックスの場所を変更

症状について検索してみると以前から Windows.edb が極端に大きくなるというバグがあるようで、今後も起きる可能性とシステムドライブの容量を埋めるという重篤性から D ドライブにインデックスの位置を変更しました。

やり方

解決の段落の インデックス設定を開く でインデックスの設定画面を開きます。

詳細オプションが開いたら インデックスの場所新しい場所 にシステムの入っていないドライブの場所を入力して OK を押します。

※画像は C ドライブから変えた後

インデックス詳細オプション

システムが動作に必要な読み書きするための容量を食われるのが問題なので、物理ディスクが1つでパーティションで C:と D:に分けている場合でもパーティション単位で空き容量を分割できるため効果があります。

インデックスの無効化

そもそも自分は普段ファイルの検索に Everything を使っており、システムでのファイル検索は必要なさそうだったので無効化することにしました。インデックスはファイルの検索以外にも使われるようですが、最低限の動作には必要ではないのといつでも有効化できるので無効化しても問題はなさそうです。

Warning

無効化すると Outlook のメール検索ができなくなるという情報もあったので Outlook を使ってる人は注意です。 他にもスタートメニューの検索が遅くなるなどのデメリットがあります。

やり方

まずサービスアプリを起動します。

サービスアプリ

次にサービスの一覧から Windows Search を探します。環境によって名前が違う場合もあります。

Windows Search サービス

項目を右クリックしてメニューからプロパティをクリックします。

Windows Search サービスのメニュー

プロパティ画面が開いたら スタートアップの種類無効 に設定します。

Windows Search サービスの無効化設定

サービスの状態が 実行中 の場合は停止を押してサービスを止めます。

※画像は停止後

Windows Search サービスの停止ボタン

これでサービスを無効化できました。

原因の考察

Windows.edb に以前から存在する原因不明なバグで根本的な原因は不明ということになりますが、このバグが起きた理由にはいくつか心当たりがあります。

心当たり

外付けSSD

普段は使わない重めなファイルを移すために USB 経由で外付けの SSD をつなぎました。 大容量のディスクをつなぐと認識されるファイルが一気に増えるので、これがインデックスの増加を引き起こした可能性は十分に考えられます。とはいってもインデックスだけで何十 GB も使うのはやはり異常ですが。

ファイルの移動

問題が起きたのは先述した、ファイルの移動で内蔵のドライブと外付け SSD 間で50 GB の移動をしている最中でした。大量のファイルを移動したわけではなく25個程度の大きいファイルだったのですが、ファイルのアクセスにもインデックスを使用することもあるのでこれも原因の1つの可能性があります。

デフォルト以外のライブラリ

インデックスの対象にはデフォルトでライブラリの場所が指定されていますが、ファイル整理の際に誤って適当なフォルダをライブラリに追加していて、それもインデックスの対象になっていました。
これでインデックスが壊れるかはわかりませんが、時期を考えると原因の可能性があります。

考察

これらはいずれも短時間にインデックス対象の数が劇的に変化した、という点で共通しています。
インデックス作成の開始に何らかの問題があって、上記の理由によりインデックスの機会が増加したことでこの事態を引き起こした可能性が考えられます。

最後に

容量不足にならないようにと整理をしたつもりが、システムドライブの残容量0という怖い思いをしました。

容量が無くなってもシステムが動き続けてくれてさすがの堅牢性に感心しましたが、そもそも既知のシステムのバグが原因なので今後のアップデートで修正されることを期待したいところです。

システムドライブの容量不足はシステム全体のクラッシュや起動エラーと言った重大な症状を引き起こす可能性が高いです。 ストレージセンサーを設定して残容量を監視するなど、システムドライブの容量には注意しましょう。

参考

Footnotes

  1. 増加量はおそらく使っているドライブの書き込み速度によって変わると思われる