Jak się dowiedzieć, czy dysk jest dyskiem SSD czy HDD

193

Chcę wiedzieć, czy dysk jest dyskiem SSD, czy dyskiem twardym.

lshwnie jest zainstalowany. Robię yum install lshwi mówi, że nie ma pakietu o nazwie lshw. Nie wiem, która wersja http://pkgs.repoforge.org/lshw/ jest odpowiednia dla mojego CentOS.

Przeszukuję sieć i nie ma nic, co wyjaśniałoby, czy dysk jest dyskiem SSD czy HDD. Czy powinienem je najpierw sformatować?

Wynik fdisk -l:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          14      103424   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              14         536     4194304   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             536       14594   112921600   83  Linux

Disk /dev/sdc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdb: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdd: 480.1 GB, 480103981056 bytes
255 heads, 63 sectors/track, 58369 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
użytkownik4951
źródło
1
Jeśli to naprawdę jest dysk SSD, możesz go sformatować, aby wyrównać bloki usuwania z partycjami.
symcbean
SATA (Serial ATA) odnosi się do typu połączenia napędu i nie oznacza, że ​​jest to dysk twardy (HDD). Dyski SSD mogą być jednocześnie dyskami SATA, więc sugeruję edycję tytułu.
SpellingD

Odpowiedzi:

310

Linux automatycznie wykrywa dysk SSD, a ponieważ wersja jądra 2.6.29, możesz weryfikować za sdapomocą:

cat /sys/block/sda/queue/rotational

Powinieneś dostać 1na dyski twarde i 0na SSD.

Prawdopodobnie nie zadziała, jeśli dysk jest urządzeniem logicznym emulowanym przez sprzęt (np. Kontroler RAID).

Zobacz tę odpowiedź, aby uzyskać więcej informacji ...

Totor
źródło
2
Na Stackoverflow ktoś odkrył, że ta informacja systemowa nie działa.
PythoNic
@Totor Mam dwa dyski, jak mogę dowiedzieć się, który to dysk SSD?
user11498,
2
@ user11498 zamień sdana sdbi sprawdź, który z nich jest dyskiem SSD ...
Totor
3
@Totor Masz rację w napędach „hybrydowych”. Jednak hybrydy z dwoma dyskami pojawiają się jako dwa pojedyncze dyski, przy czym SSHD (Solid-State Hybrid Drive) pojawia się jako pojedynczy dysk. Tak więc, SSHD wykazywałoby rotację 1.
Terrance
6
Na serwerach wirtualnych może być konieczne /sys/block/vda/queue/rotational
pobranie
90

Z lsblk(część util-linuxpakietu):

lsblk -d -o nazwa, rota
NAME ROTA
sda     0
sdb     0
sdc     1

gdzie ROTAoznacza rotational device( 1jeśli prawda, 0jeśli fałsz)

don_crissti
źródło
1
To narzędzie wydaje się zgłaszać te same informacje, co w /sys/block/.../rotational.
dma_k,
@dma_k Nic dziwnego, biorąc pod uwagę, że wydaje się, że używa tego. Spróbuj sam:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
CVn
5
Właściwie patrzyłem na różne sposoby, ponieważ niektóre kontrolery USB nie mówią, że napęd jest w rzeczywistości nieobrotowy (na przykład pamięć flash USB) i w Linuksie nie ma sposobu, aby powiedzieć prawdę. Na koniec dnia naprawiłem to, tworząc wyraźną regułę w /etc/udev/rules.d/90-non-rotational.rules:ACTION=="add|change", SUBSYSTEMS=="usb", ENV{ID_SERIAL}=="SanDisk_Ultra_Fit_*-0:0", ATTR{queue/rotational}="0", ATTR{queue/scheduler}="deadline"
dma_k
lsblkzgłasza „0” dla wszystkich moich starych, dobrych wirujących dysków twardych SATA tutaj (ASROCK mobo). « Niektóre kontrolery USB nie mówią, że napęd faktycznie nie jest obrotowy (na przykład pamięć flash USB) » @dma_k to prawda - i lepiej w ten sposób niż w przypadku zewnętrznych wirujących dysków twardych USB przewodowych IMHA.
tuk0z
50

Użyj smartctl(zainstaluj, instalując smartmontools), aby pobrać informacje o dostawcy,

sudo smartctl -a /dev/sdb

Jeśli zobaczysz taką linię,

Rotation Rate: Solid State Device

To byłby dysk SSD.

stokrotka
źródło
5
Nie znaleziono komendy smartctl
IgorGanapolsky
7
smartctl jest częścią pakietu smartmontools
trr
27

Musiałem to zrobić na VPS i żadne z dostarczonych rozwiązań nie działało dla mnie,

ta odpowiedź załatwiła sprawę

https://serverfault.com/questions/551453/how-do-i-verify-that-my-hosting-provider-gave-me-ssds/551495#551495

więc chodzi o odczytywanie losowych danych z dysku i ocenę czasu.

