Quiero saber si un disco es una unidad de estado sólido o un disco duro.
lshw
no está instalado. Hago yum install lshw
y 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?
Consecuencia 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
Linux detecta automáticamente SSD y desde versión del núcleo 2.6.29, puede verificar sda
con:
cat /sys/block/sda/queue/rotational
Deberías obtener 1
para discos duros y 0
para un SSD.
Probablemente no funcionará si su disco es un dispositivo lógico emulado por hardware (como un controlador RAID).
Ver esta respuesta para más información ...
Con lsblk
(parte de la util-linux
paquete):
lsblk -d -o nombre, rota
NAME ROTA
sda 0
sdb 0
sdc 1
donde ROTA
significa rotational device
(1
si es verdad, 0
si es falso)
Use smartctl
(instalar instalando 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.
Necesitaba hacer esto en el VPS y ninguna de las soluciones proporcionadas funcionó para mí,
esta respuesta hizo el truco
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
Las otras respuestas ya le dicen cómo obtener esta información de varias maneras, incluyendo /proc
. Pero debe esperar que todos estos mecanismos mientan si hay alguna virtualización en el camino, como una matriz híbrida SAN con múltiples niveles, o si la máquina Linux es una máquina virtual (donde Linux probablemente informe el disco como un disco giratorio SCSI básico, independientemente de cuál sea realmente el hardware)
cheque 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.
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)
Escriba esto en su terminal de Linux:
cat /proc/scsi/scsi
Como el mío:
$ cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: ST1000LM024 HN-M Rev: 0004
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: SAMSUNG SSD PM83 Rev: 3D1Q
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: HL-DT-ST Model: DVD+-RW GT80N Rev: A103
Type: CD-ROM ANSI SCSI revision: 05
Puede ver el modelo de su disco duro si es SSD o HHD.
lsblk -d -o name,rota | awk '{ if ($2 =="1") print $1 "[HDD]"; else if ($2 =="0") print $1 "[SDD]";}'
el comando lsblk que representa el bloque de lista tiene la capacidad de detectar el tipo de disco: un SSD o un disco duro clásico, combinado con el comando awk, solo hace que la salida sea legible y más fácil de ver en un terminal, en lugar de jugar con 0 y 1 valor.
find /sys/block/* -maxdepth 1 -exec echo {} \; -exec grep '0' {}/queue/rotational \; | grep -B1 '^0' | grep '^/' | sed 's/^.*\///g'
Esto busca todos los dispositivos de bloque y verifica si es giratorio (1); si no (0) es ssd.
Esto solo muestra discos marcados como ssd.