黑群晖引导文件grub.cfg中参数对硬盘顺序的测试与分析

       对于多盘位的黑群使用者,经常会遇到一件事,就是在存储管理员看到的硬盘顺序,不是按照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

点赞

发表评论