外付けドライブを接続するとMacが遅くなる理由

外付けドライブを接続しただけでシステム全体が遅くなるのはおかしな話ですが、実際にはよく起こります。その裏側で何が起きているのか、そしてどう対処すればよいのかを解説します。

外付けドライブを接続すると、Macの動作がもたつき始めます。Finderの反応が鈍くなります。アプリがカクつきます。虹色のレインボーカーソルが現れます。ドライブを抜くと、すべてが元どおりになります。

手早く知りたい方へ: 外付けドライブを接続すると、Spotlightのインデックス作成、Finderのプレビュー生成、.DS_Store の書き込み、Time Machineのチェックが一度に発生します。最大の原因はSpotlightです。sudo mdutil -i off /Volumes/YourDriveName を実行する(またはシステム設定 > Siri と Spotlight > Spotlightのプライバシー)ことで、そのドライブのインデックス作成を無効にできます。故障しかけたドライブもシステム全体のI/O停滞を引き起こすので、パフォーマンスの低下が著しい場合はディスクユーティリティでS.M.A.R.T.状況を確認してください。

本来こうなるべきではありません。外付けドライブはただのストレージです。しかしmacOSは、接続されたあらゆるドライブを「やり取りすべき相手」として扱い、そのやり取りがシステム全体を引きずり下ろすことがあるのです。

Spotlightのインデックス作成が主犯

外付けドライブを接続した瞬間に、Spotlightはそれのインデックス作成を始めます。何千ものファイルが入ったドライブでは、このインデックス作成の処理がCPUとディスクI/Oを大量に消費します。

Spotlightは、ファイルが存在することを記録するだけではありません。ファイルを読み込みます。ドキュメントからメタデータを抽出し、テキストファイルを解析し、画像のプレビューを生成し、メールのアーカイブを目録化します。ドキュメント、写真、メディアでいっぱいのドライブでは、これは何時間も続く激しい処理になり得ます。

Spotlightがインデックスを作成している間、Macのリソースは、作業とインデックス作成処理とで分け合われます。CPU使用率が跳ね上がります。メモリへの負荷が高まります。そして外付けドライブが遅い場合(たとえばUSB 2.0で接続された回転式のハードディスクなど)、そのI/Oのボトルネックがシステム全体のもたつきへと連鎖していくのです。

対処法は単純です。ドライブをSpotlightのプライバシーリストに追加して、インデックス作成を完全に防ぎます。

システム設定 > Siri と Spotlight > Spotlightのプライバシー を開きます。リストに外付けドライブを追加します。Spotlightはすぐにそのドライブを解放し、二度とインデックス作成を行わなくなります。

あるいはターミナルから行うこともできます。

sudo mdutil -i off /Volumes/YourDriveName

Spotlightからドライブの内容を検索する機能は失われますが、接続するたびにMacが這うように遅くなることはなくなります。(Spotlightがドライブの日常的な操作をどのように妨げるかについては、Spotlightがディスクの取り出しをブロックする の記事をご覧ください。)

Finderのサムネイルとプレビューの生成

Finderは、ファイルを閲覧する際にプレビューやサムネイルを生成します。外付けドライブ上のフォルダを開くと、Finderは可能な限りのファイル(画像、PDF、動画、ドキュメント)について視覚的なプレビューの作成を始めます。

高速な内蔵SSDでは、これは一瞬で終わるのでほとんど気づきません。外付けドライブ、特にハードディスクでは、プレビューの生成にフォルダごとに何分もかかることがあります。その間、Finderの動作は重くなります。

このオーバーヘッドを減らすには、アイコン表示やギャラリー表示ではなく、リスト表示(Command-2)やカラム表示(Command-3)に切り替えます。リスト表示とカラム表示は、完全なプレビューを生成せず、ファイルの種類を示すアイコンだけを表示します。

サムネイルプレビューを完全に無効にすることもできます。Finderで 表示 > 表示オプションを表示(Command-J)を開き、「アイコンプレビューを表示」のチェックを外します。外付けドライブ上のフォルダを表示している状態でこれを行うと、その場所に適用されます。

.DS_Store問題

Finderでフォルダを開くたびに、macOSはそのフォルダに .DS_Store ファイルを書き込みます。このファイルには、表示設定、アイコンの位置、その他のメタデータが保存されます。

内蔵ドライブでは、これは瞬時に行われます。外付けドライブでは、.DS_Store ファイルの書き込みがI/Oを発生させます。外付けドライブ上で多くのフォルダを閲覧していると、Finderは絶えずこれらの小さなファイルを書き込んでおり、その一つ一つが、遅いドライブ上では処理を止めてしまうかもしれない書き込み操作を必要とするのです。

外付けドライブについては、ネットワークボリュームでの .DS_Store の作成を次のコマンドで防げます。

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

