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のファイル履歴で戻す方法は、別の記事「ファイル履歴で消したファイルを戻す」にまとめています。
消してしまった時にやること
- そのドライブへの書き込みを止める(ファイルの保存、ソフトのインストールをしない)
- バックアップ(ファイル履歴、別のドライブへのコピー、クラウド)から戻せないかを先に確かめる
- 重要なデータで、バックアップが無ければ、データ復旧の事業者に相談する。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の資料の説明です。データの復元を保証するものではありません。


