相关文章:
前言
在搭建 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 盘被隐藏
转载请标注来源
按照博主的教程(引导盘位于sata0:0,数据盘16G位于sata1:0,又加了一块30G虚拟磁盘位于sata2:0)。然后参数设置为:'DiskIdxMap=3130000000 SataPortMap=11246' 主板为超微X10 C612主板, 主板本身有2个sata控制器(控制器1为4端口,控制器2为6端口)。
30G盘的SATA控制器在SataPortMap中写了2?DiskIdxMap=3130000000 SataPortMap=11146应该是可以的。另外也许可以尝试把30G虚拟磁盘手动定位到最后去,DiskIdxMap=31300b0000(但这个我没试过)
感谢博主的耐心解答,辛苦了。问题已经解决了,我自己本身的情况有类似的也可以参照我的配置参数:DiskIdxMap=31300b0000SataPortMap=11166(16G数据盘位于sata1:0,30G存储盘位于sata2:0,主板本身为C612主板,每个sata控制器6端口,最终所有盘正常显示,30G盘位于最后)
问题为:16G和50M隐藏,虚拟30G磁盘显示硬盘1,其它机械硬盘均可识别但编号顺序不对,原磁盘raid5(4块2t)阵列提示有一块硬盘丢失(丢失的磁盘实际在硬盘列表里面但并未被系统识别为原raid成员)。另一个raid5(3快3T)则正常识别。
因为字数限制,只能尽量简化组织语言,冒昧之处希望见谅哈。
想问有一组控制器6端口,我要把第一与第二端口调到第五和第六,怎配置呢