Macのデフラグのやり方と、最近のMacに不要な理由
いいえ、SSDとAPFSのMacにデフラグは必要ありませんし、他社製のデフラグツールを実行するべきでもありません。ディスクユーティリティにデフラグのボタンがないのは、macOSが自分でファイルの配置を管理しているからで、フラッシュストレージでは、デフラグが整理しようとする散らばったブロックが何かを遅くすることはありません。
「Mac デフラグ やり方」と検索する人の多くが本当に知りたいのは、Macが遅く感じる理由や、ディスクがすぐいっぱいになる理由です。どちらにも実際の原因と実際の対処法があり、どちらもブロックの並べ替えとは関係ありません。このガイドでは、デフラグが意味を持たなくなった理由、古い回転式のハードディスクで配置をやり直すと今でも効果がある唯一のケース、そして代わりに何をすればよいかを説明します。
デフラグは何のためのものだったか
Appleの古いサポート記事 About disk optimization with Mac OS X(現在はアーカイブ)は、最適化を、ファイルとメタデータを並べ替えて「データへのアクセス時間を短縮し、ハードドライブのヘッドが移動する時間を最小限にする」ことだと定義しています。回転するディスク上の断片化したファイルは別々の場所に分かれて保存されているので、ヘッドはその間を行き来しなければならず、移動のたびに時間がかかります。
ハードディスクの時代でさえ、この記事は「Mac OS Xを使っているなら、最適化はおそらくまったく必要ありません」と書いていました。理由はMac OS拡張(HFS Plus)に特有のもので、ファイルシステムは削除されたファイルが残した小さな隙間を再利用しないようにし、遅延割り当てによって多くの小さな書き込みを1つの大きな割り当てにまとめ、Mac OS X 10.3以降は少しずつ大きくなるファイルを「自動的にデフラグすることもできる」というものです。AppleはこのしくみをHot File Adaptive Clusteringと呼んでいました。記事はさらに、最適化中に電源が落ちるとファイルが壊れるおそれがあること、macOSが高速な起動領域に置いたファイルを動かすとかえってパフォーマンスが下がる場合があることも警告していました。
つまりMacには、やめるべきデフラグの習慣が最初からありませんでした。大事な部分はすでに自分でやっていたのです。
SSDが断片化を気にしない理由
ハードディスクにおける断片化のコストは、すべて回転するプラッタ上をヘッドが移動することから生まれます。SSDにはヘッドもプラッタもありません。フラッシュメモリを電子的に読み出すので、ある場所のブロックに届くまでの時間と、別の場所のブロックに届くまでの時間はほぼ同じで、10個に分かれたファイルも1つにまとまったファイルとほとんど変わらない速さで読めます。
そのため、すべてのファイルを連続した形に書き直しても、SSDでは何も得られず、その代わりに書き込み回数を消費します。フラッシュのセルは書き込みで摩耗し、ディスク全体のデフラグは、意図的に作り出せる書き込み負荷の中でも最大級のものです。
SSDに本当に必要なのは、どのブロックが空いているかを知り、次の書き込みに備えて準備しておくことです。それがTRIMの役目で、macOSはもうファイルのデータを持っていないブロックをドライブに伝えます。Apple純正の内蔵SSDは標準でTRIMコマンドを受け取ります。システム情報(アプリケーション › ユーティリティ内)で確認できます。ハードウェアの下のNVMExpressまたはSATAを選び、内蔵ドライブにTRIMサポート: はいと表示されているかを見てください。ディスクがSSDかどうかはターミナルでも確認できます。
diskutil info / | grep "Solid State"
他社製SSDのTRIMとtrimforce
古いMacのドライブを他社製のSATA SSDに交換した場合、システム情報にTRIMサポート: いいえと表示されることがあります。trimforceコマンドはそのためにあります。マニュアルページ(ターミナルでman trimforceを実行)には、このコマンドは「AHCIコントローラに接続された他社製ドライブへTRIMコマンドを送れるようにする」もので、「デフォルトでは、TRIMコマンドは他社製ドライブに送られない」こと、そして「一部のドライブはコマンドを正しく処理できない可能性があるため、TRIMを有効にする際は細心の注意を払う」べきことが書かれています。実行には管理者権限と再起動が必要です。
sudo trimforce enable
実行する前に、ドライブのメーカーがmacOSでのTRIMサポートを明記しているかを確認し、最新のバックアップを用意しておいてください。あとで問題が起きたら、sudo trimforce disableを実行して再起動すれば、コマンドの送信は止まります。すでにTRIMサポート: はいと表示されているMacでは実行しないでください。得るものは何もありません。
APFSで変わったこと: コピーオンライトとスナップショット
macOS High Sierra 10.13以降、MacはAPFSを使っています。Appleのファイルシステムフォーマットのガイドは、APFSが「最近のMacコンピュータで使用されているフラッシュ/SSDストレージ用に最適化されている」と説明し、スナップショットと領域の共有を機能として挙げています。Apple File System Referenceは「オブジェクトを変更する際のコピーオンライト方式」について書いており、変更されたデータは古いブロックをその場で上書きするのではなく新しいブロックに書き込まれます。これはAPFSがクラッシュに耐えるしくみの一部です。
コピーオンライトこそ、従来のデフラグツールが合わない理由です。ファイルを連続させるために「移動」するツールは、実際にはそのブロックの新しいコピーを書いています。Time Machineのローカルスナップショットが古いブロックをまだ参照していれば、そのブロックはスナップショットが消えるまで確保されたままなので、デフラグをかけると容量が空くどころか増えることがあります。Appleによると、Time Machineはおよそ1時間ごとにローカルスナップショットを保存し、古くなったときや容量が必要になったときにスナップショットを削除します。これは正常な動作で、逆らうものではありません。
APFSには、アプリではなくmacOSが管理する、ユーザデータ向けの独自のデフラグ機能もあります。diskutilのマニュアルページにはdefragmentという動詞があり、「APFSコンテナまたはボリュームのレベルで、ユーザファイルデータの自動バックグラウンドデフラグを管理する」ことができます。何も変更せずに現在の状態だけを読むには次のようにします。
diskutil apfs defragment / status
Appleシリコン搭載MacBookの内蔵SSDでは、ボリュームもそのコンテナも、デフラグは無効と表示されます。これはフラッシュストレージとして想定どおりの状態で、オンにし忘れた設定ではありません。enableの形はディスクの構成を変えるので、ハードディスクで明確な理由がない限り触らないでください。
「デフラグ」と検索する人が実際に感じていること
検索の裏にある症状は、たいてい次の2つのどちらかです。
Macが遅く感じる。 最近のMacでは、遅さにはほとんどの場合、目に見える原因があります。1つのプロセスがCPUコアを1つ使い切っている、メモリプレッシャーが黄色や赤のまま、熱による速度低下、アップデート後のSpotlightのインデックス作成などです。Macが遅い理由では、そのどれなのかをアクティビティモニタで突き止める方法を、Macを速くする方法では、測れるほどの差が出る変更を紹介しています。どちらのリストにもブロックの配置は入っていません。
ディスクがほぼいっぱい。 こちらは実際に速度に影響します。macOSはスワップ、アップデート、キャッシュ、スナップショットのために空き容量を必要とし、残りが数GBしかない起動ディスクは動作が重くなり、警告も表示されます。残ったものを並べ替えるより、容量を空けるほうがはるかに効果があります。Macの起動ディスクがいっぱいでは、何かを削除する前に、容量がどこに使われているかを測る方法を説明しています。
中身ではなくディスクそのものを疑っている場合、たとえばクラッシュや保存時のエラーのあと、あるいはドライブがマウントされない場合は、ディスクユーティリティのFirst Aidがファイルシステムの構造をチェックし、直せるところを修復します。macOSが求める「ディスクのメンテナンス」に最も近いのはこれです。起動ディスクをmacOS復旧から確認する方法も含めた手順は、ディスクユーティリティのFirst Aidの使い方にあります。
古いiMacと外付けハードディスク
古いiMacやMac miniの中にある、あるいは外付けUSBケースに入った回転式のハードディスクは、今でも断片化を体感しうる唯一のケースです。Appleのアーカイブ記事はその状況を「ディスクがほぼいっぱいで、大きなファイルを頻繁に変更したり作成したり(ビデオ編集など)しているなら……ディスクが断片化している可能性があります」と説明しています。
記事の最初の提案は単に「まず再起動してみてください」でした。2つ目の選択肢は今でも通用します。「重要なファイルをバックアップし、ハードディスクを消去」してから、システムとファイルを戻す方法です。空のディスクに一度で復元すれば、すべてのファイルが大きな連続した領域に書き込まれ、終わったときには検証済みのバックアップも手元に残ります。
- Time Machineか、実際にファイルを復元して確かめた別のバックアップで、ドライブをバックアップします。
- Appleの消去と再フォーマットのガイドに従って、ディスクユーティリティでドライブを消去します。起動ディスクの場合はmacOS復旧から行います。
- 起動ディスクだった場合はmacOSを再インストールし、バックアップからファイルを復元します。
そこまでする前に、作業後のドライブに空き容量が残ることを確認してください。95%埋まったハードディスクはすぐにまた断片化しますし、カチカチと音がする、またはFirst Aidでエラーが出るドライブに必要なのは並べ替えではなく交換です。まだハードディスクから起動している古いMacなら、SSDに換えるほうが、どんな配置の作業よりもずっと大きく変わります。
Mac向け「デフラグ」アプリを疑うべき理由
SSDのMacをデフラグすると持ちかけるユーティリティは、そのハードウェアには存在しないコストへの解決策を売っています。進行状況バーやビフォーアフターのマップはもっともらしく見えますが、結果として残るのはフラッシュへの余計な書き込み、スナップショットに確保されたままかもしれない容量、そして最悪の場合はAppleが書いていた電源断のリスクです。
ボリュームを「最適化」するために広いディスクアクセスを求めるツール、対応するファイルシステムを明かさないツール、デフラグを定期的なメンテナンスのように語るツールには気をつけてください。ツール自身のドキュメントがAPFSのスナップショットやコピーオンライトをどう扱うかを説明していないなら、別の何かのために作られたものだと考えてください。ディスクユーティリティのFirst Aid、バックアップ、そして十分な空き容量があれば、Macのディスクに実際に必要なものはそろいます。
Moleの役割
Moleはディスクをデフラグしませんし、これからもしません。SSDでは得るものがなく、APFSでは配置はmacOSの領分だからです。Moleが扱うのは問題のうち目に見える部分です。「クリーン」は、キャッシュ、ログ、アンインストールしたアプリの残り、Time Machineのローカルスナップショット、ゴミ箱を、何かを削除する前に確認できるように並べ、「分析」はディスクをツリーマップで描くので、いちばん大きなフォルダへ掘り下げていけます。
そもそもディスクが原因なのか確信が持てないときは、「ステータス」ダッシュボードがCPU、メモリ、ディスク、そしてリソースを最も使っているプロセスを1秒ごとに更新して表示します。MoleのDoctorも、起動ディスクの使用率が90%を超えると知らせます。macOSはスワップファイル、スナップショット、アップデートのために空き容量を必要とするからです。各チェックの意味はMoleのヘルプページにまとめています。
よくある質問
SSDのMacBookにデフラグは必要ですか?
いいえ。断片化が時間を食うのは、ドライブのヘッドがファイルの断片の間を移動しなければならないときだけで、SSDには動く部品がありません。デフラグしても書き込みが増えるだけで、読み込みは速くなりません。
Macに内蔵のデフラグツールはありますか?
ディスクユーティリティにデフラグのボタンはありません。APFSにはdiskutil apfs defragmentで管理する自動バックグラウンドデフラグ機能があり、内蔵SSDでは通常無効になっています。それが意図された状態です。
Macにつないだ外付けハードディスクはデフラグすべきですか?
たいていは不要です。大きく、頻繁に変更するファイルを入れたほぼ満杯のハードディスクが遅くなったなら、バックアップして消去し、ファイルを復元してください。そうすれば、テスト済みのバックアップも手に入ります。
MoleでMacをデフラグできますか?
いいえ。Moleはディスクをデフラグしません。「クリーン」と「分析」で容量を空け、「ステータス」で何が動いているかを確認するのに役立ちます。