2014-05-05 13 views
15

Pracuję nad przenośnym programem OS, który skorzystałby na wykryciu, czy fizyczne urządzenie pamięci masowej jest dyskiem SSD, czy zwykłym starym dyskiem spinowym.Wykrywanie urządzeń pamięci SSD w systemach POSIX

W systemie Linux istnieje:

/sys/block/sdX/queue/rotational 

który zwraca 0 lub 1 jeśli SSD, ale nie jestem pewien, czy jest to najlepszy sposób.

W Windows i UNIX nie znalazłem żadnego sposobu wykrywania go, być może powinienem użyć ioctl DEVICE_SEEK_PENALTY_DESCRIPTOR i sprawdzić szukać penelty (która powinna być bardzo niska w urządzeniu pamięci masowej SSD), czy może użyć DeviceIoControl sprawdzić mediów nominalną szybkość rotacji (która również powinna być bardzo niska na urządzeniu pamięci masowej SSD).

Jakieś zalecenia dla mnie, jak postępować z wykrywaniem dysków SSD w systemach zgodnych z POSIX?

+5

Nie ma standardowego interfejsu, więc będziesz musiał zrobić coś specyficznego dla systemu operacyjnego. Byłoby miło, gdyby istniał prosty, wieloplatformowy sposób jego określenia. W przypadku Linuksa, IIRC 'rotational' będzie również' 0' dla pendriveów USB. – Petesh

+0

@Petesh Trudno byłoby uzyskać go w standardzie POSIX, gdyby nie było niezawodnego sposobu wykrywania urządzeń pamięci SSD. –

+6

Twoja aplikacja prawdopodobnie skorzystałaby z opcji skromnego ustawienia użytkownika, może z ładnej tabeli wszystkich dysków i tego, czy mają być używane w "trybie SSD", "trybie obrotowym", czy też "trybie dysku RAM", "nieznanym NAS tryb urządzenia "," zabawny tryb specjalnego systemu plików "i tak dalej. Nie marnowałbym czasu na opracowanie funkcji wykrywania, która w każdym przypadku prawdopodobnie wymagałaby ręcznego sprawdzenia i zastąpienia. –

Odpowiedz

2

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

IMO chociaż. Możesz użyć metody POSIX określającej system operacyjny i mieć różne metody wykrywania dysków SSD, a gdy nie można tego ustalić, po prostu zapytaj użytkownika końcowego, a jeśli nie wiesz, użyj bezpiecznej wartości domyślnej. Sądzę, że tak właśnie bym zrobił, gdyby nie było metody zgodnej z POSIX (ale prawdopodobnie najpierw sprawdziłbym też listę mailingową POSIX). Mam nadzieję, że to pomoże.

2

Powtórzę powyższy komentarz Lorenzo Gattiego mówiąc, że najlepszym sposobem na zrobienie tego jest prawie na pewno opcja wystawiona na użytkownika. Nie ma na to przenośnego sposobu i nie zdziwiłbym się, gdyby inne systemy operacyjne (szczególnie starsze, które stanowią problem, chyba że masz gwarancję, że twoi użytkownicy używają nieco obecnego systemu operacyjnego) nie mieli możliwości zrobienia tego.

Naprawdę, pole wyboru z napisem "Używam dysku SSD", domyślnie wyłączone, byłoby prawdopodobnie najlepszą opcją, zwłaszcza że te, które prawdopodobnie mają dysk SSD (na razie przynajmniej) wystarczająco zaawansowani technicznie, aby wiedzieć, co mają.

Powiązane problemy