在Linux系统中,硬盘序列号是硬盘的唯一硬件标识符,广泛应用于系统管理、故障排查、资产盘点等场景,通过序列号可以准确识别物理硬盘,避免因设备名称变化(如/dev/sda变为/dev/sdb)导致的管理混乱,本文将详细介绍Linux下查看硬盘序列号的多种方法,包括工具使用、命令示例及注意事项,帮助用户根据实际需求选择合适的方案。
使用smartctl工具查看序列号(支持SATA/SAS/IDE硬盘)
smartctl是smartmontools工具包的核心命令,用于通过S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)协议获取硬盘健康信息及序列号,该方法适用于大多数传统接口硬盘(SATA、SAS、IDE等),需确保硬盘已启用S.M.A.R.T.功能。
安装工具
- Debian/Ubuntu:
sudo apt install smartmontools
- CentOS/RHEL:
sudo yum install smartmontools
使用命令
sudo smartctl -i /dev/sda # /dev/sda为目标硬盘设备名
输出示例
smartctl 7.2 2023-05-15 r5328 [x86_64-linux-6.2.0-26-generic] (local build) Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: WDC WD10EZEX-60WN4A0 Serial Number: WD-WCC4N0KZ2YJ6 # 此处即为硬盘序列号 LU WWN Device Id: 5 00124b 902a0d0d0 Firmware Version: 80.00A80 User Capacity: 1,000,204,886,016 bytes [1 TB] Sector sizes: 512 bytes logical, 4096 bytes physical Device is: Not in a SMART enabled state Temperature: 40 Celsius ...
注意事项
- 需root权限(sudo);
- 若提示“SMART is not enabled”,可通过
sudo smartctl -s on /dev/sda
启用; - 对于NVMe硬盘,smartctl可能无法直接识别,需结合
--device=nvme
参数或使用专用工具。
使用hdparm工具查看序列号(适用于ATA/SATA硬盘)
hdparm是Linux下常用的硬盘参数查询工具,可通过ATA命令直接读取硬盘固件信息,包括序列号,该方法无需额外安装(多数系统默认集成),适合快速查询。
使用命令
sudo hdparm -I /dev/sda # /dev/sda为目标硬盘设备名
输出示例
/dev/sda: ATA device, with non-removable media Model Number: WDC WD10EZEX-60WN4A0 Serial Number: WD-WCC4N0KZ2YJ6 # 此处即为硬盘序列号 Firmware Revision: 80.00A80 ...
注意事项
- 需root权限;
- 仅支持ATA/SATA接口硬盘,对NVMe无效;
- 部分老旧硬盘可能因固件限制无法返回序列号。
使用lsblk结合udev查看序列号(通用块设备)
lsblk用于列出块设备信息,而udev是Linux的设备管理器,可通过udev属性获取硬盘序列号,该方法适合脚本化处理,但依赖系统udev配置。
使用命令
lsblk -o +SERIAL /dev/sda # 添加SERIAL列显示序列号
输出示例
NAME SERIAL sda WD-WCC4N0KZ2YJ6 # 若udev未配置序列号属性,此处可能显示“-”或为空
深度查询(通过udev属性)
udevadm info --query=all --name=/dev/sda | grep ID_SERIAL_SHORT
输出示例:
ID_SERIAL_SHORT=WD-WCC4N0KZ2YJ6 # 短序列号,通常与smartctl一致
注意事项
- 依赖udev规则,若序列号为空,可检查
/etc/udev/rules.d/
目录下的配置文件; - 对虚拟设备(如LVM逻辑卷)可能无效。
使用nvme-cli工具查看NVMe硬盘序列号
NVMe固态硬盘采用不同协议,需专用工具nvme-cli
查询序列号。
安装工具
- Debian/Ubuntu:
sudo apt install nvme-cli
- CentOS/RHEL:
sudo yum install nvme-cli
使用命令
nvme list # 列出所有NVMe设备,包含序列号
输出示例
Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- --------------------------- ---------- ----------------------------- -------- -------- /dev/nvme0n1 S675NX0H123456 Samsung SSD 980 PRO 1 512 B + 0 B / 512 B 512 1B2C3D # SN列即为序列号
详细查询(指定设备)
nvme id-ns /dev/nvme0n1 | grep "Serial Number"
输出示例:
Serial Number: S675NX0H123456
方法对比与选择
工具 | 适用接口 | 命令示例 | 优点 | 缺点 |
---|---|---|---|---|
smartctl | SATA/SAS/IDE | sudo smartctl -i /dev/sda |
信息全面,支持S.M.A.R.T.健康检测 | 需安装工具,需S.M.A.R.T.支持 |
hdparm | SATA/ATA | sudo hdparm -I /dev/sda |
系统默认集成,无需安装 | 仅支持传统接口,需root权限 |
lsblk+udev | 通用(块设备) | lsblk -o +SERIAL /dev/sda |
简单快速,适合脚本化 | 依赖udev配置,序列号可能为空 |
nvme-cli | NVMe | nvme list |
专用NVMe工具,信息准确 | 需单独安装,仅适用于NVMe |
注意事项
- 权限问题:多数命令需root权限(sudo),普通用户可能无法访问硬盘底层信息。
- 工具安装:smartmontools、nvme-cli等工具需根据系统类型手动安装。
- 硬盘支持:部分老旧硬盘或虚拟设备(如RAID阵列、LVM逻辑卷)可能无法返回序列号。
- 接口差异:NVMe与传统SATA硬盘需使用不同工具,避免混用命令。
相关问答FAQs
为什么用lsblk查看硬盘序列号时显示为空或“-”?
答:lsblk的SERIAL列依赖udev的设备属性,若系统未正确加载硬盘序列号的udev规则(如固件未提供序列号信息,或udev规则未配置),则会显示为空或“-”,可通过udevadm info --query=all --name=/dev/sda | grep ID_SERIAL
检查是否有属性,若无可尝试安装smartmontools并重启udev(sudo systemctl restart udev
)。
NVMe硬盘和SATA硬盘查看序列号的方法有何不同?
答:NVMe硬盘采用NVMe协议,需使用专用工具nvme-cli
,通过nvme list
或nvme id-ns
命令获取序列号;SATA等传统接口硬盘可通过smartctl
、hdparm
等工具基于S.M.A.R.T.或ATA协议获取,两者命令和工具不同,但序列号均为硬盘唯一标识,作用一致。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22016.html