如何在 Linux 中查找磁盘是 SSD 还是 HDD

想象一下这个场景。 你是一个对 Linux 经验有限的新手。 您最近购买了一台预装 Linux 的新笔记本电脑,用于 example Ubuntu。 您不确定安装的磁盘是 SSD(固态驱动器)还是普通 HDD(硬盘驱动器)。 没问题! 本简要指南将教您如何在 Linux 操作系统中查找磁盘是 SSD 还是 HDD。

在 Linux 中查找磁盘是 SSD 还是 HDD

从内核版本开始 2.6.29,Linux操作系统可以自动检测SSD。 有几种方法可以确定磁盘是 SSD 还是 HDD。 在这里,我给出了 7 种方法。

方法 1 – 检查磁盘是否旋转

您可能已经知道,传统的 硬盘驱动器 (HDD) 将数据存储在称为圆盘的圆盘上 拼盘. 当光盘旋转时,移动的读/写头将访问数据。 磁盘旋转(旋转)的速度越快,硬盘工作的速度就越快。

另一方面, 固态硬盘 (SDD) 是现代存储技术和更快的磁盘驱动器类型,可将数据存储在 即时可访问的闪存芯片。 与传统的 HDD 不同,SSD 没有任何移动部件,并且 SSD 不旋转.

因此,要查找安装的磁盘是 SSD 还是普通 HDD,只需使用以下命令检查磁盘是否旋转:

$ cat /sys/block/sda/queue/rotational

如果输出是 1,磁盘是HDD。 如果输出是 0 (零),磁盘是 SDD。 因为,SSD 不会旋转。 因此,如果您的系统中有 SSD,则输出应该为零。

每个驱动器都有一个目录 /sys/类/块/ 地点。 因此,您也可以检查其他驱动器的详细信息。

$ cat /sys/block/sdb/queue/rotational
$ cat /sys/block/sdc/queue/rotational

笔记:

如果您在 KVM 来宾虚拟机上,则驱动器号为 维达. 结果将取决于 巴士类型 您在虚拟机期间选择的。 为了 example 如果您选择 SATA 作为虚拟磁盘的总线类型,您将看到以下输出:

$ cat /sys/block/vda/queue/rotational 
1

方法 2 – 使用 lsblk 命令

lsblk 命令读取 系统文件 文件系统和 udev 数据库 收集有关所有可用或指定块设备的信息。 lsblk 命令是 实用程序-linux 软件包并预装在大多数 Linux 发行版中。

以防万一 lsblk 命令不可用,只需使用发行版的包管理器安装 util-linux 包。

为了 example,在基于 Arch 的系统上,您可以使用以下命令安装它:

$ sudo pacman -S util-linux

在基于 Debian 的系统上:

$ sudo apt install util-linux

在基于 RPM 的系统上:

$ sudo yum install util-linux

在 openSUSE 上:

$ sudo zypper install util-linux

现在,使用命令查找磁盘是 SSD 还是 HDD:

$ lsblk -d -o name,rota

样本输出:

NAME   ROTA
loop0     1
loop1     1
loop2     1
loop3     1
loop4     1
loop5     1
loop6     1
loop7     1
loop8     1
loop9     1
loop10    1
loop11    1
loop12    1
loop13    1
loop14    1
loop15    1
loop16    1
loop17    1
loop18    1
loop19    1
loop20    1
sda       1
sr0       1

这里的“rota”是指 旋转装置. 如果您在上述输出中获得 rota 的值 1,磁盘是HDD。 如果值为 0(零),则磁盘为 SSD。

方法 3 – 使用 SMART 监控工具

查找磁盘是 SSD 还是 HDD 的另一种方法正在使用 智能控制 命令。 smartctl 是 SMART 监控工具包的一部分,用于控制和监控启用 SMART 的 ATA 和 SCSI 硬盘驱动器。

要在 Arch Linux 及其变体上安装 SMART 监控工具,请运行:

$ sudo pacman -S install smartmontools

在 Debian、Ubuntu 上:

$ sudo apt install smartmontools

在 RHEL、CentOS 上:

$ sudo yum install smartmontools

在 openSUSE 上:

$ sudo zypper install smartmontools

安装 smartmontools 包后,运行以下命令查看磁盘是 SSD 还是 HDD:

$ sudo smartctl -a /dev/sda | grep 'Rotation Rate'

如果磁盘是 SSD,您将获得如下输出。

Rotation Rate:    Solid State Device

如果磁盘是 HDD,您将获得以下输出:

Rotation Rate: 5400 rpm

方法 4 – 使用 dmesg + Google

这不是查找磁盘类型的直接方法。 在这个方法中,我们使用 dmesg 命令查找磁盘型号,然后谷歌详细信息以查找磁盘是 SSD 还是 HDD。

$ dmesg | grep -i -e scsi -e ata

您将在所有其他详细信息中看到磁盘型号名称。

