对于多盘位的黑群使用者,经常会遇到一件事,就是在存储管理员看到的硬盘顺序,不是按照12345678...这样的顺序排列,对于有强迫症的用户非常痛苦。本文针对黑群晖引导文件grub.cfg中一些参数进行修改,测试在不同的参数下对硬盘排序的影响。
测试环境
- 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 盘被隐藏
原文地址:https://blog.irain.in/archives/DSM6-2-Loader-grub_cfg.html