用語集/よく見かけるプロセス

mds_storesとmdworker

別名: mds、Spotlightのインデックス作成

結論

mds、mds_stores、mdworkerは、Spotlightの検索インデックスを作成・管理するmacOSのプロセスです。mdsはメタデータサーバで、mdworkerプロセスはファイルをスキャンし、検索で見つかるように内容とメタデータを読み取ります。

Spotlightは、ファイル、アプリ、メールなどのデータのインデックスをローカルに保持し、検索結果がすぐに返るようにしています。ファイルが追加・変更されたときやディスクが接続されたときは、mdworkerがそれを読み取り、mdsとmds_storesがインデックスを更新します。

macOSのアップデート後、新しいMacへの移行後、バックアップからの復元後、大量のファイルをコピーしたときに、インデックス作成が激しくなるのは正常です。インデックスが最新になれば落ち着きます。

mds_storesのCPU使用率が高い理由

インデックス作成に使われるCPUとディスクの量は、インデックスを作る対象の量に比例します。いっぱいのディスクを一からインデックス作成すると、しばらく時間がかかります。ビルドの出力、大きなキャッシュ、仮想マシンのイメージなど、絶えず変化するフォルダがあると、変化が続く限りSpotlightは忙しいままです。

mdworkerプロセスが同時に複数あるのは正常です。Spotlightはファイルを並行してスキャンするために、複数のmdworkerを実行します。

Spotlightに特定のフォルダをインデックス作成させない方法

システム設定を開いて“Spotlight”(バージョンによっては“SiriとSpotlight”)に移動し、“検索のプライバシー”をクリックして、ディスクまたはフォルダを追加します。Spotlightはその場所のインデックス作成をやめ、検索結果にも表示しなくなります。

候補になるのは、検索することがなく、頻繁に変化するフォルダです。たとえばビルド用のディレクトリ、パッケージのキャッシュ、仮想マシンを入れたフォルダなどです。

インデックスを再作成するタイミング

インデックス作成がいつまでも終わらないように見えるときや、検索結果がおかしいときは、Appleはインデックスの再作成を勧めています。ディスクまたはフォルダを“検索のプライバシー”のリストに追加し、数秒待ってから削除します。Spotlightがその場所のインデックスを作り直すので、しばらくmds_storesが忙しくなります。

Spotlightがインデックス作成中か確認する方法

アクティビティモニタではプロセスが、ターミナルではディスクのインデックス作成がオンになっているかどうかがわかります。

  1. アクティビティモニタで“CPU”タブをクリックし、検索フィールドにmdと入力します。mds、mds_stores、そして1つ以上のmdworkerまたはmdworker_sharedのプロセスが表示されます。
  2. それらの“% CPU”を1分ほど見守ります。低いかゼロなら、Spotlightはアイドル状態です。動作が続いているなら、まだファイルを処理しています。
  3. “ディスク”タブをクリックし、同じプロセスの“読み込みバイト数”の列を見ます。インデックス作成は大量に読み込むので、数値が増え続けているならスキャンがまだ続いています。
  4. ターミナルでmdutil -s /を実行すると、起動ディスクのインデックス作成の状況がわかります。Spotlightがそのディスクをインデックス作成するよう設定されていれば、Indexing enabled.と表示されます。別のディスクなら、/を/Volumes/Backupのようなそのディスクのパスに置き換えます。

Spotlightのインデックス作成にかかる時間は?

インデックスを作るファイルの数、ディスクの速さ、Macがほかの作業でどれだけ忙しいかによって変わります。大きなディスク全体のインデックス作成は、変更された数個のファイルに追いつくよりずっと時間がかかります。同じMacでも、ある日はすぐに終わり、大量のコピーやmacOSのアップデートのあとは何時間もかかることがあります。

それより大事なのは、進んでいるかどうかです。mds_storesとmdworkerが数時間かけて静かになっていくなら、終わりかけています。何日も忙しいままなら、何かがファイルを変更し続けているか、インデックスの再作成が必要です。

インデックス作成が終わらないよくある原因

アップデートや移行のあといつまでもSpotlightが忙しいなら、変化し続けている場所を探しましょう。

  • 頻繁に書き換えられるビルドの出力、node_modules、パッケージのキャッシュ。
  • 使用中に変化する仮想マシンのディスクイメージや大きなデータベース。
  • ダウンロード用や同期用のフォルダなど、別のアプリが絶えず書き込んでいるフォルダ。
  • 頻繁に接続と取り外しを繰り返す外部ドライブ。Spotlightはマウントされるたびにチェックします。
  • 破損したインデックス。この場合は、“検索のプライバシー”から再作成すると効果があります。

やってはいけないこと

CPUを節約するために、起動ディスク全体でSpotlightをオフにするのはやめましょう。Finderやメールなどのアプリでの検索を含め、ほかの機能もインデックスに頼っています。検索する必要のないフォルダだけを除外します。

mdworkerやmds_storesを終了しても、macOSが再び起動して中断したところから続けるので、インデックス作成は止まりません。Vitalsのオプションのヘルパーを有効にしていれば、プロセスごとの30日間の履歴で、インデックス作成が収まりつつあるのか、毎日戻ってきているのかが簡単にわかります。

よくある質問

Macのmds_storesとは?

Spotlightの検索インデックスを管理するプロセスの1つです。macOSの一部です。

mdworkerがずっと動いているのはなぜ?

mdworkerは、Spotlightのために新しいファイルや変更されたファイルをスキャンします。アップデートや移行のあと、または多くのファイルが変更されたときによく動き、インデックス作成が追いつけば静かになります。

mds_storesを終了しても大丈夫?

終了してもあまり効果はありません。macOSがすぐに起動し直し、インデックス作成が再開されるからです。特定の場所のインデックス作成を止めるには、Spotlightの設定で“検索のプライバシー”に追加します。

mdworker_sharedとは?

最近のバージョンのmacOSでの、Spotlightのワーカープロセスの名前です。mdworkerと同じく、ファイルをスキャンし、見つけたものをインデックス用にmdsに渡します。

Spotlightのインデックス作成が終わったかどうかを知るには?

アクティビティモニタで、mds_storesとmdworkerのプロセスのCPU使用率がほとんどゼロまで下がり、そのままになります。“ディスク”タブの“読み込みバイト数”も増えなくなります。

Spotlightは外部ドライブもインデックス作成する?

はい。“検索のプライバシー”に追加しない限り、接続されていればインデックスを作成します。ドライブのインデックス作成の状況は、mdutil -s /Volumes/DriveNameを実行すればわかります。

関連項目

詳しい手順: Macが遅い原因。

アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。