[...]
[ 1.845159] scsi 0:0:0:0: Direct-Access ATA ST9500325AS DEM1 PQ: 0 ANSI: 5
[...]

只需谷歌此型号即可找到磁盘详细信息。

方法 5 – 使用 SCSI 详细信息 + Google

这与上述方法相同。 我们从中检索磁盘模型 /proc 目录使用命令:

$ cat /proc/scsi/scsi

样本输出:

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST9500325AS      Rev: DEM1
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: PLDS     Model: DVD+-RW DS-8A8SH Rev: KD11
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi6 Channel: 00 Id: 00 Lun: 00
  Vendor: Generic- Model: Multi-Card       Rev: 1.00
  Type:   Direct-Access                    ANSI  SCSI revision: 00

然后谷歌详细信息以了解磁盘是 SSD 还是 HDD。

方法 6 – 使用 Sg3-utils

SG3-utils 是使用 SCSI 命令集的设备的实用程序集合。 此软件包中的每个实用程序都实现了一个 SCSI 命令。

sg3-utils 在 Debian 和 Ubuntu 的默认存储库中可用。 要将其安装在您的系统上,只需运行:

$ sudo apt install sg3-utils

现在,通过运行以下命令检查块设备特性的重要产品数据 (VPD):

$ sudo sg_vpd --page=bdc /dev/sda

样本输出:

Block device characteristics VPD page (SBC):
Nominal rotation rate: 5400 rpm
Product type: Not specified
WABEREQ=0
WACEREQ=0
Nominal form factor not reported
ZONED=0
BOCS=0
FUAB=0
VBULS=0

通过输出。 如果输出包含这一行 – “标称转速:5400 rpm”,它是硬盘。 对于 SSD,您可能会看到 – “非旋转介质”.

方法 7 – 基准磁盘访问性能

通过使用以下命令从磁盘读取随机块来查找磁盘是 SSD 还是 HDD:

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

此命令将从磁盘的前 16GB 中读取 1000 个随机 4k 块。

如果您的磁盘是 SSD,则该操作应在大约 一秒. 如果磁盘是 HDD,则需要几秒钟才能完成。

这将有助于检查 VPS 中的磁盘。 如果您使用的是 VPS 并想检查托管服务提供商是否给您提供 SSD 或 HDD,这是找出答案的一种方法!

如果有多个磁盘怎么办?

如果我有两个磁盘,一个是 SSD,另一个是 HDD? 两个磁盘的大小相同,并且来自同一制造商。 我不知道我的 Linux 安装在哪个磁盘上。 在这种情况下,只需使用以下命令查找根文件系统位于哪个磁盘上:

$ df / -h

样本输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       458G  341G   95G  79% /

或者,使用 lshw 命令以查找有关磁盘的更多详细信息:

$ sudo lshw -short -C disk

样本输出:

H/W path                 Device           Class          Description
====================================================================
/0/100/1d/1/1/6/0.0.0    /dev/sdb         disk           Multi-Card
/0/100/1d/1/1/6/0.0.0/0  /dev/sdb         disk           
/0/1/0.0.0               /dev/sda         disk           500GB ST9500325AS
/0/2/0.0.0               /dev/cdrom       disk           DVD+-RW DS-8A8SH

正如您在上面的输出中看到的,我的根文件系统安装在 /dev/sda. 现在按照上述任何一种方法来查找磁盘是 HDD 还是 SSD。

笔记:

在一些新的笔记本电脑中,比如 联想ideapad s240,您将看到不同的设备名称,例如 example nvme0n1. 让我们使用命令查看可用块设备的列表:

$ ls /sys/block

样本输出:

loop0   loop11  loop14  loop17  loop2   loop3  loop6  loop9
loop1   loop12  loop15  loop18  loop20  loop4  loop7  nvme0n1
loop10  loop13  loop16  loop19  loop21  loop5  loop8

让我们找出根文件系统位于哪个磁盘上:

$ df / -h

样本输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p6  96G   34G   58G   34%  /

正如您在上面的输出中看到的,没有 sda 或者 数据库. 不要恐慌! 这很正常。 这 /dev/nvme…设备名称表示较新 NVMe “磁盘。” 如果磁盘通过 NVM 快车 端口而不是传统的 SATA 或 SAS 端口,您将看到不同的设备名称,如上面的输出所示。

这里, /dev/nvme0n1 相当于 /dev/sda. 因此, /dev/nvme0n1p6 相当于 /dev/sda6.

建议阅读:

  • 如何在 Linux 上查找硬件规格
  • 如何检查 Linux 系统是物理机还是虚拟机
  • 如何检查 Linux 系统是 32 位还是 64 位
  • 如何确定 CPU 是否支持虚拟化技术 (VT)

这些是在 Linux 中查找磁盘是 SSD 还是 HDD 的几种方法。 希望它有用。

固态硬盘图标 图片来源 页面开发关注

硬盘图标 图片来源 免费矢量图像关注