Cómo saber si un disco es un SSD o un HDD


193

Quiero saber si un disco es una unidad de estado sólido o un disco duro.

lshwno está instalado. Lo hago yum install lshwy dice que no hay un paquete llamado lshw. No sé qué versión de http://pkgs.repoforge.org/lshw/ es adecuada para mi CentOS.

Busco en la red y no hay nada que explique cómo saber si una unidad es SSD o HDD. ¿Debería formatearlos primero?

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
Si esto realmente es un SSD, es posible que desee formatearlo para alinear los bloques de borrado con las particiones.
symcbean

SATA (Serial ATA) se refiere al tipo de conexión de la unidad y no implica que sea una unidad de disco duro (HDD). Los SSD pueden ser simultáneamente SATA, por lo que sugiero editar el título.
SpellingD

Respuestas:


311

Linux detecta automáticamente SSD, y desde la versión del kernel 2.6.29, puede verificar sdacon:

cat /sys/block/sda/queue/rotational

Debe obtener 1discos duros y 0un SSD.

Probablemente no funcionará si su disco es un dispositivo lógico emulado por hardware (como un controlador RAID).

Vea esta respuesta para más información ...


2
En Stackoverflow, alguien descubrió que esta información del sistema no funcionaba.
PythoNic

@ Motor Tengo dos discos, ¿cómo puedo saber cuál es el SSD?
user11498

2
@ user11498 reemplazar sdapor sdby ver cuál es SSD ...
Totor

3
@ Motor Tiene razón en las unidades "híbridas". Sin embargo, los híbridos de doble unidad se muestran como dos unidades individuales, donde SSHD (Unidad híbrida de estado sólido) se muestra como una sola unidad. Entonces, el SSHD mostraría una rotación de 1.
Terrance

66
En servidores virtuales, es posible que deba buscar/sys/block/vda/queue/rotational
MonoThreaded el

90

Con lsblk(parte del util-linuxpaquete):

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

donde ROTAsignifica rotational device( 1si es verdadero, 0si es falso)


1
Esa utilidad parece informar la misma información que en /sys/block/.../rotational.
dma_k

@dma_k No es de extrañar, considerando que parece usar ese. Pruébelo usted mismo:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
un CVn

55
En realidad, estaba buscando varias formas porque algunos controladores USB no dicen que la unidad no es realmente giratoria (por ejemplo, USB flash) y no hay forma en Linux de decir la verdad. Al final del día, lo arreglé creando la regla explícita en /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

lsblkinforma "0" para todos mis viejos discos duros giratorios SATA aquí (ASROCK mobo). « Algunos controladores USB no dicen que la unidad no es realmente rotacional (por ejemplo, USB flash) » @dma_k esto es tan cierto, y mejor de esta manera que de la otra manera para los discos duros de giro externo con cable USB IMHA.
tuk0z

50

Use smartctl(instalar mediante instalación smartmontools) para recuperar información del proveedor,

sudo smartctl -a /dev/sdb

Si ves una línea como esta,

Rotation Rate: Solid State Device

Eso sería una unidad SSD.


55
comando smartctl no encontrado
IgorGanapolsky

77
smartctl es parte del paquete smartmontools
trr

27

Necesitaba hacer esto en el VPS y ninguna de las soluciones proporcionadas funcionó para mí,

esta respuesta hizo el truco

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

por lo tanto, se trata de leer datos aleatorios del disco y evaluar el tiempo.

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

Aquí están mis resultados para SSD

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

y HDD

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

Tengo un no-ssd, RAID10, y mis resultados son: real 0m1.351s - usuario: 0m0.307s - sys: 0m0.560s
the_nuts

1
Esta es una buena respuesta y funciona en todos los ámbitos. La cuestión es que algunos discos duros son bastante rápidos y los resultados pueden ser similares a los de los discos SSD. Aún así, esta respuesta proporciona una buena métrica.
itoctopus

1
En mi VPS sin SSD, esto proporciona resultados como su ejemplo de SSD. Creo que esto puede ser engañado por configuraciones "híbridas" (SSD en caché HDD).
Trr

no funciona para mi Encuentro que SSD y HDD producen resultados similares.
qqibrow

En un hardware VPS virtualizado. Realmente no puede saber si sus archivos están almacenados en un HDD, almacenados en caché o almacenados en un SSD.
vidarlo

12

Las otras respuestas ya le dicen cómo obtener esta información de varias maneras, incluidas /proc. Pero debe esperar que todos estos mecanismos descansen si hay alguna virtualización en el camino, como una matriz SAN híbrida con múltiples niveles, o si la máquina Linux es una máquina virtual (donde Linux probablemente informará el disco como un disco giratorio SCSI básico , independientemente de cuál sea realmente el hardware)


esta puede ser una de las respuestas más importantes ... y también dentro del BIOS, o EFI / UEFI puede necesitar configurar el modo del controlador SATA en AHCI y luego también marcar cada disco como SSD dentro de la BIOS. Mi placa Asrock en la PC hogareña es así, no puedo recordar si había algo similar en las placas de servidor (supermicro) que tengo en el trabajo pero no uso SSD en el trabajo.
ron

@ron - ¿Qué quieres decir con configurar el modo del controlador SATA en AHCI? ¿Cómo afecta la capacidad de informar con precisión si el dispositivo es un SSD o no?
Motivado el

busque AHCI vs IDE, redacción de la primera búsqueda en la web: IDE se considera adecuado para el usuario promedio de computadoras, y es el más compatible con otras tecnologías, particularmente dispositivos más antiguos. Sin embargo, carece de soporte para nuevas tecnologías ... AHCI proporciona un sistema estándar que los diseñadores y desarrolladores pueden usar para configurar, detectar o programar adaptadores SATA / AHCI. *
ron

esa es una configuración básica en el BIOS, en algún lugar bajo Almacenamiento, las opciones son IDE, AHCI, y también dependiendo de la marca / modelo / año de la placa base también pueden ofrecer RAID. Los SSD salieron mucho después de que IDE básicamente se volviera obsoleto y el estándar se convirtiera en AHCI. Por ejemplo, la instalación de Windows95 en una computadora hoy no reconocería ningún hardware ... estar en modo IDE ciertamente no ayudaría a la comunicación con un SSD, no tanta precisión, sino simplemente ser capaz de comunicarse con un controlador SATA que se basa en protocolos AHCI.
ron

9

comprobar cat /proc/scsi/scsi. allí debería ver el modelo exacto de su disco. entonces solo googleas el modelo para encontrar información al respecto.


1
dmesgcontendrá la misma información. dmesg | grep -i -e scsi -e ata
Matt

3

Esta es una publicación antigua pero quería compartir otra forma de hacerlo que descubrí por accidente:

sg_vpd --page=bdc /dev/sda

Este comando obtiene los datos vitales del producto para las características del dispositivo de bloque. Para un disco de cabezal giratorio, la salida incluirá: Velocidad de rotación nominal: 7200 rpm Para un SSD, incluirá: Medio no giratorio (por ejemplo, estado sólido)


+1. agradable, pero ejecutar eso en mi (envejecimiento y pronto para ser reemplazado) dice WD Greens Medium rotation rate is not reported. hdparmy smartmonctldecir lo mismo Supongo que WD no quiere decirlo.
cas

sg_vpd -i podría ser más útil, al menos proporciona información del proveedor desde la unidad. No funciona en una redada, aunque.
Dale
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.