在 Linux 上,我可以使用它smartctl
来获取硬盘的供应商、型号、固件修订版和序列号:
# smartctl -a /dev/sdb
smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
Device: SEAGATE ST9300603SS Version: 0006
Serial number: 6SE1ZCSR0000B121LU63
Device type: disk
Transport protocol: SAS
硬盘的序列号(此处6SE1ZCSR0000B121LU63
)是否保证是全球唯一的?它是否只对特定供应商唯一?或者甚至对特定型号唯一?
答案1
S/N 不能保证是唯一的。但由于不同的制造商使用不同的方案来生成 S/N,因此它们大多是唯一的。此外,制造商也没有理由制造两个或多个具有一个 S/N 的硬盘。我可以说,如果他们这样做,将使保修退货变得非常困难。他们将如何区分不同的设备?这是 S/N 的目的。
实际上发生碰撞的可能性很小
在某些情况下,软件与硬盘型号和序列号绑定。当硬盘损坏时,重新配置整个系统会非常麻烦。在这种情况下,可以选择完全复制旧硬盘。需要特殊的软件和/或硬件来重写硬盘中的序列号和型号,但这是可能的。而且它可以节省大量时间和/或金钱。
此外,当人们想在游戏机 XBOX 上安装更大的硬盘时,他们会在市场上购买更便宜的普通硬盘,然后使用特殊软件调整这些硬盘以适合 XBOX。该程序会重写硬盘的型号、序列号和一些隐藏信息,因此 XBOX“认为”硬盘是游戏机供应商的原装硬盘。查找说明这里。
如果你真的想获得硬盘的唯一ID,请尝试深入研究SAS协议规范和具有此类接口的硬盘规范。你会发现有趣的事情
在 SAS 中,设备和端口名称是传输协议内全球唯一的名称。端口标识符是域内用于标识端口的值,用作 SAS 地址。物理标识符在设备内是唯一的。
更多来自这里
SAS 域中的每个 SAS 端口都有一个 SCSI 端口标识符,用于在 SAS 域内唯一地标识该端口。它由设备制造商分配,就像以太网设备的 MAC 地址一样,并且通常也是全球唯一的。SAS 设备使用这些端口标识符来寻址彼此之间的通信。
您可以读取这些ID并使用它们来区分设备。
答案2
简短的回答:就我的目的而言,我认为它们是独一无二的。
长答案:每个制造商都有自己的序列号命名方案,并且不能保证在各个制造商之间是全局唯一的,但是每个制造商的序列号应该是唯一的,因为毕竟他们希望能够识别特定的单元。
由于每个人都有自己的模式,因此在实践中发生冲突的可能性确实不大,但型号和序列号的组合应该是唯一的(只要在生产过程中没有人弄乱)。
答案3
我认为每个供应商都对其产品使用自己的序列化,每个序列都是唯一的。
它们能保证是全局唯一的吗?按照惯例可能不是。
它们是否很可能是全球独一无二的?是的
此外,大多数情况下,序列号是序列号的总和,前面是型号,然后是批号等......
它不是独一无二的可能性非常非常小。
答案4
我最近编写了一些代码,通过驱动器序列号识别使用我们软件的计算机。在我向大约 11 家商店提供新代码后,其中 3 家的硬盘驱动器序列号重复。看来硬盘驱动器序列号并不是非常一致的唯一。显然,我必须找到另一种方法来唯一地识别正在使用的计算机。