Comment savoir si un disque est un SSD ou un disque dur


193

Je souhaite savoir si un disque est un lecteur à semi-conducteurs ou un disque dur.

lshwN'est pas installé. Je fais yum install lshwet il dit qu'il n'y a pas de paquet nommé lshw. Je ne sais pas quelle version de http://pkgs.repoforge.org/lshw/ convient à mon CentOS.

Je cherche sur le net et il n'y a rien qui explique comment savoir si un lecteur est un disque SSD ou HDD. Devrais-je simplement les formater en premier?

Résultat 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
S'il s'agit vraiment d'un disque SSD, vous voudrez peut-être le reformater pour aligner les blocs d'effacement sur les partitions.
symcbean

SATA (Serial ATA) fait référence au type de connexion du lecteur et n'implique pas qu'il s'agisse d'un lecteur de disque dur (HDD). Les disques SSD peuvent être simultanément SATA, je suggère donc de modifier le titre.
Orthographe le

Réponses:


311

Linux détecte automatiquement les disques SSD et, depuis la version 2.6.29 du noyau, vous pouvez vérifier sdaavec:

cat /sys/block/sda/queue/rotational

Vous devriez obtenir 1pour les disques durs et 0pour un SSD.

Cela ne fonctionnera probablement pas si votre disque est un périphérique logique émulé par le matériel (comme un contrôleur RAID).

Voir cette réponse pour plus d'informations ...


2
Sur Stackoverflow, quelqu'un a découvert que cette information système ne fonctionnait pas.
Pythonic

@Totor J'ai deux disques, comment puis-je savoir lequel est ssd?
user11498

2
@ user11498 remplacer sdapar sdbet voir lequel est SSD ...
Totor

3
@Totor Vous avez raison dans les lecteurs "hybrides". Toutefois, les systèmes hybrides à double disque apparaissent sous forme de deux disques individuels, où SSHD (Solid-State Hybrid Drive) apparaît sous forme de disque simple. Ainsi, le SSHD montrerait une rotation de 1.
Terrance

6
Sur les serveurs virtuels, vous devrez peut-être récupérer/sys/block/vda/queue/rotational
MonoThreaded

90

Avec lsblk(une partie du util-linuxpaquet):

lsblk -d -o nom, rotation
NAME ROTA
sda     0
sdb     0
sdc     1

ROTAsignifie rotational device( 1si vrai, 0si faux)


1
Cet utilitaire semble rapporter les mêmes informations que dans /sys/block/.../rotational.
dma_k

@dma_k Petite merveille, vu qu'il semble utiliser celui-là. Essayez vous-même:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
un CVn

5
En fait, je cherchais de nombreuses façons, car certains contrôleurs USB ne disent pas que le lecteur est en fait non rotatif (par exemple, une clé USB) et il n’ya aucun moyen sous Linux de dire la vérité. En fin de journée, j'ai corrigé cela en créant la règle explicite dans /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

lsblksignale "0" pour tous mes bons vieux disques durs SATA (ASROCK mobo). « Certains contrôleurs USB n'indiquent pas que le lecteur est réellement non rotatif (par exemple, une clé USB) » @dma_k, cela est tellement vrai - et meilleur de cette façon que pour les disques durs externes qui tournent avec un câble externe IMHA.
tuk0z

50

Utiliser smartctl(installer par installer smartmontools) pour récupérer les informations du fournisseur,

sudo smartctl -a /dev/sdb

Si vous voyez une ligne comme celle-ci,

Rotation Rate: Solid State Device

Ce serait un lecteur SSD.


5
smartctl command not found
IgorGanapolsky

7
smartctl fait partie du forfait smartmontools
compter du

27

Je devais faire cela sur le VPS et aucune des solutions fournies ne fonctionnait pour moi,

cette réponse a fait le tour

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

il s’agit donc de lire des données aléatoires à partir du lecteur et d’évaluer le temps.

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

voici mes résultats pour SSD

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

et disque dur

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

J'ai un non-SSD, RAID10, et mes résultats sont les suivants: real 0m1.351s - utilisateur: 0m0.307s - sys: 0m0.560s
the_nuts

