如何知道磁盘是SSD还是HDD

use*_*951 261 linux ssd hard-disk block-device

我想知道磁盘是固态驱动器还是硬盘。

lshw未安装。我做了yum install lshw,它说没有名为 lshw 的包。我不知道哪个版本的http://pkgs.repoforge.org/lshw/适合我的 CentOS。

我在网上搜索,没有任何内容可以解释如何知道驱动器是 SSD 还是 HDD。我应该先格式化它们吗?

结果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
Run Code Online (Sandbox Code Playgroud)

Tot*_*tor 411

Linux 会自动检测 SSD,内核版本 2.6.29 开始,您可以通过以下方式进行验证sda

cat /sys/block/sda/queue/rotational
Run Code Online (Sandbox Code Playgroud)

您应该1购买硬盘和0SSD。

如果您的磁盘是由硬件(如 RAID 控制器)模拟的逻辑设备,则它可能无法工作。

有关 SSD 分区、文件系统的更多信息,请参阅此答案...

  • 在虚拟服务器上,您可能需要获取`/sys/block/vda/queue/rotational` (8认同)
  • @Totor 您在“混合”驱动器中是正确的。但是,双驱动器混合显示为两个单独的驱动器,其中 SSHD(固态混合驱动器)显示为单个驱动器。因此,SSHD 将显示旋转 1。 (4认同)
  • [On Stackoverflow](http://stackoverflow.com/questions/908188/is-there-any-way-of-detecting-if-a-drive-is-a-ssd#comment25529116_12979947) 有人发现这个系统信息没有不行。 (2认同)
  • @Ferrybig 只有 NVME 格式的 SSD,而不是 HDD(除非您确实有一些从 NVME 插槽到普通 SATA 电缆的奇怪转接适配器)。但不确定即使是 NVME 上的 SATA SSD 在 linux 中显示为 NVME 还是显示为普通的 sdX。 (2认同)

don*_*sti 156

lsblkutil-linux包装的一部分):

lsblk -d -o 名称,旋转
NAME ROTA
sda     0
sdb     0
sdc     1
Run Code Online (Sandbox Code Playgroud)

whereROTA表示rotational device1如果为真,0如果为假)

  • 实际上我正在研究各种方法,因为一些 USB 控制器并没有告诉驱动器实际上是非旋转的(例如,USB 闪存),并且在 Linux 中无法说实话。在一天结束时,我通过在 `/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"` (5认同)
  • 这对我来说效果最好,但它包括冗余/不需要的循环设备(例如由于 Ubuntu snaps)。一个小小的改进是:`lsblk -d -e 7 -o NAME,ROTA,DISC-MAX,MODEL` 不包括循环设备 + 添加型号名称(制造商)和磁盘容量。 (4认同)
  • 该实用程序似乎报告了与`/sys/block/.../rotational` 中相同的信息。 (2认同)

dai*_*isy 59

使用smartctl(通过安装安装smartmontools)来检索供应商信息,

sudo smartctl -a /dev/sdb

如果你看到这样的一行,

Rotation Rate: Solid State Device

那将是一个SSD驱动器。


小智 37

我需要在 VPS 上执行此操作,但提供的解决方案均不适合我,

这个答案成功了

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

所以,它是关于从驱动器读取随机数据并评估时间。

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

这是我的 SSD 结果

real    0m1.375s
user    0m0.285s
sys     0m0.944s
Run Code Online (Sandbox Code Playgroud)

和硬盘

real    0m14.249s
user    0m0.752s
sys     0m6.284s
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的答案,它确实全面有效。问题是一些 HDD 速度非常快,结果可能与 SSD 相似。尽管如此,这个答案还是提供了一个很好的指标。 (4认同)

Tim*_*tts 17

其他答案已经告诉您如何以多种方式获取此信息,包括/proc. 但是,如果存在任何虚拟化,例如具有多层的混合 SAN 阵列,或者 Linux 机器是虚拟机(Linux 可能会将磁盘报告为基本 SCSI 旋转磁盘),那么您必须期望所有这些机制都存在,不管硬件到底是什么)


rep*_*lay 12

检查cat /proc/scsi/scsi。在那里您应该会看到磁盘的确切型号。然后你只需谷歌模型以查找有关它的信息。

  • `dmesg` 将包含相同的信息。`dmesg | grep -i -e scsi -e ata` (3认同)

小智 5

这是一篇旧文章,但我想分享另一种方法来做到这一点,这是我偶然发现的:

sg_vpd --page=bdc /dev/sda
Run Code Online (Sandbox Code Playgroud)

此命令获取块设备特性的重要产品数据。对于旋转磁头磁盘,输出将包括: 标称旋转速率:7200 rpm 对于 SSD,它将包括: 非旋转介质(例如固态)