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

您所在的位置:网站首页 如何分辨硬盘是固态还是机械硬盘呢 Linux下如何判断磁盘是SSD还是HDD

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

2024-06-07 21:21| 来源: 网络整理| 查看: 265

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

检查磁盘类型 - Linux 中的 SSD 或 HDD

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

硬盘驱动器 (HDD) 与固态驱动器 (SSD)

在进入主题之前,了解 HDD 和 SSD 之间的区别很重要。

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

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

Linux 下判断磁盘是 SSD 还是 HDD

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

方法 1 - 检查磁盘是否可旋转

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

cat /sys/block/sda/queue/rotational

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

每个驱动器在 /sys/class/block/ 位置都有一个目录。因此,您也可以检查其他驱动器的详细信息。

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

注意:如果您使用的是 KVM 来宾虚拟机,则驱动器号将为 vda。结果将根据您在虚拟机期间选择的总线类型而有所不同。例如,如果您选择 SATA 作为虚拟磁盘的总线类型,您将看到以下输出:

cat /sys/block/vda/queue/rotational 1方法 2 - 使用 lsblk 命令

lsblk 命令读取 sysfs 文件系统和 udev db 以收集有关所有可用或指定块设备的信息。 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,则磁盘是 HDD。如果该值为0(零),则磁盘为 SSD。

方法 3 - 使用 SMART 监控工具

另一种查找磁盘是 SSD 还是 HDD 的方法是使用 smartctl 命令。 smartctl是S.M.A.R.T监控工具包的一部分,用于控制和监控S.M.A.R.T。启用 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 命令查找磁盘型号,然后通过 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

这与上面的方法相同。我们使用命令从 /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

然后 Google 详细信息以了解磁盘是 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”,则为 HDD。对于 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。

注意:

在一些新的台式机和笔记本电脑中,例如Intel NUC或Lenovo 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/nvme0n1p2 456G 288G 146G 67% /

查看系统磁盘空间使用情况

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

这里,/dev/nvme0n1相当于/dev/sda。因此,/dev/nvme0n1p2 相当于/dev/sda2。

结论

以下是在 Linux 中查找磁盘是 SSD 还是 HDD的几种方法。轮到你了。您使用哪种方法来检测您的 Linux 系统是运行在 SSD 还是 HDD 上?您还知道其他方法来检查底层是硬盘驱动器还是固态驱动器吗?请发表评论。

建议阅读:

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

SSD 图标 图片由 PagDev 在 Pixabay 上提供

硬盘图标图像由 Clker-Free-Vector-Images 提供,来自 Pixabay



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3