残念ながら、取り外し可能なUSBドライブに限って .DS_Store を防ぐためのmacOS標準の設定はありません。このネットワークストアの設定は、USBやThunderboltのドライブには適用されないのです。

Time Machineがバックアップの状態を確認する

外付けドライブをTime Machineに使ったことがあると、macOSは接続するたびにそのドライブのバックアップ状態を確認します。これには、バックアップのカタログを読み込み、現在のシステム状態と比較し、何をバックアップする必要があるかを判断する処理が含まれます。

バックアップ履歴が膨大な場合、このチェックはリソースを大量に消費することがあります。そしてTime Machineが「バックアップの時間だ」と判断すれば、すぐにバックアップを開始し、CPUとI/Oの両方を消費します。これは、Time Machineのドライブが取り出しにくい原因となっている、あの backupd 絡みの速度低下と同じものです。その側面については Time Machineがドライブを取り出させてくれないとき で詳しく取り上げています。

Time Machineの役目から外したドライブは、システム設定 > 一般 > Time Machine でTime Machineのドライブ一覧から削除してください。そうしないと、macOSはそのドライブをバックアップに使おうとし続けます。

故障しかけたドライブがI/O停滞を引き起こす

ハードウェアに問題のあるドライブは、そのドライブがしていることに不釣り合いに見えるほど、システム全体の速度低下を引き起こすことがあります。

あるセクタが読み取れないとき、ドライブは失敗を報告する前に読み取り操作を何度も再試行します。再試行のたびに時間がかかります。macOSが不良セクタから読み込もうとしている場合(たとえばSpotlightのインデックス作成のために)、I/Oのキューが滞ります。そして内蔵ドライブ向けのものを含む他のI/O操作が、その完了を待たされて立ち往生してしまうのです。

ディスクユーティリティでドライブの健康状態を確認してください。S.M.A.R.T.状況の項目を見ます。「正常」以外の表示が出ている場合、そのドライブは故障しかけていて、予想以上のパフォーマンス問題を引き起こしている可能性があります。

USB帯域幅の共有

外付けドライブが他のデバイスとUSBバスを共有している場合、それらは帯域幅を奪い合っています。同じバス上の2つのUSBデバイスは、利用可能なスループットを分け合います。

Thunderboltのドック(より多くの帯域幅を持っています)ではこれはあまり問題になりませんが、USBハブでは顕著になることがあります。同じUSBハブに接続されたハードディスクとウェブカメラは、それぞれを単独でつないだときよりもパフォーマンスが落ちます。

システム情報 > USB で、各デバイスがどのバスに接続されているかを確認できます。外付けドライブが他のデバイスとバスを共有している場合は、専用のポートに移してみてください。

ウイルス対策とセキュリティソフト

サードパーティ製のウイルス対策ソフトがインストールされている場合、新しく接続されたドライブのすべてのファイルをスキャンしている可能性が高いです。このスキャンは、Spotlightのインデックス作成やFinderのプレビュー生成の上に重なり、I/Oの負荷を3倍にします。

ほとんどのセキュリティソフトでは、特定のボリュームをリアルタイムスキャンから除外できます。信頼できる外付けドライブを除外リストに追加してください。

外付けドライブの煩わしさを減らす

外付けドライブによるパフォーマンスへの影響は、積み重なって大きくなります。Spotlight、Finderのプレビュー、.DS_Store の書き込み、Time Machineのチェック、場合によってはウイルス対策のスキャンが、ドライブを接続した途端にいっせいに重なってくるのです。

Spotlightのインデックス作成を無効にするだけで、最大のパフォーマンス低下が解消されます。それに加えて、Finderでリスト表示を使い、役目を終えたドライブをTime Machineから外し、ドライブの健康状態を確認しておけば、ほとんどのケースに対処できます。

取り出しの面でも、遅いドライブは取り出しにくいドライブでもあります。システムプロセスが遅いI/Oを待って滞っていると、ファイルハンドルをいつもより長く掴み続けます。Macのパフォーマンスを落とすドライブは、取り出しにも抵抗しがちなのです。全体像については macOSのディスク使用中エラーのトラブルシューティングガイド をご覧ください。

Ejecta は、ドライブにまだアクセスしているプロセスが具体的にどれなのかを特定することで、取り出しの側面で役立ちます。Spotlightが原因であれば、それがすぐに分かり、終了させるかどうかを判断できます。推測も、ターミナルの出力をかき分ける手間もいりません。何がドライブを使っているのか、そしてなぜMacが苦しんでいるのかについて、明快な答えが得られるのです。

毎回ターミナルを使いたくないなら、Ejectaがどのプロセスがドライブをブロックしているかを正確に表示します。しかもメニューバーから、ワンクリックでそのプロセスを終了できます。

今すぐ購入 — $9.99