1
C'est une bonne réponse et cela fonctionne à tous les niveaux. Le fait est que certains disques durs sont assez rapides et les résultats peuvent être similaires à ceux des disques SSD. Pourtant, cette réponse fournit une bonne métrique.
Itoctopus

1
Sur mon VPS sans SSD, cela fournit des résultats similaires à votre exemple de SSD. Je crois que cela peut être dupé par des configurations "hybrides" (disques durs en cache SSD).
trr

ça ne marche pas pour moi. Je trouve que les disques SSD et HDD produisent des résultats similaires.
Qqibrow

Sur un matériel VPS virtualisé. Vous ne pouvez pas vraiment savoir si vos fichiers sont stockés sur un disque dur, mis en cache ou stockés sur un SSD.
vidarlo

12

Les autres réponses vous expliquent déjà comment obtenir ces informations de différentes manières, notamment /proc. Mais vous devez vous attendre à ce que tous ces mécanismes soient présents s'il existe une quelconque virtualisation, telle qu'une baie de stockage SAN hybride à plusieurs niveaux, ou si la machine Linux est une machine virtuelle (où Linux signalera probablement le disque comme un disque rotatif SCSI de base). , peu importe ce que le matériel est vraiment)


C’est peut-être l’une des réponses les plus importantes… et dans le BIOS, ou EFI / UEFI, il peut être nécessaire de définir le mode du contrôleur SATA sur AHCI, puis de marquer chaque disque en tant que SSD dans le bios. Ma carte Asrock sur le PC à la maison est comme ceci, je ne me souviens pas s’il y avait une chose semblable sur les cartes de serveur (supermicro) que j’ai au travail mais je n’utilise pas le SSD au travail.
dimanche

@ron - Qu'entendez-vous par la définition du mode du contrôleur SATA sur AHCI? Comment cela affecte-t-il la possibilité de signaler avec précision si le périphérique est un SSD ou non?
Motivé

Recherchez AHCI vs IDE, libellé de la première recherche sur le Web: IDE est considéré comme adéquat pour l’utilisateur informatique moyen, et est la plus compatible avec d’autres technologies, en particulier les appareils plus anciens. Cependant, il manque de soutien pour les nouvelles technologies ... AHCI offre un système standard que les concepteurs et les développeurs peuvent utiliser pour configurer, détecter ou d'un programme adaptateurs SATA / AHCI *.
ron

c’est un paramètre de base dans le BIOS, quelque part sous Stockage, les choix sont IDE, AHCI, et selon la marque / le modèle / l’année de la carte mère, le RAID peut également être proposé. Les SSD sont sortis bien après que l'EDI soit devenu obsolète et que la norme devienne AHCI. Par exemple, installer Windows 95 sur un ordinateur aujourd'hui ne reconnaîtrait aucun matériel ... être en mode IDE n'aiderait certainement pas la communication avec un SSD avec moins de précision mais simplement être capable de communiquer avec un contrôleur SATA basé sur les protocoles AHCI.
ron

9

vérifier cat /proc/scsi/scsi. là vous devriez voir le modèle exact de votre disque. alors vous venez de google le modèle pour trouver des informations à ce sujet.


1
dmesgcontiendra la même information. dmesg | grep -i -e scsi -e ata
Matt

3

Ceci est un ancien post mais je voulais partager une autre façon de faire ce que j'ai découvert par hasard:

sg_vpd --page=bdc /dev/sda

Cette commande extrait les données de produit vitales pour les caractéristiques du périphérique en mode bloc. Pour un disque principal rotatif, la sortie comprendra: Vitesse de rotation nominale: 7 200 tr / min. Pour un disque SSD, elle inclura: Un support non rotatif (par exemple, l’état solide)


+1 sympa, mais ça marche sur mon vieux et bientôt remplacé, dit WD Greens Medium rotation rate is not reported. hdparmet smartmonctldire la même chose. Je suppose que WD ne veut pas dire.
cas

sg_vpd -i pourrait être plus utile, du moins il donne des informations sur le vendeur depuis le lecteur. Ça ne marche pas dans un raid, mais.
Dale
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.