Trim コマンドとは
- Trim コマンドは ATA8-ACS2で定められた新 ATA コマンドで SSD の IDENTIFY DEVICE 情報の word 169 の bit0 が 1 の場合 (16進数で 0001h の場合)、Trim 有効と表明している事になる。(bit15-1 は未定義で通常は 0)
- 通常ファイルシステム上ではファイルを削除してもファイルシステム上のインデックスが削除されるだけでファイル本体のバイナリは残ったままになる。SSD はファイルシステムを認識できないのでこの不要なバイナリは新たなファイルで上書きされるまで残るが、このファイルシステム上で削除された不要なバイナリが記録されているアドレスを SSD に通知することで速度低下防止や NAND フラッシュメモリの余計な消耗を阻止する効果が期待出来る。但し Trim コマンドによって受け取ったファイルシステム上不要なアドレスの範囲をどう処理するかは SSD メーカーの任意となっており、Trim コマンドが有効な状態でも速度低下が大きい SSD もある。Trim コマンドが有効でさえあれば SSD の様々な問題が全て片付く訳ではなく、やはり Trim コマンドの効果は SSD (ファームウェア) の設計次第である。
- 参考:DOS/V Power Report - SSDの性能低下とTrimの効き具合を大検証!
Trim コマンドの制限
- 以上のような環境 (RAID 環境、Trim コマンド発行時の I/O スループット低下が問題になる環境、その他 Trim コマンドが使用不能な環境) では Trim コマンド無しでも速度低下しにくい東芝製か SLC かつ予備領域の割合が高いエンタープライズ向け SSD が必須である。
Trim コマンドを使用するには
①Trim コマンドを発行する OS か Trim コマンド発行ユーティリティ(とそれらに対応したファイルシステム)を使用し
②Trim コマンドサポートしているドライバを使用する必要がある。
①の Trim コマンド発行をサポートしている OS 例
- Windows 7 / Server 2008 R2 以降 (+ NTFS)
- Linux カーネル 2.6.33 以降 (+ ext4)
- Open Solaris
- FreeBSD 8.1/8.2 以降
- MAC OS X ver 10.6.6 (+ HFS Plus)。但しデフォルトではデバイスネーム先頭 9 文字が「APPLE SSD」になっている SSD (つまり純正 SSD) に対してのみ有効になっている。
- Trim コマンドをサポートしない Windows XP や Vista のようなレガシー OS でも以下のようなユーティリティを使用する事で条件や制限は付くものの Trim コマンドを使用することが出来る場合もある。但しこれらの Trim 発行ユーティリティもそれぞれ特定のファイルシステムにしか対応していない。(SSD TOOL BOX ではダイナミックボリュームではない NTFS 限定、等) また、Trim 対応のドライバでないと動作しない可能性もある。(SSD TOOL BOX では記載されているが Wiper.exe、SSD Magician は特に記載なし)
Intel の SSD TOOL BOX (Windows XP 以降 + Intel 製 X25-M G2 以降の SSD のみのサポート)
OCZ の Wiper.exe (Windows XP 以降 + OCZ の Indilinx 搭載 SSD (Vertex) のみサポート)
G.SKILL の Wiper.exe (Windows XP 以降 + G.SKILL の Indilinx 搭載 SSD (Falcon) のみサポート)
hdparm-9.17 以降 (Linux 用、全ての Trim 対応 SSD をサポート)
Samsung の SSD Magician (Windows XP 以降 + Samsung 470シリーズのみサポート)
②の Trim コマンドをサポートしている Windows 用ドライバの例
- Windows 7 標準の Microsoft AHCI ドライバ
- Windows 7 標準の Microsoft IDE ドライバ
- Intel チップセット環境のみで使用できる IRST 9.6.0.1014 以降
- AMD チップセット環境のみで使用できる Catalyst 10.11 以降 (AMD AHCIドライバ 1.2.1.275 以降)
- Marvell 91xx 用ドライバ v1.0.0.1051 以降
- これらの Trim 対応ドライバは動作が確認できたもののみを掲載しており、これ以外のドライバが Trim 非対応であるという意味ではない。Trim コマンドの効果はドライバと SSD の組み合わせによって異なり、SandForce と Microsoft AHCI ドライバ では効果が低い。原因は不要なアドレスの通知方法がドライバによって異なる事が原因のようだ。また Indilinx Barefoot と AMD AHCI ドライバ の組み合わせも Marvell 製ドライバに比べやや効果が低い。IMSM 8.x~ IRST 9.5 は Trim コマンドには対応しているが、Windows 7 の Trim コマンド発行に対応していない為、Intel SSD TOOL BOX と併用しない限り Trim コマンドを使用出来ない。(参考、PDF)
Windows 7 の Trim コマンドの有効・無効化・状態確認方法
- Windows 7 環境で Trim コマンドが発行されているかどうかの確認方法は以下の通り
1,管理者権限でコマンドプロンプトを開く
2,"fsutil behavior query DisableDeleteNotify"と入力して Enter
3,"DisableDeleteNotify = 0"と表示されたら有効、1なら無効になっている
4,仮に無効になっていた場合は"fsutil behavior set DisableDeleteNotify 0"と入力して Enter で有効化
(逆に無効化したい場合は"fsutil behavior set DisableDeleteNotify 1"で Enter)
Windows 7 で TRIM コマンドを発行するケースの例(SSD TOOL BOX 等のユーティリティや他の OS では発行するタイミングが異なる)
パーティションの3分の2以上を使用した状態でファイルを(本当に)削除した場合
ゴミ箱を空にした場合
パーティションを削除した場合
ファイルをゴミ箱に移動した場合
パーティションをフォーマットした場合(たとえフルフォーマットでも)
空のパーティションを削除した場合
- には Trim コマンドが発行されない事になっている。
ファイルを削除した場合
パーティションをフォーマットや削除した場合
ファイルの上書きや圧縮 (によってファイルサイズが変化) した場合
システムの復元 (スナップショット)
- 等に Trim コマンドを発行すると説明されている。
Linux カーネル 2.6.33 以降での Trim コマンド発行 (Block Discard) 方法
- ext4 をマウントする際に "discard" オプションを指定する。これだけ。ログ等は出力されない。こちらで公開されているスクリプトを使用する事で挙動を確認可能。※ファイルシステムは今のところ ext4 のみの対応。
- 対応ディストリビューション
Fedora core 13 以降
Ubuntu 10.10 以降
Red Hat Enterprise Linux 6.0 以降
CentOS 6.0 以降
等
Mac OS X 10.6.6 での Trim コマンド発行方法
- 現状はデバイスネームの先頭9文字が"APPLE SSD"に一致する機種 (つまり純正 SSD) のみの対応だが、TRIM Support Enabler for Mac を使用する事で全ての機種に Trim コマンドを発行できる状態になる (IOAHCIFamily.kext のバイナリ中に "APPLE SSD" という文字列があり、これを "000000000" で埋めると全ての機種に対して Trim コマンドを発行出来る状態になるが、これを自動で行うツール)。このツールには不具合がある可能性がある為、トラブルを自己解決できる人のみ使用すること。
1、シングルユーザーモードで起動する (command/Appleキー + Sキーを押しながら起動)
2、コマンドラインにて "fsck -ffy" と入力し リターンキーを押す
3、"reboot" と入力しリターンキーを押すと通常のマルチユーザーモードで再起動する
|