想象一下这个场景。 你是一个对 Linux 经验有限的新手。 您最近购买了一台预装 Linux 的新笔记本电脑,用于 example Ubuntu。 您不确定安装的磁盘是 SSD(固态驱动器)还是普通 HDD(硬盘驱动器)。 没问题! 本简要指南将教您如何在 Linux 操作系统中查找磁盘是 SSD 还是 HDD。
在 Linux 中查找磁盘是 SSD 还是 HDD
从内核版本开始 2.6.29,Linux操作系统可以自动检测SSD。 有几种方法可以确定磁盘是 SSD 还是 HDD。 在这里,我给出了 7 种方法。
方法 1 – 检查磁盘是否旋转
您可能已经知道,传统的 硬盘驱动器 (HDD) 将数据存储在称为圆盘的圆盘上 拼盘. 当光盘旋转时,移动的读/写头将访问数据。 磁盘旋转(旋转)的速度越快,硬盘工作的速度就越快。
另一方面, 固态硬盘 (SDD) 是现代存储技术和更快的磁盘驱动器类型,可将数据存储在
因此,要查找安装的磁盘是 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 的几种方法。 希望它有用。
固态硬盘图标