「SSD4」の編集履歴(バックアップ)一覧に戻る

SSD4 - (2011/05/14 (土) 13:24:47) の編集履歴(バックアップ)


Trimコマンド

+ クリックで展開

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 例
  1. Windows 7 / Server 2008 R2 以降 (+ NTFS)
  2. Linux カーネル 2.6.33 以降 (+ ext4)
  3. Open Solaris
  4. FreeBSD 8.1/8.2 以降
  5. 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 用ドライバの例
  1. Windows 7 標準の Microsoft AHCI ドライバ
  2. Windows 7 標準の Microsoft IDE ドライバ
  3. Intel チップセット環境のみで使用できる IRST 9.6.0.1014 以降
  4. AMD チップセット環境のみで使用できる Catalyst 10.11 以降 (AMD AHCIドライバ 1.2.1.275 以降)
  5. 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 コマンドを使用出来ない。(参考1、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 が Trim コマンド非対応の場合は効果は無い。Windows 7 は Trim コマンド非対応の HDD や SSD に対しても常に Trim コマンドを発行しており、Windows 7 が Trim コマンドを発行しているからといって SSD 側が Trim コマンドを受信し SSD 内部で何らかの効果を発揮しているとは断定出来ない。エンドユーザーレベルでは実際に SSD が Trim コマンドを受け取った後に内部で何らかの処理をしているかどうかを確実に確認する方法は無く、Trim コマンド発行後に SSD に何らかの挙動の変化があるかを観察する事である程度推測が出来るだけである (SSD によっては Trim コマンド発行後に速度低下が回復したり Trim をきっかけに GC を行うため発行後暫く I/O スループットやレイテンシに変化がある場合がある)。仕組み上は IDENTIFY DEVICE 情報の Trim コマンド対応ビットが有効化されているだけで、Trim コマンドを受け取っても内部で何の処理もしないという事も可能。(RealSSD C300 FW:0001 等はこの可能性がある)

Windows 7 で TRIM コマンドを発行するケースの例(SSD TOOL BOX 等のユーティリティや他の OS では発行するタイミングが異なる)

パーティションの3分の2以上を使用した状態でファイルを(本当に)削除した場合
ゴミ箱を空にした場合
パーティションを削除した場合
  • 等に Trim コマンドを発行し、
ファイルをゴミ箱に移動した場合
パーティションをフォーマットした場合(たとえフルフォーマットでも)
空のパーティションを削除した場合
  • には 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" と入力しリターンキーを押すと通常のマルチユーザーモードで再起動する

AHCI モードと IDE モード

+ クリックで展開
  • IDE モードは通常のパラレル IDE とコマンドの互換性がある (エミュレーション) モードで、AHCI モードは SATA2 で定義された NCQ やホットプラグやスタッガードスピンアップ、ポートマルチプライヤー対応等の新機能 (これらの機能はメーカーが選択的に採用するかを決定出来るため、SATA2 対応 HDD/SSD であっても機種によって対応していない場合がある) をサポートする IDE とは全く互換性の無い動作モードで両モード時は物理的に同じ SATA ポートであってもそれぞれ別のホストコントローラとして OS に認識される。通常 BIOS で両モードの切り替えが可能。オンボード RAID 付きのマザーの場合は更に RAID モードも選択できる。RAID モードのポート・RAID カードに接続していて RAID ボリュームの一部でないドライブは AHCI 同等の動作モードとなる。メーカー製 PC では IDE/AHCI いずれか片方しかサポートしていない場合がある。以下は Windows OS でのモード切替方法だが、他の OS でもそれぞれのモードに対応した別々のドライバが必要になる可能性がある。

IDE モードから AHCI モードに変更するには (Windows 2000~XP の場合)
  • Windows XP 以前では OS による AHCI のサポートは無い。SATA コントローラーチップのメーカーが AHCI モードに対応したドライバを配布している時のみ AHCI モードの使用が可能。ドライバが入手できた場合、まずドライバをインストールし再起動し BIOS 設定画面にて AHCI モードに変更した後 OS を起動する事で AHCI モードに変更が出来る。AHCI モード接続の SATA デバイスに新規に OS をインストールする場合はインストール画面で F6 キーを押し対応したドライバを FDD で読み込ませる必要がある (nLite 等でドライバ統合済みのインストールディスクを作成する事も可能)。

IDE モードから AHCI モードに変更するには (Windows Vista以降の場合)

IDE→AHCI変更ツール (Windows 2000~7、32/64bit 対応)
  • IDE モードでインストールした OS 環境を簡単に AHCI モードに切り替えるツール。
記事メニュー
目安箱バナー