Linux下判断磁盘是SSD还是HDD的几种方法

转自:https://blog.youkuaiyun.com/sch0120/article/details/77725658

环境介绍

Fedora release 25 (Twenty Five)

判断方法

方法一

判断cat /sys/block/*/queue/rotational的返回值(其中*为你的硬盘设备名称,例如sda等等),如果返回1则表示磁盘可旋转,那么就是HDD了;反之,如果返回0,则表示磁盘不可以旋转,那么就有可能是SSD了。

[cheshi@cheshi-laptop2 ~]$ cat /sys/block/nvme0n1/queue/rotational
0
[cheshi@cheshi-laptop2 ~]$ grep ^ /sys/block/*/queue/rotational
/sys/block/dm-0/queue/rotational:0
/sys/block/dm-1/queue/rotational:0
/sys/block/dm-2/queue/rotational:0
/sys/block/nvme0n1/queue/rotational:0
/sys/block/sda/queue/rotational:1
[cheshi@cheshi-laptop2 ~]$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这种方法有个问题,那就是/sys/block/下面不只有硬盘,还可能有别的块设备,它们都在干扰你的判断。

方法二

使用lsblk命令进行判断,参数-d表示显示设备名称,参数-o表示仅显示特定的列。

[cheshi@cheshi-laptop2 ~]$ lsblk -d -o name,rota
NAME    ROTA
nvme0n1    0
[cheshi@cheshi-laptop2 ~]$
  • 1
  • 2
  • 3
  • 4

这种方法的优势在于它只列出了你要看的内容,结果比较简洁明了。还是那个规则,ROTA1的表示可以旋转,反之则不能旋转。

方法三

可以通过fdisk命令查看,参数-l表示列出磁盘详情。在输出结果中,以Disk开头的行表示磁盘简介,下面是一些详细参数,我们可以试着在这些参数中寻找一些HDD特有的关键字,比如:”heads”(磁头),”track”(磁道)和”cylinders”(柱面)。

下面分别是HDD和SSD的输出结果,HDD拷贝自网络。

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[cheshi@cheshi-laptop2 ~]$ sudo fdisk -l
Disk /dev/nvme0n1: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xad91c214
......
[cheshi@cheshi-laptop2 ~]$
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

其他方法

可以使用第三方工具判断,比如smartctl,这些工具的结果展示比较直观,但是需要单独安装。

参考文献

https://unix.stackexchange.com/questions/65595/how-to-know-if-a-disk-is-an-ssd-or-an-hdd

### 如何在 Linux 系统中识别和区分不同磁盘Linux 系统中,可以通过多种方式来识别和区分不同的磁盘。以下是几种常用的技术手段及其具体实现: #### 使用 `fdisk` 命令 `fdisk` 是一种常用的工具,用于管理和查看磁盘分区表的信息。通过运行带有 `-l` 参数的 `fdisk` 命令,可以列出系统中所有的磁盘以及它们的相关信息。输出结果通常会显示每块磁盘的基本描述,其中包括容量、型号以及其他硬件特性。对于机械硬盘 (HDD),其输出可能包含特定的关键字,例如 “heads”(磁头)、“track”(磁道) 和 “cylinders”(柱面),而这些关键字一般不会出现在固态硬盘 (SSD) 的描述中[^3]。 #### 查看 `/dev/disk/by-id/` 路径下的设备链接 Linux 将物理磁盘映射到 `/dev/sd*` 文件节点上,但为了更方便地区分各个磁盘,还可以利用 `/dev/disk/by-id/` 中基于唯一标识符创建的符号链接。此目录下的条目按照制造商序列号或者 UUID 来命名,使得即使插槽位置发生变化也能保持一致性。这种方法特别适合于动态环境如虚拟机或频繁更换外接存储介质的情况下[^1]。 #### 利用 `lsblk` 显示块设备树形图谱 `lsblk` 提供了一种简洁直观的方式来展示当前主机上的所有块级设备及其挂载状态。它不仅能够揭示各层子设备之间的关系,而且还能附加额外字段比如 SIZE 或 TYPE ,帮助快速判断哪些属于数据卷而非引导区等特殊用途区域[^2]。 #### 结合 `smartctl` 获取 SMART 属性报告 如果目标平台支持 S.M.A.R.T 技术,则借助 smartmontools 工具包里的 `smartctl` 实用程序可以获得更加深入细致的数据记录。这包括但不限于温度历史统计、通电总时间累计值还有错误日志摘要等等。值得注意的是某些 SSD 控制器可能会提供独有的扩展属性集用来反映 NAND Flash 生命周期状况等方面的内容[^4]。 ```bash sudo fdisk -l ls /dev/disk/by-id/ lsblk --fs sudo smartctl -a /dev/sda | grep 'Device Model' ``` 以上就是几种主流途径介绍如何有效辨别并分类存在于同一台服务器内部的不同种类储存装置的方法论集合体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值