将端口号与设备匹配

将端口号与设备匹配

我们有一台带有多个启动驱动器的计算机,它们都包含相同的软件。启动磁盘的选择是通过前面板上的多位开关进行的。如果选择了磁盘 1,则启动 SATA 端口 0 上的磁盘。如果选择了磁盘 2,则启动 SATA 端口 1 上的磁盘。等等。

RH 上的磁盘管理器可以显示硬盘插入哪个 SATA 端口。它是某物, 然后某物就是我想要的。

我如何在命令行上获取此信息?我通过 ssh 连接,想知道启动盘连接到了哪里。这些信息保存在哪里?

谢谢!

答案1

将端口号与设备匹配

我之所以发现这个问题,是因为我想弄清楚同样的事情。以下是我弄清楚的;它应该在 bash 或 zsh 中工作:

for i in /dev/disk/by-path/*;do [[ ! "$i" =~ '-part[0-9]+$' ]] && echo "Port $(basename "$i"|grep -Po '(?<=ata-)[0-9]+'): $(readlink -f "$i")";done

输出应如下所示:

Port 1: /dev/sda
Port 2: /dev/sdb
Port 3: /dev/sdc

这些端口号应该与主板上印刷的数字相对应,尽管这假设主板供应商足够体贴,将主板上印刷的数字与 SATA 控制器芯片中的端口号相匹配。至少,设备路径保持稳定,因此一旦在列出的端口号和面板上的数字之间建立映射,它就不会改变。

此代码片段遍历目录/dev/disk/by-path。它跳过以 结尾的文件,因为这些只是分区,并从其余文件名末尾的-part<number>中提取端口号。这些文件是指向传统节点的符号链接,它使用 获得这些节点。-ata<number>/dev/sdXreadlink -f

如果您有多个 SATA 控制器,您将获得相同端口号的多个设备列表,因为每个控制器都有自己的端口 1、端口 2 等。因此,只需ls -l /dev/disk/by-path手动运行并解析它即可。

确定哪个设备是你的启动设备

要确定哪个是您的启动设备,请运行mount | grep ' on / ' | cut -f 1 -d ' '。这将显示安装在 的设备/

答案2

正确的 SATA 端口映射是“user371366”提到的。

虽然我强烈建议不要依赖主板 PCB 上印刷的 SATA 端口号。

因为存在硬件/软件问题或错误,导致它们不可靠。

有时主板 PCB 上标记的 SATA 端口#1 会显示为 SDB 或 SDx(其中 x 是 PC 终端上显示的任何字母或其他字母),而不是 SDA。

这种情况发生在我身上几次,例如使用“clonezilla”备份软件,它将 SATA 端口#1 显示为 SDB,但它应该是 SDA。

最好的方法是写下硬盘序列号并以此作为目标硬盘的参考。

相关内容