当在 Linux 下使用 SATA SSD 或 HDD 时,可以通过多种方式寻址,例如:
/dev/sda
/dev/disk/by-id/ata-TOSHIBA_MG05ACA800E_78LBK8P7FUUD
/dev/disk/by-id/wwn-0x50000398abc0251c
在我的系统上,它们都指向同一个磁盘。我最近开始使用几个不同品牌和型号的 SAS 磁盘,我注意到这些 SAS 磁盘的行为似乎有点不同。例如
/dev/sdb
/dev/disk/by-id/scsi-35000cca01337732c
/dev/disk/by-id/wwn-0x5000cca01337732c
也都是同一个磁盘。但我原本以为还会有一个设备文件,例如
/dev/disk/by-id/scsi-HGST_HUSSL4040BSS600_XWVZGT1A
因此格式将类似于 SATA 磁盘。<interface>-<manufacturer>_<model>_<serial>
我会发现这更方便。所以我想知道,为什么 SAS 磁盘在这方面与其他磁盘的处理不同?即使 NVME 磁盘也有类似的设备文件,其名称中包含制造商、型号和序列号,但 SAS 磁盘却没有。
附加问题:是否有可能(借助某些 udev 规则?)为 SAS 磁盘提供这些更具信息量的设备文件?
尝试创建一个
/etc/udev/rules.d/61-sas.rules
(您可能有其他名称,但请确保其前缀的数字大于 60,因为必要的数据是使用规则“导入”的60-persistent-storage.rules
):您可能需要检查
udevadm info /dev/sdb
以找出哪些E
s 可用以及哪些是您想要首先用来形成链接名称的。ENV
匹配/测试(除了ENV{ID_SCSI}=="1"
)是偏执测试,可确保env
s 可用且非空(我认为)。并非每个env
项目都保证对每个驱动器都可用。您看到的 (S)ATA 和 (SA)S(CSI) 驱动器之间的差异的主要原因是 systemd/udev 具有不同的内置程序来查询可能有用的“数据”,即
ata_id
和scsi_id
,因为这两个协议使用不同的命令集。“数据结构”也不同。例如,ATA IDENTIFY DEVICE 中返回的“型号”显然由供应商名称和型号组成,而ID_SCSI_SERIAL
相应 SCSI VPD 页面中的“单元序列号”(设置为 )如果可用,可能与 ATA IDENTIFY DEVICE 数据中找到的序列号更相似。在 60-persistent-storage.rules 中,基本上使用相同的规则为所有类型的“scsi 磁盘”(sdX)创建“bus”符号链接,其名称如下: