

如何判断磁盘是SSD还是HDD
source link: https://www.lujun9972.win/blog/2020/04/18/%E5%A6%82%E4%BD%95%E5%88%A4%E6%96%AD%E7%A3%81%E7%9B%98%E6%98%AFssd%E8%BF%98%E6%98%AFhdd/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何判断磁盘是SSD还是HDD
从 https://www.ostechnix.com/how-to-find-if-the-disk-is-ssd-or-hdd-in-linux/ 上学到的技巧,记录一下。
磁盘速度越来越称为限制系统性能的重要因素,目前家用计算机中的磁盘一般分两类,SSD和HDD,且两类磁盘的读写速度相差巨大。 那么在Linux下要如何判断磁盘是SSD还是HDD的呢?
我们知道,传统的HDD磁盘与SSD很大一个不同就在于传统的HDD磁盘是通过磁盘旋转来将磁头转到指定磁道上来实现读写的,而SSD将数据存储在可即使访问的闪存芯片上的。 因此只要直到了磁盘是否需要旋转就能区分磁盘为SSD还是HDD了。
解决方案一:使用lsblk命令
涉及到的命令: lsblk
本部分以archlinux系统为例
lsblk命令是属于 util-linux
包中,一般在大多数的Linux发行版中都会预先安装。 若未预安装则需要手工进行安装,在Archlinux中运行下面命令安装:
sudo pacman -S util-linux --noconfirm
lsblk命令会读取 sysfs
文件系统和 udev
配置来获取块设备(磁盘就是一种块设备)的信息。
我们可以通过下面命令来查看磁盘是否会旋转:
lsblk -d -o name,rota
这里 -d
选项是 --nodeps
的缩写,表示只输出磁盘信息,而不输出磁盘上分区的信息。
-o
选项是 --output
的缩写,可以用来指定输出的列,我们这里只让它输出磁盘名和是否旋转
该命令在我电脑上运行的结果如下:
NAME ROTA sda 0 sdb 1
也就是说,我这台机上装了两块磁盘,其中 sda
是 SSD
磁盘, sdb
是 HDD
磁盘。
解决方案二:借助/sys
涉及到的命令: bash
本部分以archlinux系统为例
事实上 lsblk
命令正是读取 /sys
中的文件内容来给出某个磁盘是否旋转的信息来的。
你可以通过 strace lsblk -d -o name,rota
来进行验证,其输出中会包含类似这样的输出:
..... 省略 ..... openat(AT_FDCWD, "/sys/block/sdb/dev", O_RDONLY|O_CLOEXEC) = 5 fstat(5, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0 read(5, "8:16\n", 4096) = 5 close(5) = 0 ..... 省略 ..... openat(AT_FDCWD, "/sys/block/sda/dev", O_RDONLY|O_CLOEXEC) = 5 fstat(5, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0 read(5, "8:0\n", 4096) = 4 close(5) = 0 ..... 省略 ..... openat(AT_FDCWD, "/sys/dev/block/8:16", O_RDONLY|O_CLOEXEC) = 3 openat(3, "queue/rotational", O_RDONLY|O_CLOEXEC) = 4 read(4, "1\n", 8191) = 2 read(4, "", 8189) = 0 close(4) = 0 close(3) = 0 openat(AT_FDCWD, "/sys/dev/block/8:0", O_RDONLY|O_CLOEXEC) = 3 openat(3, "queue/rotational", O_RDONLY|O_CLOEXEC) = 4 read(4, "0\n", 8191) = 2 read(4, "", 8189) = 0 close(4) = 0 close(3) = 0
因此,我们也可以按照这一过程,自己从 /sys
中获取信息。
比如,我们要查看 sda
是否为SSD磁盘可以这样操作
DISKID=$(cat /sys/block/sda/dev) cat /sys/dev/block/${DISKID}/queue/rotational
0
不过,由于 /sys/block/sda
和 /sys/dev/block/$(cat /sys/block/sda/dev)
指向的是同一个目录,所以其实上面的操作可以简化为:
cat /sys/block/sda/queue/rotational
0
Recommend
-
19
Linux系统下的HDD Rootkit分析 腾讯电脑管家
-
8
英特尔:2022年SSD将达到与HDD TCO(成本)持平-存储在线 当前位置:存储在线 > 技术 > 正文
-
13
Linux系统迁移记录(从HDD到SSD) 我把HDD上的Linux迁移到SSD上,重装系统太麻烦了,所以我直接拷贝整个系统,然后重建引导恢复,以下是记录。 首先把SSD换上去,HDD用硬盘盒连接。 从U盘启动后,将SSD分区做好,分别将SSD系统盘和HD...
-
7
Backblaze Drive Stats for Q2 2021 August 3, 2021 by Andy Klein // 25 Comments
-
11
Someone was partitioning an ancient laptop’s spinning rust, and asked where they should put their swap. At the start of the drive? At the end? As a swap file? Does it even matter? While I’m on my 4th generation SSD at this point, I was...
-
7
Technology ...
-
7
Hard Disk Drive (HDD) vs. Solid-state Drive (SSD): What’s the Diff? October 5, 2021 by Andy Klein //
-
8
无论你是用台式机还是笔记本,大多新机都采用了 SSD 固态磁盘,或者与机械磁盘(HDD)二者相结合。很明显的...
-
8
Extremely slow external SSD’s and HDD‘s on MacBook Pro 16 M1 Max
-
4
在linux下用SSD盘来加速HDD硬盘 2024-01-23 1 分钟阅读
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK