Como saber se um disco é um SSD ou um HDD

159

Eu quero saber se um disco é uma unidade de estado sólido ou um disco rígido.

lshw não está instalado. Eu faço yum install lshw e ele diz que não há nenhum pacote chamado lshw. Não sei qual versão do link é adequada para o meu CentOS.

Eu pesquiso na net e não há nada que explique como saber se uma unidade é SSD ou HDD. Devo apenas formatá-los primeiro?

Resultado de 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
    
por user4951 21.02.2013 / 09:43

8 respostas

250

O Linux detecta automaticamente o SSD e desde versão do kernel 2.6.29, você pode verificar sda com:

cat /sys/block/sda/queue/rotational

Você deve obter 1 para discos rígidos e 0 para um SSD.

Provavelmente não funcionará se o seu disco for um dispositivo lógico emulado pelo hardware (como um controlador RAID).

Veja esta resposta para mais informações. ..

    
por 21.02.2013 / 10:48
71

Com lsblk (parte do pacote util-linux ):

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

em que ROTA significa rotational device ( 1 se verdadeiro, 0 se falso)

    
por 04.09.2015 / 13:02
37

Use smartctl (instale instalando smartmontools ) para recuperar as informações do fornecedor,

sudo smartctl -a /dev/sdb

Se você vir uma linha como essa,

Rotation Rate: Solid State Device

Isso seria uma unidade SSD.

    
por 21.02.2013 / 10:07
23

Eu precisava fazer isso no VPS e nenhuma das soluções fornecidas funcionou para mim,

esta resposta fez o truque

link

Então, trata-se de ler dados aleatórios da unidade e avaliar o tempo.

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

aqui estão os meus resultados para o SSD

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

e HDD

real    0m14.249s
user    0m0.752s
sys     0m6.284s
    
por 08.01.2016 / 15:38
9

As outras respostas já mostram como obter essas informações de várias maneiras, incluindo /proc . Mas você deve esperar que todos esses mecanismos mentirem se houver alguma virtualização no caminho, como um array SAN híbrido com várias camadas, ou se a máquina Linux for uma máquina virtual (onde o Linux provavelmente reportará o disco como um disco rotativo SCSI básico , independentemente do que o hardware realmente é)

    
por 04.09.2015 / 15:25
6

verifique cat /proc/scsi/scsi . lá você deve ver o modelo exato do seu disco. então você apenas procura no Google o modelo para encontrar informações sobre ele.

    
por 21.02.2013 / 10:01
2

Este é um post antigo, mas eu queria compartilhar outra maneira de fazer isso que descobri acidentalmente:

sg_vpd --page=bdc /dev/sda

Esses comandos buscam os Dados Vitais do Produto para as características do dispositivo de bloco. Para um disco de cabeça rotativa, a saída incluirá: Taxa de rotação nominal: 7200 rpm Para um SSD, incluirá:   Meio não rotativo (por exemplo, estado sólido)

    
por 29.06.2016 / 14:13
-1
lsblk -d -o name,rota | awk '{ if ($2 =="1") print $1 "[HDD]"; else if ($2 =="0") print $1 "[SDD]";}'

o comando lsblk que significa bloco de lista tem a capacidade de detectar o tipo de disco: um SSD ou um disco rígido clássico, combinado com o comando awk é apenas tornar a saída legível e mais fácil de ver em um terminal, em vez do que jogar com valor 0 e 1.

    
por 27.04.2018 / 11:49