time for i in `seq 1 1000`; do
    dd bs=4k if=/dev/sda count=1 skip=$(( $RANDOM * 128 )) >/dev/null 2>&1;
done

oto moje wyniki dla dysku SSD

real    0m1.375s
user    0m0.285s
sys     0m0.944s

i dysk twardy

real    0m14.249s
user    0m0.752s
sys     0m6.284s
dav
źródło
Mam nie-SSD, RAID10, a moje wyniki to: prawdziwe 0m1,351s - użytkownik: 0m0,307s - sys: 0m0,560s
orzechy
1
To dobra odpowiedź i działa ogólnie. Chodzi o to, że niektóre dyski twarde są dość szybkie, a wyniki mogą być podobne do SSD. Mimo to ta odpowiedź stanowi dobrą miarę.
itoctopus
1
Na moim VPS bez dysku SSD zapewnia to wyniki takie jak twój przykład SSD. Uważam, że można to oszukać w konfiguracji „hybrydowej” (SSD cached HDD).
trr
nie działa dla mnie Uważam, że dyski SSD i HDD dają podobny wynik.
qqibrow
Na sprzęcie VPS jest zwirtualizowany. Naprawdę nie wiesz, czy twoje pliki są przechowywane na dysku twardym, buforowane lub przechowywane na dysku SSD.
vidarlo
12

Inne odpowiedzi już mówią, jak uzyskać te informacje na wiele sposobów, w tym /proc. Ale należy spodziewać się, że wszystkie te mechanizmy będą działać, jeśli na drodze pojawi się jakakolwiek wirtualizacja, na przykład hybrydowa macierz SAN z wieloma warstwami lub jeśli maszyna Linux jest maszyną wirtualną (gdzie Linux prawdopodobnie zgłosi dysk jako podstawowy dysk obrotowy SCSI , niezależnie od tego, czym tak naprawdę jest sprzęt)

Tim Cutts
źródło
może to być jedna z ważniejszych odpowiedzi ... a także w systemie BIOS lub EFI / UEFI może być konieczne ustawienie trybu kontrolera SATA na AHCI, a następnie oznaczenie każdego dysku jako SSD w bios. Moja płyta Asrock na komputerze domowym jest taka, nie pamiętam, czy coś podobnego było na płytach serwerowych (supermicro), które mam w pracy, ale nie używam SSD w pracy.
ron
@ron - Co rozumiesz przez ustawienie trybu kontrolera SATA na AHCI? Jak wpływa to na możliwość dokładnego zgłaszania, czy urządzenie jest dyskiem SSD, czy nie?
Zmotywowany
sprawdź AHCI vs IDE, sformułowanie z pierwszego wyszukiwania w Internecie: IDE jest uważane za odpowiednie dla przeciętnego użytkownika komputera i jest najbardziej kompatybilne z innymi technologiami, szczególnie starszymi urządzeniami. Brakuje jednak wsparcia dla nowych technologii ... AHCI zapewnia standardowy system, którego projektanci i programiści mogą używać do konfigurowania, wykrywania lub programowania adapterów SATA / AHCI. *
ron
to podstawowe ustawienia w BIOSie, gdzieś w obszarze Pamięć, do wyboru są IDE, AHCI, a także w zależności od marki / modelu / roku płyty głównej może również oferować RAID. Dyski SSD pojawiły się długo po tym, jak IDE stało się przestarzałe, a standardem stał się AHCI, na przykład instalacja Windows95 na komputerze dzisiaj nie rozpoznałaby żadnego sprzętu ... bycie w trybie IDE z pewnością nie pomogłoby w komunikacji z SSD nie tyle dokładności, ale po prostu możliwość komunikacji z kontrolerem SATA opartym na protokołach AHCI.
Ron
9

sprawdzić cat /proc/scsi/scsi. tam powinieneś zobaczyć dokładny model dysku. to po prostu wyszukujesz w modelu informacje o nim.

powtórna rozgrywka
źródło
1
dmesgbędzie zawierać te same informacje. dmesg | grep -i -e scsi -e ata
Matt
3

To jest stary post, ale chciałem udostępnić inny sposób na zrobienie tego, o czym dowiedziałem się przypadkiem:

sg_vpd --page=bdc /dev/sda

To polecenie pobiera istotne dane produktu dla charakterystyki urządzenia blokowego. W przypadku dysku z głowicą obrotową dane wyjściowe będą zawierać: Nominalna prędkość obrotowa: 7200 obr./min. W przypadku dysku SSD będzie to obejmować: Nierotujące medium (np. Półprzewodnikowe)

użytkownik177312
źródło
+1. fajnie, ale działa to na moim (starzejącym się i wkrótce wymienionym) WD Greens mówi Medium rotation rate is not reported. hdparmi smartmonctlpowiedz to samo. Chyba WD nie chce powiedzieć.
cas
sg_vpd -i może być bardziej przydatny, przynajmniej daje informacje o dostawcy z dysku. Nie działa na nalocie, choć.
Dale