2012年11月19日月曜日

Trimコマンドの送信を個人でチェックする方法

前回の記事から随分と時間が空いてしまって申し訳ございません。
今回は、RAID0環境またはそれ以外の環境で、Trimコマンドがきちんと送信されているかどうかを個人で検証する方法について説明したいと思います。

前回の記事は、Windows環境におけるTrimコマンドの送信可否についてレポートしました。現状でわかっていることをまとめるとWindows環境でのTrimコマンドの送信は以下の条件を満たしている場合に限定されます(専用ソフト等を使用したTrimコマンドの送信は含みません。あくまでOSの機能として実装されている場合のみを前提としています)。
  1.  Windows7以降でMSの標準ドライバー(IDE/AHCI)を利用している場合
  2. AHCIモードでTrim対応のベンダードライバー(Intelチップセットの場合はIntel製ドライバー、AMDやMarvellなども同様)を利用している場合(OSは、Windows 7以降に限る)
  3. Intel製チップセット搭載マザーを利用し、かつRAIDモードで利用している場合で、RAID構築に利用していないドライブ(OSは、Windows 7以降に限る)
  4.  Intel 7シリーズチップセットを採用したマザーボードにおいてRAID0を構築している場合で、かつVer11以降のIntel製ドライバーを利用している場合(OSは、Windows 7以降で、IntelのV11以降のドライバーならV11.0.XXXXでも送信されることをバスアナで確認しています)
上記の條件が、僕個人として、現在確認ができているWindows環境におけるTrimコマンドの送信条件です。しかし、ネット上の書き込み等をみると、RAID0で利用している場合のTrimコマンドの送信条件を勘違いしている方がいまだに多いようです。

今回の記事は、これを是正したいということもあり、執筆することにしました。
ここで説明する方法でチェックすれば、単体でSSDを利用している場合だけでなく、RAID0で利用している場合でもTrimコマンドが送信されているかを簡単にチェックできます。興味がある方は、ご自分でチェックを行われることをオススメします。

Trimコマンドが送信されているかどうかの検証は、以下の環境があれば行えます。
  • Windows 7以降
  • ファイル復元ソフト
  • Read Zero After Trim対応SSDまたはそれに準ずる機能を搭載したSSD(詳細は後述)
また、確認手順は、以下の通りです。ごみ箱から削除したファイルをファイル復元ソフトで復元し、そのファイルの内容をするだけという簡単な内容です。復元したファイルが「0」で埋まっ ていれば、Trimコマンドが送信されています。逆に正常にファイルを復元できた場合は、Trimコマンドが送信されていません。
  1. ファイルをごみ箱にドラッグ&ドロップする
  2. こび箱を空にする(ごみ箱からファイルを削除する
  3. ファイル復元ソフトでごみ箱から削除したファイルを復元する
  4. 復元したファイルが「0」で埋まっているかどうかを確認する
なぜ、この方法で確認できるかと言いますと、現在発売中のSSDは、一部の製品を除き、TrimコマンドによってOS側から受け取った論理アドレス(LBA)に対して、書き込みが発生する前に読み出しが発生すると「0」を返す仕様のSSDが主流となってきているからです。このような仕様を、俗にRead Zero After TrimやDeterministic Zeroing TRIM(条件付き)と呼びます。

Windows 7以降では、ごみ箱からファイルを削除すると、OS(Windows)が削除したファイルが書き込まれていた論理アドレスをTrimコマンドでSSDに通知します。しかし、ファイルシステムレベルでは、ごみ箱から削除してもそのファイルに削除フラグを立てるだけで、削除されたファイルが書き込まれていた場所(論理アドレス)の情報は残っています。これより、ファイル復元ソフトを利用すれば、ごみ箱から削除したファイルを復元できます。

しかし、前述した仕様のSSDは、Trimコマンドで送られてきた論理アドレスに対して、書き込みが発生する前に読み出しが発生すると、そのアドレスのデータは、すべて「0」が返ってきます。このため、ファイルの復元そのものは問題なくできますが、中身のデータはすべて「0」になるというわけです。これは、単体で利用していようが、RAID0構成に利用されていようが結果は同じです。

実際の結果をお見せします。
以下の画面は、Read Zero After TrimおよびDeterministic Zeroing TRIM対応のSAMSUNG SSD 840とSAMSUNG SSD 840 Proを使ってRAID0を構築し、ごみ箱から削除したファイルを復元したときの結果です。検証に利用した環境は以下の通りです。
  • マザーボード:Gigabyte Z77MX-D3H Rev1.0(Intel Z77Express採用)
  • RAIDのOROMのバージョン:11.1.0.1413
  • ドライバーのバージョン:11.5.0.1207
  • ファイル復元ソフト:FINALDATA10

これをみてもお分かりのように、ファイルはすべて「0」で埋まっています。いうまでもなく、これは、Read Zero After Trimによって、Trimコマンドで送られた論理アドレスのデータが「0」となるからです。ちなみに、OS側のTrim送信をオフに設定すると、以下のようになり、正常なファイルが復元されます。


このようにTrimコマンドがきちんと送信されているかどうかは、必要な機器さえ揃っていれば、個人でも簡単に確認できます。ただし、この検証を行うには、前述したようにRead Zero After Trim対応SSDまたはそれに準ずる機能を搭載したSSDを利用することが必須です。この条件を満たしていない場合は、Trimコマンドが送られていても正常にファイルが復元されてしまい、本当にコマンドが送られているかを確認できません。

僕が個人的に確認している上記仕様のSSDは、Crucial m4、Plextor M3P/M5P、Intel 320/520、SAMSUNG 830/840シリーズのみです。Sandforce製コントローラを採用した製品は、Intel製SSDぐらいしか「0」を返してくれないので注意してください。