Come sapere se un disco è un SSD o un HDD


193

Voglio sapere se un disco è un'unità a stato solido o un disco rigido.

lshwnon è installato. Lo faccio yum install lshwe dice che non esiste un pacchetto chiamato lshw. Non so quale versione di http://pkgs.repoforge.org/lshw/ sia adatta per il mio CentOS.

Cerco in rete e non c'è nulla che spieghi come sapere se un'unità è SSD o HDD. Devo solo formattarli prima?

Risultato di 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

1
Se questo è davvero un SSD, potresti voler riformattarlo per allineare i blocchi di cancellazione con le partizioni.
symcbean,

SATA (Serial ATA) si riferisce al tipo di connessione dell'unità e non implica che si tratti di un disco rigido (HDD). Gli SSD possono essere contemporaneamente SATA, quindi sto suggerendo una modifica al titolo.
OrtografiaD

Risposte:


311

Linux rileva automaticamente SSD e dalla versione 2.6.29 del kernel, è possibile verificare sdacon:

cat /sys/block/sda/queue/rotational

Dovresti ottenere 1dischi rigidi e 0un SSD.

Probabilmente non funzionerà se il tuo disco è un dispositivo logico emulato dall'hardware (come un controller RAID).

Vedi questa risposta per maggiori informazioni ...


2
Su Stackoverflow qualcuno ha scoperto che questa informazione di sistema non funzionava.
PythoNic,

@Totor Ho due dischi, come posso sapere quale è ssd?
user11498

2
@ user11498 sostituisci sdacon sdbe vedi quale è SSD ...
Totor

3
@Totor Hai ragione nelle unità "ibride". Tuttavia, gli ibridi a doppia unità vengono visualizzati come due singole unità, in cui SSHD (Solid-State Hybrid Drive) si presenta come una singola unità. Quindi, l'SSHD mostrerebbe una rotazione di 1.
Terrance

6
Sui server virtuali, potrebbe essere necessario recuperare/sys/block/vda/queue/rotational
MonoThreaded

90

Con lsblk(parte del util-linuxpacchetto):

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

dove ROTAsignifica rotational device( 1se vero, 0se falso)


1
Tale utility sembra riportare le stesse informazioni di /sys/block/.../rotational.
dma_k,

@dma_k Non c'è da stupirsi, considerando che sembra usare quello. Provalo tu stesso:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
un CVn

5
In realtà stavo esaminando vari modi perché alcuni controller USB non dicono che l'unità non è effettivamente rotazionale (ad esempio, flash USB) e in Linux non c'è modo di dire la verità. Alla fine della giornata ho risolto il /etc/udev/rules.d/90-non-rotational.rulesACTION=="add|change", SUBSYSTEMS=="usb", ENV{ID_SERIAL}=="SanDisk_Ultra_Fit_*-0:0", ATTR{queue/rotational}="0", ATTR{queue/scheduler}="deadline"
problema

lsblkriporta "0" per tutti i miei buoni vecchi HDD con rotazione SATA qui (ASROCK mobo). « Alcuni controller USB non dicono che l'unità sia effettivamente non rotazionale (ad esempio, USB flash) » @dma_k questo è così vero - e meglio così che nell'altro modo per gli HDD con filatura esterna cablati USB IMHA.
tuk0z,

50

Utilizzare smartctl(installa installando smartmontools) per recuperare informazioni sul fornitore,

sudo smartctl -a /dev/sdb

Se vedi una linea come questa,

Rotation Rate: Solid State Device

Sarebbe un disco SSD.


5
smartctl comando non trovato
IgorGanapolsky

7
smartctl fa parte del pacchetto
smartmontools

27

Avevo bisogno di farlo sul VPS e nessuna delle soluzioni fornite ha funzionato per me,

questa risposta ha funzionato

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

quindi, si tratta di leggere dati casuali dall'unità e valutare l'ora.

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

ecco i miei risultati per SSD

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

e HDD

real    0m14.249s
user    0m0.752s
sys     0m6.284s

