获取Linux环境的硬盘序列号

因最近工作要求,需要获取Linux环境上的硬盘序列号,经过多番尝试,最终得到满意的结果,先寻找过程梳理汇总如下。

最开始使用hdparm命令来获取,它是Linux上获取或设置硬盘参数的工具,包括测试读写性能以及缓存性能等。在本场景中涉及到的指令为:

hdparm -I /dev/sda

提示结果如下图:
虚拟机上无法获得hdparam结果.jpg

无法获得想要的硬盘序列号,经过一番搜索发现,hdparm是适用于SATA/IDE接口类型的硬盘,sdparm适用于SCSI的硬盘,下载sdparm后使用

sdparm –inquiry –page=sn /dev/sda

结果仍然是

虚拟机上无法获得sdparam结果.jpg

猜测可能是在虚拟机上跑的linux,无法通过这两个命令获取,换个思路继续。

继续尝试使用smartctl工具来获取,

smartctl -a /dev/sda

也无法获得满意结果。

最后使用lsblk工具,

lsblk –nodeps -no serial /dev/sda

获取到的结果为空,但通过如下指令:

lsblk –nodeps -no serial /dev/cdrom

/dev/cdrom是光驱设备,通过上述命令,可以获得光驱设备的序列号,硬盘和光驱同属于存储设备,那么通过上述获取硬盘序列号的命令,应该是可以获取的到,但实际获取为空,这是为什么呢?

总结

在linux上,可以通过lsblk --nodeps -no serial /dev/sda命令来获得硬盘序列号,注意,在虚拟机上运行的linux,获取到的结果为空。