SSDのTRIMと消したファイル|有効かを確かめる方法と、復元への影響

HDDでは、消したファイルの中身がしばらくディスクに残っていて、復元ソフトで戻せることがあります。一方、SSDでは、TRIM(トリム)という仕組みで、消したファイルが使っていた場所がSSDに知らされ、SSDがその場所を消してしまうことがあります。この記事では、Microsoftの資料をもとに、TRIMの仕組みと、自分のPCでTRIMが有効かを確かめる方法を、筆者のPCで実行した結果とあわせて紹介します。

(確認:Microsoft Learn「fsutil behavior」(Windowsのコマンドのリファレンス)、Windowsチームのブログ「Support and Q&A for Solid-State Drives」(2009年・アーカイブ)。筆者のWindows 11のPCで、2026年10月21日に読み取りだけを行い、設定は変えていません)

TRIMとは(Microsoftの説明)

Microsoft Learnの fsutil behavior のページでは、削除通知(トリムまたはマップ解除とも呼ばれる)は、ファイルの削除で解放された領域を、その下の記憶装置に知らせる機能、と説明されています。NTFSでは、管理者が無効にしない限り、既定でトリミングが有効、とも書かれています。

Windowsチームのブログ(Windows 7の時期の記事)では、SSDがTrimに対応していると報告した場合、NTFSは、ファイルが削除され、そのファイルが使っていたSSDのページを消してよい時に、Trimの操作を出すように要求する、と書かれています。SSDは、この情報をもとに、関係するブロックを機会を見て(後回しにして)消す計画を立てられる、とされています。

つまり、TRIMが有効なSSDでファイルを消すと、その場所は「消してよい」とSSDに伝わり、SSDの都合のよいタイミングで、実際に中身が消されることがあります。いつ消されるかはSSD側の動きで、この記事では確かめていません。消したファイルを復元ソフトで探す場合、HDDと同じようには見つからない可能性がある、というのは、この仕組みから考えられることです。

コード:TRIMが有効かを確かめる(PowerShell)

# SSDのTRIM(削除通知)と、定期的な最適化の設定を読み取る(読み取りのみ)
#   DisableDeleteNotify = 0 なら、ファイルを消した時にSSDへTRIMを送る(有効)。1 なら送らない(無効)
"--- ドライブの種類 ---"
Get-PhysicalDisk | Select-Object DeviceId, MediaType, BusType, @{n='SizeGB'; e={[math]::Round($_.Size / 1GB)}} | Format-Table -AutoSize | Out-String
"--- TRIM(削除通知) ---"
fsutil behavior query DisableDeleteNotify
"--- 定期的な最適化のタスク ---"
Get-ScheduledTask -TaskPath '\Microsoft\Windows\Defrag\' -TaskName 'ScheduledDefrag' -ErrorAction SilentlyContinue |
    Select-Object TaskName, State | Format-Table -AutoSize | Out-String

Microsoftのページの例では、fsutil behavior query DisableDeleteNotify の出力に NTFS DisableDeleteNotify = 1 と出るものが載っています。値の読み方は、0なら削除通知(TRIM)を送る=有効、1なら送らない=無効です(「無効にする」の設定が0、という二重否定になっているので注意)。日本語の表示では、0の時に「データ記憶装置にトリム操作を送信できるようにします」と出ます。

実行ポリシーで止まる場合は、powershell -NoProfile -ExecutionPolicy Bypass -File .\Get-TrimStatus.ps1 で、その場だけ実行できます。

筆者のPCの結果

--- ドライブの種類 ---
DeviceId MediaType   BusType SizeGB
-------- ---------   ------- ------
1        HDD         SATA      1863
0        SSD         SATA       932
2        Unspecified USB        954
--- TRIM(削除通知) ---
NTFS DisableDeleteNotify = 0  (Allows TRIM operations to be sent to the storage device)
ReFS DisableDeleteNotify = 0  (Allows TRIM operations to be sent to the storage device)
--- 定期的な最適化のタスク ---
TaskName        State
--------        -----
ScheduledDefrag Ready
  • SSD(SATA・約932GB)、HDD(SATA・約1,863GB)、USBの外付けドライブがつながっていた
  • NTFS・ReFSとも DisableDeleteNotify = 0 で、TRIMは有効
  • 定期的なドライブの最適化のタスク(ScheduledDefrag)は「Ready」(有効で待機中)

出力の言語は、PowerShellの文字コードの設定で、英語になったり日本語になったりしました(内容は同じ)。

TRIMは無効にしない

TRIMは、SSDの性能と寿命のための仕組みです。Windowsチームのブログでも、Trimによって、後の書き込みで消去を待たずに済むようになること、SSDの消耗を減らす助けになることが説明されています。Microsoftのページには、一部のデバイスでは削除通知が有効だと性能が落ちる場合があり、その時は無効にする、とありますが、普通の使い方で、復元のためにTRIMを無効にするのは本末転倒です。

消したファイルに備えるには、消す前にバックアップを取っておくのが確かな方法です。MT5のフォルダーを別のドライブへコピーして照合する方法はrobocopyでMT5のフォルダをバックアップして照合する方法に、Windowsのファイル履歴で戻す方法は、別の記事「ファイル履歴で消したファイルを戻す」にまとめています。

消してしまった時にやること

  1. そのドライブへの書き込みを止める(ファイルの保存、ソフトのインストールをしない)
  2. バックアップ(ファイル履歴、別のドライブへのコピー、クラウド)から戻せないかを先に確かめる
  3. 重要なデータで、バックアップが無ければ、データ復旧の事業者に相談する。SSDか、HDDかを伝える

故障の兆候がある時の対応と、事業者に頼む前の確認は、SSD・HDDが壊れる前後にやることに、SSDの健康状態の確かめ方はSSD・HDDの状態をPowerShellで確かめる方法にまとめています。

この記事で確かめていないこと

  • TRIMが送られてから、SSDが実際に中身を消すまでの時間(SSDの機種による)
  • 消したファイルが、筆者のSSDで実際に復元できるか(試していません)
  • USB接続の外付けSSDで、TRIMが送られるか

まとめ

  • TRIMは、消したファイルが使っていた場所をSSDに知らせる仕組みで、NTFSでは既定で有効(Microsoft Learn)。SSDは、知らされた場所を都合のよい時に消す
  • fsutil behavior query DisableDeleteNotify の値が0なら有効。筆者のPCは有効だった
  • TRIMは無効にしない。消したファイルに備えるのは、消す前のバックアップ

本記事は設定の読み取り方と、Microsoftの資料の説明です。データの復元を保証するものではありません。