2014-05-05 4 views
15

Ich arbeite an einem tragbaren OS-Programm, das davon profitieren würde, festzustellen, ob ein physisches Speichergerät eine SSD oder eine einfache alte Spin-Disk ist.Erkennung von SSD-Speichergeräten unter POSIX-Betriebssystemen

Unter Linux gibt es:

/sys/block/sdX/queue/rotational 

, die 0 oder 1, wenn SSD zurückkehren, aber ich bin nicht sicher, ob dies der beste Weg ist.

Unter Windows und UNIX Ich habe keine Möglichkeit, es zu erfassen, vielleicht soll ich ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR und überprüfe die Such verwenden gefunden penelty (die auf einem SSD-Speichergerät sehr niedrig sein sollen), oder vielleicht DeviceIoControl verwenden, um die nominalen Medien überprüfen Drehrate (die bei einem SSD-Speichergerät ebenfalls sehr niedrig sein sollte).

Irgendwelche Empfehlungen für mich, wie man mit dem Entdecken der SSD-Disketten auf POSIX kompatiblen OS'es fortsetzt?

+5

Da es keine Standardschnittstelle gibt, müssen Sie auf der ganzen Linie etwas unternehmensspezifisches tun. Es wäre schön, wenn es einen einfachen plattformübergreifenden Weg geben würde, es zu bestimmen. Unter Linux ist IIRC 'rotational' auch für USB-Sticks" 0 ". – Petesh

+0

@Petesh Es wäre schwierig, es in den POSIX-Standard zu bekommen, wenn es keine zuverlässige Möglichkeit zur Erkennung von SSD-Speichergeräten gibt. –

+6

Ihre Anwendung würde wahrscheinlich von einer bescheidenen Benutzer-Set-Option profitieren, vielleicht eine nette Tabelle aller Festplatten und ob sie im "SSD-Modus", "Spinner-Modus" oder möglicherweise "RAM-Disk-Modus", "unbekanntes NAS Gerätemodus "," lustiger spezieller Dateisystemmodus ", und so weiter. Ich würde keine Zeit verschwenden, um eine Erkennungsfunktion zu entwickeln, die wahrscheinlich in jedem Fall manuelle Überprüfung und Überschreibung benötigen würde. –

Antwort

2

Verwandte: https://unix.stackexchange.com/questions/65595/how-to-know-if-a-disk-is-an-ssd-or-an-hdd

obwohl IMO. Sie können die POSIX-Methode zur Bestimmung des Betriebssystems verwenden und verschiedene Methoden zur Erkennung von SSD verwenden. Wenn dies nicht festgestellt werden kann, fragen Sie einfach den Endbenutzer, und wenn er es nicht weiß, haben Sie einen sicheren Standard. Ich denke, das würde ich tun, wenn es keine POSIX-kompatible Methode gäbe (aber ich würde wahrscheinlich auch zuerst die POSIX-Mailing-Liste überprüfen). Ich hoffe das hilft.

2

Ich werde den obigen Kommentar von Lorenzo Gatti wiederholen, indem ich sage, dass der beste Weg, dies zu tun, fast sicher eine Option für den Benutzer ist. Es gibt keine portable Möglichkeit, dies zu tun, und ich würde mich nicht wundern, wenn andere Betriebssysteme (besonders ältere, die ein Problem darstellen, solange Sie nicht garantieren, dass Ihre Benutzer ein etwas aktuelles Betriebssystem verwenden) keine Möglichkeit hatten.

Wirklich, eine Checkbox in Richtung "Ich benutze ein Solid-State-Laufwerk", standardmäßig deaktiviert, wäre wahrscheinlich die beste Option, vor allem, da die wahrscheinlich eine SSD haben (zumindest jetzt) technisch versiert genug, um zu wissen, was sie haben.