我们有一台带有多个启动驱动器的计算机,它们都包含相同的软件。启动磁盘的选择是通过前面板上的多位开关进行的。如果选择了磁盘 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/sdX
readlink -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。
最好的方法是写下硬盘序列号并以此作为目标硬盘的参考。