前言
在搭建 ESXi 6.7 部署黑群晖 DS3617xs 并启用硬盘直通一文中使用了 DSM 6.2 Loader 作为黑群晖的引导项,在洗白黑群晖或直通 SATA 控制器时也需要修改该镜像中的 grub.cfg 文件。这篇文章会对该文件中和 SATA 控制器相关的部分进行修改,测试在不同的配置下 DSM 对硬盘的识别情况。

测试环境
ESXi 6.7.0 (Build 8169922)

引导盘 v1.03b

DSM6.2 23739

修改项默认值为空,也就是 set extra_args_3617=”

在不加载直通物理硬盘时,虚拟硬盘的大小代表了 SATA 控制器位置。比如 20G 的虚拟硬盘代表了 (2:0)

引导项虚拟盘永远位于 (0:0)

boot1~7 默认的 16G 数据盘位于 (0:1),boot8~12 位于 (1:0)

测试的参数有些是瞎写试的,有的是刻意写的

启动盘 参数
boot0 default
boot1 DiskIdxMap=1000 SataPortMap=28
boot2 DiskIdxMap=0800 SataPortMap=28
boot3 DiskIdxMap=0800 SataPortMap=24
boot4 DiskIdxMap=100800 SataPortMap=188
boot5 DiskIdxMap=100400 SataPortMap=148
boot6 DiskIdxMap=100400 SataPortMap=144
boot7 DiskIdxMap=030400 SataPortMap=144
boot8 DiskIdxMap=200400 SataPortMap=244
boot9 DiskIdxMap=203000 SataPortMap=244
boot10 DiskIdxMap=313000 SataPortMap=244
boot11 DiskIdxMap=313000 SataPortMap=114
boot12 DiskIdxMap=31300000 SataPortMap=1144

测试理论
SataPortMap 代表每个 SATA 控制器拥有的 SATA 接口数量,148 代表三个 SATA 控制器分别拥有 1 个、4 个、8 个 SATA 接口

DiskIdxMap 代表每个 SATA 控制器接口开始的位置,16 进制,每两位代表一个 SATA 控制器

测试过程
首先只创建默认的 16G 数据盘,导入全部 boot 启动盘,以默认启动盘安装 DSM6.2 23739

查看硬盘状态,每次只替换启动盘

boot0
set extra_args_3617=”

 

默认启动参数无法在多 SATA 控制器下读取全部硬盘,读取到了 (0:0)(0:1)(1:2)(1:3)

boot1
DiskIdxMap=1000 SataPortMap=28

SATA 控制器 2 上的硬盘没有被全部读取到,16G 的数据盘被识别到了错误的位置

 

boot2
DiskIdxMap=0800 SataPortMap=28

基本没有变化,没有被识别的硬盘在外置硬盘中被读取到

 

boot3
DiskIdxMap=0800 SataPortMap=24

 

所有盘均被读取,但磁盘顺序错误

boot4
DiskIdxMap=100800 SataPortMap=188

 

所有盘均被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏

boot4 添加直通硬盘
DiskIdxMap=100800 SataPortMap=188

 

没有变化,直通硬盘出现在外置设备中,但缺少一块

boot5
DiskIdxMap=100400 SataPortMap=148

 

所有硬盘被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏

boot5 添加直通硬盘
DiskIdxMap=100400 SataPortMap=148

 

所有硬盘被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏

直通硬盘被读取为外置设备

boot6 添加直通硬盘
DiskIdxMap=100400 SataPortMap=144

 

所有硬盘被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏

有一块直通硬盘被读取为外置设备

boot7
DiskIdxMap=030400 SataPortMap=144

 

所有硬盘被读取,但 SATA 控制器顺序错误,启动盘没有被隐藏

boot7 添加直通硬盘
DiskIdxMap=030400 SataPortMap=144

 

所有硬盘被读取,但硬盘顺序错误,启动盘没有被隐藏

有一块直通硬盘被读取为外置设备

新一组实验
考虑到大多数情况最多只会有两组连接数据盘的 SATA 控制器,所以删除一组 SATA 控制器和虚拟硬盘

将 16G 默认数据盘位置改为 (1:0),独享一个 SATA 控制器

boot8
DiskIdxMap=200400 SataPortMap=244

 

所有硬盘全部被读取,但硬盘顺序有错误

启动盘和 16G 盘没有被隐藏

硬盘提示错误不是问题,转移群晖数据盘时经常能见到,硬盘没坏的情况下在储存空间管理员中修复即可

2T 盘显示是硬盘 4 是插错了 SATA 接口,不是参数问题

boot9
DiskIdxMap=203000 SataPortMap=244

 

虚拟盘全部删除,启动盘没有被隐藏

boot10
DiskIdxMap=313000 SataPortMap=244

 

使用了很激进的起始硬盘号保证 DS3617xs 肯定读不到 SATA 控制器 1 和 2

虚拟盘全部删除,启动盘和 16G 盘被隐藏

boot11
DiskIdxMap=313000 SataPortMap=114

 

重新添加虚拟盘

启动盘和 16G 盘被隐藏

直通硬盘的编号有错误

boot12
DiskIdxMap=31300000 SataPortMap=1144

 

尝试在数据盘中全部使用 00 的 DiskIdMap

SataPortMap 中对启动盘和 16G 盘限制到极限值 1

全部数据盘被读取到,顺序完全正确

启动盘和 16G 盘被隐藏
————————————————
版权声明:本文为CSDN博主「weixin_39665992」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39665992/article/details/111583362

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注