SSD(ソリッドステートドライブ)ではなく、通常のハードドライブでのみ有効なツールをリリースしようとしています。実際には、SSDには使用すべきではありません。なぜなら、本当の有効性を持たない多くの読み書きが行われるからです。ドライブがSSDであるかどうかを検出する方法はありますか?
誰かが、特定のドライブがソリッドステートであるかどうかを検出する方法を知っていますか?
SSD(ソリッドステートドライブ)ではなく、通常のハードドライブでのみ有効なツールをリリースしようとしています。実際には、SSDには使用すべきではありません。なぜなら、本当の有効性を持たない多くの読み書きが行われるからです。ドライブがSSDであるかどうかを検出する方法はありますか?
誰かが、特定のドライブがソリッドステートであるかどうかを検出する方法を知っていますか?
SSDを検出することは、dseifertが作成するほど不可能ではありません。 linuxのlibata(http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-04/msg03625.html)にはすでにいくつかの進歩がありますが、まだユーザー準備はできていません。
これがなぜ実行される必要があるのかは間違いありません。基本的にリンクリストと配列の違いです。デフラグなどは通常、SSD上では非生産的です。
SSDデバイスはハードディスクデバイスインターフェイスをエミュレートするため、ハードディスクのように使用できます。これはまた、彼らが何であるかを検出する一般的な方法がないことを意味します。
ドライブの特性(レイテンシ、スピード、サイズ)を使用する可能性がありますが、これはすべてのドライブでは正確ではありません。別の可能性はS.M.A.R.T.を見ることであろう。 (モデル名、特定の値)によってディスクの種類を判断できるかどうかを確認しますが、すべてのドライブのデータベースをそこに保存しない限り、これは100%正確ではありません。
私は同意する、私は唯一の方法は、メーカーがSSD HDDとは対照的なデバイスです。次に、すべてのメーカーとそのSSD文字列パターンのリストを作成します。彼らは私のニーズに合っているかどうかを判断するために、いくつかのデバイスのシリアル番号を調べなければなりませんでした(米国市場向けのiPod、Linux fwのLinksysルータ) – Mihaela
シリアルキーが唯一の方法だとは言えません。ドライブによっては、RPMを1または0として有用に報告するものもあります(http://linux.derkeiler.com/Mailing-Lists/Kernel/2009-04/msg02562.html) –
あなたは正しいかもしれませんが、わかりません。 "いくつかのドライブ" - そこに問題がある、それはすべてのドライブ、投機でなければならない。 – Mihaela
あなたは実際に回転待ち時間をかなり簡単に判断することができます。これは大学のプロジェクトの一環としてこれを一度だけ行いました。それはthis reportに記載されています。レイテンシの良いグラフが表示されている7ページに進んでください。それは約9.3msから1.1msに短縮され、8.2msの低下となる。これは直接60 s/8.2 ms = 7317 RPM
に対応しています。
これは完了しましたwith simple C code - ここでは、位置a
とb
の間をスクラッチファイルで測定する部分です。
/* Measure the difference in access time between a and b. The result * is measured in nanoseconds. */ int measure_latency(off_t a, off_t b) { cycles_t ta, tb; overflow_disk_buffer(); lseek(work_file, a, SEEK_SET); read(work_file, buf, KiB/2); ta = get_cycles(); lseek(work_file, b, SEEK_SET); read(work_file, buf, KiB/2); tb = get_cycles(); int diff = (tb - ta)/cycles_per_ns; fprintf(stderr, "%i KiB to %i KiB: %i nsec\n", a/KiB, b/KiB, diff); return diff; }
Cコードではありません!ジェフは決してそれを扱うことができません! PS:これはポッドキャストに言及し、私たちは飲むようになる! – geoffc
Hehe :-)私はちょうど "デルファイ"タグを見ました...それについて残念:-)私はパススルにそれを変換する人を信じて、私は何年もDelphiを使用していません。 –
あなたは幸運を得ることができSmartmontoolsから
smartctl -i sda
を実行して:我々はすべての方法シリンダーの周りにさまよってきたまで、私たちはますます大きくb
値でこれをやりました。ほとんどすべてのSSDには、ModelフィールドにSSDがあります。しかし保証はありません。
'smartctl -i/dev/sda'を意味します。 – EarthMind
最後に信頼性の高いソリューション! 2人、実際には!
/sys/block/sdX/queue/rotationを確認してください。ここで、sdXはドライブ名です。 0の場合はSSD、1の場合は古いHDDを意味します。
私が指摘したLinuxバージョンには手を加えることができませんが、UbuntuのLinux 3.2とvanilla Linux 3.6には存在し、vanilla 2.6.38には存在しません。 Oracle backportedも、2.6.32に基づいてUnbreakable Enterpriseカーネル5.5に転送されます。
Linux 3.3以降でドライブが回転しているかどうかを確認するためのioctlもあります(this commitによって導入されました)。しかし、通常はsysfsを使うほうが便利です。
この古いしかし非常に重要な質問に答える2つのセント... SCSIにアクセスすると、SCSI INQUIRYコマンドを使用して回転速度を要求することができます。そのためのVPD(Vital Product Data)ページはBlock Device Characteristics
と呼ばれ、番号は0xB1
です。バイト4と、このページの5意味を持つ数含む:
したがって、このフィールドにはSSDの0001h
が必要です。このページに関するT10.org
のドキュメントはhereです。
しかし、この規格の実装状況は私には分かりません。
次のjavascriptコードを書いています。マシンがSSDドライブを使用していたかどうか、ブートドライブだったかどうかを判断する必要がありました。ソリューションはMSFT_PhysicalDisk WMIインターフェイスを使用します。
function main()
{
var retval= false;
// MediaType - 0 Unknown, 3 HDD, 4 SSD
// SpindleSpeed - -1 has rotational speed, 0 has no rotational speed (SSD)
// DeviceID - 0 boot device
var objWMIService = GetObject("winmgmts:\\\\.\\root\\Microsoft\\Windows\\Storage");
var colItems = objWMIService.ExecQuery("select * from MSFT_PhysicalDisk");
var enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext())
{
var objItem = enumItems.item();
if (objItem.MediaType == 4 && objItem.SpindleSpeed == 0)
{
if (objItem.DeviceID ==0)
{
retval=true;
}
}
}
if (retval)
{
WScript.Echo("You have SSD Drive and it is your boot drive.");
}
else
{
WScript.Echo("You do not have SSD Drive");
}
return retval;
}
main();
これは答えではありません。 – TomSlick
あなたのドライブを一覧表示し、それがSSDだ場合、回転ディスクと0の場合ROTAで1を持っているlsblk -d -o name,rota
このコマンド。 出力例:
NAME ROTA sda 1 sdb 0
この質問がある([UNIX&Linux上で解答] http://unix.stackexchange.com/questions/65595/how-to-know-if-a-disk-is- an-ssd-or-an-hdd/65602#65602)。 – Totor
[私のUbuntuがSSDに置かれているかどうかを確認する方法](http://askubuntu.com/q/792814/253474) –