Como saber se um disco é um SSD ou um HDD


193

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

lshwnão está instalado. Eu faço yum install lshwe diz que não há nenhum pacote chamado lshw. Não sei qual versão do http://pkgs.repoforge.org/lshw/ é 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

1
Se esse é realmente um SSD, convém reformatá-lo para alinhar os blocos de apagamento às partições.
symcbean 21/02

SATA (Serial ATA) refere-se ao tipo de conexão da unidade e não implica que seja uma unidade de disco rígido (HDD). Os SSDs podem ser simultaneamente SATA, por isso estou sugerindo uma edição no título.
SpellingD

Respostas:


310

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

cat /sys/block/sda/queue/rotational

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

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

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


2
No Stackoverflow, alguém descobriu que essa informação do sistema não funcionava.
PythoNic

@ Motor Eu tenho dois discos, como posso descobrir qual é o SSD?
user11498

2
@ user11498 substituir sdapor sdbe ver qual é o SSD ...
Totor

3
@ Motor Você está correto nas unidades "híbridas". No entanto, os híbridos de unidade dupla aparecem como duas unidades individuais, onde SSHD (Unidade Híbrida de Estado Sólido) aparece como uma unidade única. Assim, o SSHD iria mostrar rotação do 1.
Terrance

6
Em servidores virtuais, você pode precisar de ir buscar/sys/block/vda/queue/rotational
MonoThreaded

90

Com lsblk(parte do util-linuxpacote):

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

onde ROTAsignifica rotational device( 1se verdadeiro, 0se falso)


1
Esse utilitário parece relatar as mesmas informações que em /sys/block/.../rotational.
dma_k

@dma_k Não é de admirar, considerando que parece usar esse. Tente você mesmo:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
um CVn

5
Na verdade, eu estava olhando de várias maneiras, porque alguns controladores USB não dizem que a unidade é realmente não rotacional (por exemplo, flash USB) e não há como o Linux dizer a verdade. No final do dia /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"
corrigi

lsblkrelata "0" para todos os meus bons e velhos discos rígidos SATA aqui (ASROCK mobo). « Alguns controladores USB não dizem que a unidade não é rotacional (por exemplo, flash USB) » @dma_k isso é verdade - e melhor assim do que o contrário dos HDDs giratórios externos com fio IMHA da USB .
Tuk0z 14/09/16

50

Use smartctl(instale instalando smartmontools) para recuperar 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.


5
Comando smartctl não encontrado
IgorGanapolsky

7
smartctl faz parte do pacote smartmontools
trr 16/08

27

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

esta resposta fez o truque

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

Portanto, trata-se de ler dados aleatórios do drive 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 meus resultados para SSD

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

e HDD

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

Eu tenho um não-ssd, RAID10, e meus resultados são: 0m1.351s reais - Usuário: 0m0.307s - SYS: 0m0.560s
the_nuts

1
Esta é uma boa resposta e funciona de maneira geral. O problema é que alguns HDDs são bastante rápidos e os resultados podem ser semelhantes aos dos SSDs. Ainda assim, essa resposta fornece uma boa métrica.
itoctopus

1
No meu VPS sem um SSD, isso fornece resultados como o seu exemplo de SSD. Acredito que isso possa ser enganado pelas configurações "híbridas" (SSD em cache HDD).
trr

não funciona para mim. Acho que SSD e HDD produzem resultados semelhantes.
Qqibrow 03/10

Em um hardware VPS é virtualizado. Você realmente não pode dizer se seus arquivos estão armazenados em um disco rígido, armazenados em cache ou armazenados em um SSD.
vidarlo 9/02

12

As outras respostas já explicam como obter essas informações de várias maneiras, inclusive /proc. Mas você deve esperar que todos esses mecanismos ocorram se houver alguma virtualização no caminho, como uma matriz SAN híbrida 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 seja)


essa pode ser uma das respostas mais importantes ... e também dentro do BIOS, ou EFI / UEFI, pode ser necessário definir o modo do controlador SATA para AHCI e depois marcar cada disco como SSD no BIOS. Minha placa Asrock no PC doméstico é assim, não me lembro se havia algo parecido nas placas de servidor (supermicro) que tenho no trabalho, mas não uso SSD no trabalho.
ron

@ron - O que você quer dizer com definir o modo do controlador SATA para AHCI? Como isso afeta a capacidade de informar com precisão se o dispositivo é um SSD ou não?
Motivado

consulte AHCI vs IDE, com base na primeira pesquisa na Web: o IDE é considerado adequado para o usuário médio do computador e é o mais compatível com outras tecnologias, principalmente dispositivos mais antigos. No entanto, falta suporte para novas tecnologias ... O AHCI fornece um sistema padrão que designers e desenvolvedores podem usar para configurar, detectar ou programar adaptadores SATA / AHCI. *
ron

que é uma configuração básica do BIOS, em algum lugar em Storage, as opções são IDE, AHCI e, dependendo da marca / modelo / ano da placa-mãe, também podem oferecer RAID. Os SSDs saíram muito tempo depois que o IDE basicamente ficou obsoleto e o padrão se tornou AHCI. Por exemplo, instalar o Windows95 em um computador hoje em dia não reconheceria nenhum hardware ... estar no modo IDE certamente não ajudaria a comunicação com um SSD com tanta precisão, mas simplesmente ser capaz de se comunicar com um controlador SATA baseado em protocolos AHCI.
ron

9

cheque cat /proc/scsi/scsi. lá você deve ver o modelo exato do seu disco. basta pesquisar no modelo do Google para encontrar informações sobre ele.


1
dmesgconterá a mesma informação. dmesg | grep -i -e scsi -e ata
Matt

3

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

sg_vpd --page=bdc /dev/sda

Este comando busca 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)


+1. agradável, mas executando isso no meu (envelhecimento e em breve será substituído), diz o WD Greens Medium rotation rate is not reported. hdparme smartmonctldiga o mesmo. Eu acho que a WD não quer contar.
cas

sg_vpd -i pode ser mais útil, pelo menos fornece informações do fornecedor a partir da unidade. Não funciona em um ataque, tho '.
Dale
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.