Linux下如何判断磁盘是SSD还是HDD

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

内容

  1. 在Linux中查找磁盘是SSD还是HDD
    1. 方法 1 – 检查磁盘是否旋转
    2. 方法 2 – 使用 lsblk 命令
    3. 方法 3 – 使用 SMART 监控工具
    4. 方法 4 – 使用 dmesg + Google
    5. 方法 5 – 使用 SCSI 详细信息 + Google
    6. 方法 6 – 使用 Sg3-utils
    7. 方法 7 – 基准磁盘访问性能
      1. 如果有多个磁盘怎么办?

在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,磁盘是硬盘。 如果输出是 0 (零),磁盘是 SDD。 因为,SSD 不会旋转。 因此,如果您的系统中有 SSD,则输出应该为零。

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

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

笔记:

如果您使用的是 KVM 来宾虚拟机,则驱动器号将为 vda. 结果会因情况而异 总线类型 您在虚拟机期间选择了。 例如,如果您选择 SATA 作为虚拟磁盘的总线类型,您将看到以下输出:

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

方法 2 – 使用 lsblk 命令

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

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

例如,在基于 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,磁盘是硬盘。 如果值为 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

这不是查找磁盘类型的直接方法。 在这种方法中,我们使用 发消息 命令查找磁盘型号,然后谷歌详细信息以查找磁盘是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

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

$ 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% /

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

$ 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

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

笔记:

在一些新的笔记本电脑中,例如 联想ideapad s240,您将看到不同的设备名称,例如 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%  /

正如你在上面的输出中看到的,没有 斯达 或者 数据表. 不要惊慌! 这是正常的。 这 /开发/NVME…设备名称表示更新 NVMe “磁盘。” 如果磁盘是通过 NVM Express 端口而不是传统的 SATA 或 SAS 端口连接的,您将看到不同的设备名称,如上面的输出所示。

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

建议阅读:

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

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

固态硬盘图标 该图片由Pixabay在Pixabay上发布

硬盘图标 该图片由 Clker-免费矢量图片来自Pixabay

CLICommandlineFind if disk is SSD or HDDHard Disk DriveHDDLinuxLinux 命令Solid State DriveSSD