如何解析硬盘驱动器标识符

时间:2015-07-30 23:11:39

标签: standards uniqueidentifier text-parsing hard-drive

enter image description here

此图显示了一些硬盘驱动器ID,它们看起来非常标准化(从Web GUI获取,它从CentOS上的命令提示符中收集数据)。

这些驱动器ID是否标准化,以及如何解析数据(市场上任何一组硬盘驱动器)。即我想最终得到以下变量(regex适用于市场上的任何驱动器吗?):

type=scsi
type2=SATA
MFR=WDC
model=WDC_WD1001FALS
serial=WD-WCATR6632234

这个明显的顺序是否真正标准化了所有mfrs,我该如何解析它?

1 个答案:

答案 0 :(得分:0)

The pattern you see comes from a .rules file on your computer, something like "60-persistent-storage.rules":

# by-id (hardware serial number)
KERNEL=="hd*[!0-9]",            ENV{ID_SERIAL}=="?*", \
    SYMLINK+="disk/by-id/ata-$env{ID_SERIAL}"
KERNEL=="hd*[0-9]",         ENV{ID_SERIAL}=="?*", \
    SYMLINK+="disk/by-id/ata-$env{ID_SERIAL}-part%n"

KERNEL=="sd*[!0-9]",            ENV{ID_SCSI_COMPAT}=="?*", \
    SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}"
KERNEL=="sd*[0-9]",         ENV{ID_SCSI_COMPAT}=="?*", \
    SYMLINK+="disk/by-id/scsi-$env{ID_SCSI_COMPAT}-part%n"

ENV{DEVTYPE}=="disk",       ENV{ID_BUS}=="?*", ENV{ID_SERIAL}=="?*", \
    SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
ENV{DEVTYPE}=="partition",  ENV{ID_BUS}=="?*", ENV{ID_SERIAL}=="?*", \
    SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"

ENV{DEVTYPE}=="disk",           ENV{ID_EDD}=="?*", \
    SYMLINK+="disk/by-id/edd-$env{ID_EDD}"
ENV{DEVTYPE}=="partition",      ENV{ID_EDD}=="?*", \
    SYMLINK+="disk/by-id/edd-$env{ID_EDD}-part%n"

ENV{DEVTYPE}=="disk",           ENV{ID_WWN_WITH_EXTENSION}=="?*", \
    SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}"
ENV{DEVTYPE}=="partition",      ENV{ID_WWN_WITH_EXTENSION}=="?*", \
    SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n"

These rules can be changed.

Note that your strings are SCSI, and the rules for SCSI IDs follow these rules (although I'm not sure how exactly this works).