Ho un non-ssd, RAID10, e i miei risultati sono: 0m1.351s reali - utente: 0m0.307s - sys: 0m0.560s
the_nuts

1
Questa è una buona risposta e funziona su tutta la linea. Il fatto è che alcuni HDD sono abbastanza veloci e i risultati possono essere simili a quelli degli SSD. Tuttavia, questa risposta fornisce una buona metrica.
itoctopus,

1
Sul mio VPS senza un SSD questo fornisce risultati come il tuo esempio SSD. Credo che questo potrebbe essere ingannato dalle configurazioni "ibride" (SSD cache HDD).
trr

non funziona per me. Trovo che SSD e HDD producano risultati simili.
qqibrow,

Su un hardware VPS virtualizzato. Non puoi davvero dire se i tuoi file sono archiviati su un HDD, memorizzati nella cache o memorizzati su un SSD.
vidarlo,

12

Le altre risposte ti dicono già come ottenere queste informazioni in vari modi, tra cui /proc. Ma devi aspettarti che tutti questi meccanismi mentano se c'è qualche virtualizzazione in mezzo, come un array SAN ibrido con più livelli o se la macchina Linux è una macchina virtuale (dove Linux probabilmente segnalerà il disco come disco rotante SCSI di base , indipendentemente dall'hardware in uso)


questa potrebbe essere una delle risposte più importanti ... e anche all'interno del BIOS, o EFI / UEFI, potrebbe essere necessario impostare la modalità del controller SATA su AHCI e quindi contrassegnare ogni disco come SSD all'interno del BIOS. La mia scheda Asrock sul PC di casa è così, non ricordo se c'era una cosa simile sulle schede server (supermicro) che ho al lavoro ma non uso SSD al lavoro.
ron

@ron - Cosa intendi impostando la modalità del controller SATA su AHCI? In che modo influisce sulla capacità di segnalare accuratamente se il dispositivo è un SSD o no?
Motivato il

cercare AHCI vs IDE, formulazione della prima ricerca web: IDE è considerato adeguato per l'utente medio del computer ed è il più compatibile con altre tecnologie, in particolare i dispositivi più vecchi. Tuttavia, manca il supporto per le nuove tecnologie ... AHCI fornisce un sistema standard che i progettisti e gli sviluppatori possono utilizzare per configurare, rilevare o programmare gli adattatori SATA / AHCI. *
ron

ovvero le impostazioni di base nel BIOS, da qualche parte in Archiviazione, le opzioni sono IDE, AHCI e anche a seconda della marca / modello / anno della scheda madre può offrire anche RAID. Gli SSD sono usciti molto tempo dopo che l'IDE è diventato praticamente obsoleto e lo standard è diventato AHCI, ad esempio l'installazione di Windows95 su un computer oggi non riconoscerebbe alcun hardware ... essere in modalità IDE certamente non aiuterebbe la comunicazione con un SSD non così tanta precisione ma semplicemente essere in grado di comunicare con un controller SATA basato sui protocolli AHCI.
Ron

9

controllare cat /proc/scsi/scsi. lì dovresti vedere il modello esatto del tuo disco. quindi basta google il modello per trovare informazioni al riguardo.


1
dmesgconterrà le stesse informazioni. dmesg | grep -i -e scsi -e ata
Matt,

3

Questo è un vecchio post, ma volevo condividere un altro modo per farlo, che ho scoperto per caso:

sg_vpd --page=bdc /dev/sda

Questo comando recupera i dati di prodotto vitali per le caratteristiche del dispositivo a blocchi. Per un disco a testina rotante, l'uscita includerà: Velocità di rotazione nominale: 7200 rpm Per un SSD, includerà: Mezzo non rotante (ad es. Stato solido)


+1. bello, ma eseguendolo sul mio (invecchiamento e presto da sostituire) dice WD Greens Medium rotation rate is not reported. hdparme smartmonctldire lo stesso. Immagino che WD non voglia dirlo.
CAS

sg_vpd -i potrebbe essere più utile, almeno fornisce informazioni sul fornitore dall'unità. Non funziona su un raid, anche se.
Dale,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.