服务器测评网
我们一直在努力

Linux系统下如何正确获取硬盘序列号?

在Linux系统中获取硬盘序列号是一项常见的管理任务,无论是硬件资产管理、故障排查还是系统监控,都需要准确识别硬盘的唯一标识符,本文将详细介绍几种在Linux环境下获取硬盘序列号的方法,涵盖不同接口类型的硬盘和多种实用工具。

Linux系统下如何正确获取硬盘序列号?

使用smartctl工具获取SATA/硬盘序列号

smartctl是smartmontools工具包的一部分,专门用于监控和分析硬盘的SMART(自监测、分析和报告技术)信息,对于SATA、SAS及大部分NVMe硬盘,smartctl都能有效提取序列号,首先需要安装该工具,在Debian/Ubuntu系统中可通过sudo apt install smartmontools命令完成安装,安装后,使用以下命令查看硬盘序列号:

sudo smartctl -i /dev/sda

该命令会显示硬盘的详细信息,包括型号、序列号、固件版本等,在输出结果中,”Serial Number”字段即为硬盘的唯一标识符,对于NVMe硬盘,可能需要指定不同的设备路径,如/dev/nvme0n1,并使用--json参数输出结构化数据,方便脚本解析。

通过udev规则获取硬盘信息

udev是Linux设备管理器,可通过编写规则自动提取硬盘序列号并生成环境变量,使用lsblkfdisk命令确定硬盘设备名称,例如/dev/sdb,创建udev规则文件:

sudo nano /etc/udev/rules.d/99-hwinfo.rules
KERNEL=="sd*", SUBSYSTEM=="block", ENV{ID_SERIAL_SHORT}=="", RUN+="/bin/sh -c 'echo SERIAL=$(smartctl -i /dev/%k | grep Serial | awk '{print $3}') > /tmp/%k.serial'"

保存后执行sudo udevadm control --reload-rules && sudo udevadm trigger使规则生效,系统会在/tmp目录下为每个硬盘生成包含序列号的文件,适合批量管理场景。

Linux系统下如何正确获取硬盘序列号?

利用/sys文件系统直接读取

Linux将硬件信息存储在/sys目录下,对于SATA硬盘,序列号通常位于/sys/block/sda/device/路径中,执行以下命令:

cat /sys/block/sda/device/serial

可直接输出硬盘序列号,对于NVMe硬盘,路径为/sys/block/nvme0n1/device/serial,此方法无需额外安装工具,适合在脚本中直接调用,但需注意权限问题,可能需要root用户执行。

结合lsblk和blkid命令获取磁盘标识

lsblk是列出块设备的工具,而blkid用于显示块属性,通过组合使用,可提取硬盘的序列号或UUID信息:

lsblk -o NAME,SERIAL /dev/sda

部分硬盘会直接显示SERIAL列,若序列号为空,可尝试hdparm -I /dev/sda | grep Serial命令,但需安装hdparm工具,对于NVMe硬盘,nvme list命令会列出所有NVMe设备及其序列号,输出结果简洁明了。

Linux系统下如何正确获取硬盘序列号?

注意事项

  1. 权限问题:部分命令需要root权限执行,建议使用sudo或切换至root用户。
  2. 硬盘接口差异:不同接口(SATA/NVME/USB)的硬盘序列号存储位置可能不同,需根据实际情况选择方法。
  3. 虚拟化环境:在虚拟机中,序列号可能是模拟生成的,与物理硬盘真实序列号不同。

通过以上方法,管理员可以灵活获取Linux系统中硬盘的序列号,满足多样化的管理需求,在实际操作中,建议根据具体硬件环境和系统版本选择最合适的方案。

赞(0)
未经允许不得转载:好主机测评网 » Linux系统下如何正确获取硬盘序列号?