Linux下如何确认磁盘是否为SSD

0    67    1

Tags:

👉 本文共约2480个字,系统预计阅读时间或需10分钟。

简介

There are different types of disk drives available among which most used are Hard drive (HDD) and Solid State Drive (SSD). Starting from the Kernel version 2.6.29, SSD is automatically detected by Linux systems.

HDD : Hard Disk Drive, 机械硬盘
SSD : Solid State Drive,固态硬盘

首先学习一下 HDD 和 SSD 工作原理的区别:

HDD机械硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
Linux下如何确认磁盘是否为SSD

磁头沿盘片半径方向运动,盘片以每分钟几千转的高速旋转,这样磁头就可以定位在盘片的指定位置上进行数据读写。

信息通过离磁性表面很近的磁头,由电磁流改变极性的方式,被电磁流写到磁盘上,并可以通过相反的方式读取。

如此精密之设备,尘埃是其大敌,因此进入硬盘的空气必须过滤。
Linux下如何确认磁盘是否为SSD


而SSD固态硬盘,内部构造则相对简单,固态硬盘内主体其实就是一块PCB板,组成部件分为:主控芯片、闪存芯片、固件算法。

Linux下如何确认磁盘是否为SSD

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

SSD,在主控的指挥下,通过电学信号的传输完成对闪存芯片的读写操作;

所以,SSD的读写过程依靠的是电学信号,不需要旋转磁盘。

电学信号比物理机械运作快多了,因此固态硬盘的运行速度远胜机械硬盘。

Linux下如何确认磁盘是否为SSD


而磁盘的旋转情况,可以通过查看 rotational 来获知结果。
因此可以通过查看 rotational 来判断 Linux 磁盘是 HDD 还是 SSD 。

比如对于 sda 这个设备,可以通过 cat /sys/block/sda/queue/rotational 得到结果:

1 :表示磁盘可旋转, 是 HDD ;

0 :表示磁盘不可以旋转 , 是 SSD 。

JBOD

JBOD(just a bunch of disks,简单磁盘捆绑),官方术语称之为“Spanning”,仅仅是表面上将多个驱动器合并成一个大的逻辑磁盘(类似lvm的pv)

原理:数据的存放机制是由第一颗硬盘开始依序往后存放,即操作系统看到的是一个大硬盘(由许多小硬盘组成的)。但如果硬盘损毁,则该颗硬盘上的所有数据将无法救回。若第一颗硬盘损坏,通常无法作救援(因为大部分文件系统将磁盘分割表(partition table)存在磁盘前端,即第一颗),失去磁盘分割表即失去一切数据,若遭遇磁盘阵列数据或硬盘出错的状况,危险程度较RAID 0更剧。它的好处是不会像RAID 0,每次访问都要读写全部硬盘。但在部分的JBOD数据恢复实践中,可以恢复未损毁之硬盘上的数据。同时,因为每次读写操作只作用于单一硬盘,JBOD的传输速率与I/O表现均与单颗硬盘无异。

方法

方法1:通过查看/sys/block/sda/queue/rotational

通过cat /sys/block/sda/queue/rotational进行查看,返回0即为SSD;返回1 则表示磁盘可旋转,即为HDD。

查看所有磁盘:

前提:如果是直通盘,即JBOD模式,方法则正确

方法2:通过lsblk查看

通过lsblk -d -o name,rota进行查看,ROTA列返回0即为SSD;返回1即为HDD。

前提:如果是直通盘,即JBOD模式,方法则正确

方法5:smartctl(万能方法、推荐)

方法4:通过lsscsi查看

lsscsi - list SCSI devices (or hosts) and their attributes

lsscsi 主要命令参数介绍:

-s 显示容量大小。
-c 用全称显示默认的信息。
-d 显示设备主,次设备号。
-g 显示对应的sg设备名。
-H 显示主机控制器列表,-Hl,-Hlv。
-l 显示相关属性,-ll,-lll=-L。
-v 显示设备属性所在目录。
-x 以16进制显示lun号。
-p 输出DIF,DIX 保护类型。
-P 输出有效的保护模式信息。
-i 显示udev相关的属性
-w 显示WWN
-t 显示相应传输信息(ATA,FC,SBP,ISCSI,SPI,SAS,SATA,USB)

HDD:

SSD :

方法5:通过fdisk查看

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

下面分别是HDD和SSD的输出结果

方法6:dd或sysbench磁盘读写测试

使用sysbench测试:

使用dd生成文件:

实例

HDD

SSD

区分是否U盘

命令1:cat /sys/block/sda/removable
解析:removable就是可移除的意思,用上面的命令进行查看该文件。如果是0就代表不可移除,说明不是U盘;如果等于1就说明可以移除,是U盘。

命令2:readlink /sys/block/sda | grep -q "usb"

readlink 是查找链接指向的文件,可以用这个指令去查看/sys/block/目录下的设备,返回的结果中就有表示接口类型的字段。上面这条指令就是查找USB接口类型的硬盘,也就是U盘。

总结

1、我的笔记本电脑都是ssd盘,安装了WSL2,在WSL2上检查却是HDD的格式。

2、

参考

https://www.linuxprobe.com/linux-ssd-hdd.html

https://linuxopsys.com/topics/check-disk-type-ssd-in-linux

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部