此附录介绍如何通过使用 sd-config-list 或 ssd-config-list 全局属性,在 .conf 文件中调优 Oracle Solaris 磁盘目标驱动程序(sd 或 ssd 驱动程序)属性。
该附录介绍了以下用于调优磁盘目标驱动程序属性的格式:
用于调优磁盘驱动程序的可调参数使用以下前缀类别:
BCD-二进制编码的十进制,如Table D–1 中所示
delay-发出重试时的延迟时间
timeout-进程允许的最大时间
reset-重置控制
retries-失败之前的重试次数
throttle-活动控制
Oracle Solaris 10 和 Oracle Solaris 11 支持以下可调参数名称及其数据类型:
BOOLEAN
UINT32
UINT32
BOOLEAN
UINT32
UINT32
BOOLEAN
UINT32
UINT32
UINT32
UINT32
UINT32
UINT32
UINT32
UINT32
仅在 Oracle Solaris 11 中受支持的可调参数全都是 BOOLEAN 数据类型。这些参数包括:
cdb-suppress-dpofua
mmc-gesn-polling
power-condition
sd 和 ssd 驱动程序支持 JSON 文本名称:值格式,从而支持设置特定的可调参数属性值。
对 sd 驱动程序使用以下语法:
sd-config-list = duplet [, duplet]*;
对 ssd 驱动程序使用以下语法:
ssd-config-list = duplet [, duplet]*;
其中 duplet 为 "VID PID", "tunable [, tunable]*"
设备的供应商标识 (vendor identification, VID) 字段的内容响应 SCSI INQUIRY 命令。VID 字段长度必须为八个字符。如果 VID 字段少于八个字符,则必须添加空格使 VID 的长度达到八个字符。请参见Example D–1。
设备的产品标识 (product identification, PID) 字段的内容响应 SCSI INQUIRY 命令。PID 最多可以包含 16 个左对齐的字符。如果提供的字符不到 16 个,则仅对您提供的 PID 长度进行比较。
tunable 是名称:值对。
当 SCSI INQUIRY 命令返回的前缀值与 sd-config-list 或 ssd-config-list 中的 PID 相同时,则认为 PID 值是一个匹配项。例如,如果 CMS200 是 sd-config-list 或 ssd-config-list 条目中的 PID,那么,当 SCSI INQUIRY 命令返回的 PID 为 CMS200-R、CMS200-T 或 CMS200-UV10 时,它们都被视为匹配项。
在 SPARC 平台上,目标设备可以绑定到 sd 或 ssd 驱动程序,具体取决于设备是否为 FC 设备以及设备上是否启用了 MPxIO。可以使用 prtconf 命令检查设备配置信息。请参见 prtconf(1M) 手册页。
示例 D-1 在一个 sd.conf 文件中配置两个目标设备以下示例说明了如何在一个 sd.conf 文件中配置两个目标设备 SAMPLE 和 SUM。
sd-config-list = "SAMPLE STTU1234566AB", "delay-busy:6000000000", "SUM ABC200_R", "retries-busy:5, throttle-max:300";
在此示例中,对于设备 SAMPLE,VID 为 SAMPLE,PID 为 STTU1234566AB。重试之前的延迟时间设置为 6 秒。
对于设备 SUM,VID 为 SUM,PID 为 ABC200_R。针对 I/O 忙状态的重试次数设置为 5。最大限制值设置为 300。
示例 D-2 在一个 ssd.conf 文件中配置两个目标设备以下示例说明了如何在一个 ssd.conf 文件中配置两个目标设备 GATES 和 SINE。
ssd-config-list = "GATES AB568536611CD46G", "reset-lun:TRUE", "SINE XYZ200_R", "retries-notready:6, throttle-min:200";
在此示例中,对于设备 GATES,VID 为 GATES,PID 为 AB568536611CD46G。reset-lun 可调参数的值为 TRUE 时表示重置 LUN。
对于设备 SINE,VID 为 SINE,PID 为 XYZ200_R。I/O 未就绪时的重试次数设置为 6。最小限制值设置为 200。
可以通过使用位掩码格式(也称为 Version1 格式)调优参数。位掩码格式包括 sd-config-list 属性,其中包含属性数组条目。
对 sd 驱动程序使用以下语法:
sd-config-list = duplet [, duplet ]*; sd-ver1-conf-data = 1, mask, value-sequence;
对 ssd 驱动程序使用以下语法:
ssd-config-list = duplet [, duplet ]*; sd-ver1-conf-data = 1, mask, value-sequence;
其中 duplet 为 "VID PID", "sd-ver1-conf-data"
设备的供应商标识 (vendor identification, VID) 字段的内容响应 SCSI INQUIRY 命令。VID 字段长度必须为八个字符。如果供应商标识字段少于八个字符,则必须添加空格使 VID 的长度达到八个字符。
设备的产品标识 (product identification, PID) 字段的内容响应 SCSI INQUIRY 命令。PID 最多可以包含 16 个左对齐的字符。如果提供的字符不到 16 个,则仅对您提供的 PID 长度进行比较。
属性数组由一个版本号 1、一个掩码号和要设置的可调参数值组成。
0x01 到 0x7FFFF 之间的值。mask 的值有时可以是多个所需标志的 OR 运算结果。Table D–1 显示了每个可调参数的位值。
对应于 mask 值的有效属性值序列和 0 的数量。value-sequence 的长度限制为 19 个字符。有关可调参数的数据类型,请参见磁盘驱动程序的可调参数。
当 SCSI INQUIRY 命令返回的前缀值与 sd-config-list 或 ssd-config-list 中的 PID 相同时,则认为 PID 值是一个匹配项。例如,如果 CMS200 是 sd-config-list 或 ssd-config-list 条目中的 PID,那么,当 SCSI INQUIRY 命令返回的 PID 为 CMS200-R、CMS200-T 或 CMS200-UV10 时,它们都被视为匹配项。
每个位的位置定义取决于平台。可调参数可能对应于不同平台上的不同标志值。Oracle Solaris 11 和 Oracle Solaris 10 支持采用位掩码格式的由 19 个可调参数组成的相同集合。
下表列出了不同平台上的可调参数及其标志值。
|
此示例说明了如何在 x86 平台上调优 sd.conf 文件中参数。
sd-config-list = "SUM ABC200_R","sd-ver1-x86-example"; sd-ver1-x86-example = 1,0x801,300,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0;
在此示例中,对于设备 SUM,VID 为 SUM,PID 为 ABC200_R。
掩码值 0x801 是 0x00800 和 0x00001 标志的按位或值。这些值是 x86 平台上的 retries-busy 和 throttle-max 可调参数。
示例 D-4 在 SPARC 平台上配置 ssd 驱动程序的可调参数此示例说明了如何在 SPARC 平台上调优 sd.conf 文件中的参数。
ssd-config-list = "SUM XYZ200_R","sd-ver1-ssd-example"; sd-ver1-ssd-example = 1,0x5,300,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;
在此示例中,对于设备 SUM,VID 为 SUM,PID 为 XYZ200_R。
掩码值 0x5 是 0x00004 和 0x00001 标志的按位或值。这些值是 SPARC 平台上的 retries-busy 和 throttle-max 可调参数。
如果某个 .conf 文件包含多个 sd-config-list 或 ssd-config-list 条目,用于调优同一个目标设备,则仅第一个条目生效。具有相同 VID 和 PID 的所有后续条目将被忽略。对于位掩码格式和名称:值对格式,此行为是相同的。
如果某个 sd-config-list 属性包含多个具有相同 VID 和 PID 的 duplet,则条目顺序中的后续指定优先,并替换在较早的 duplet 中出现的值。对于位掩码格式和名称:值对格式,此行为是相同的。
在位掩码格式中,如果 value-sequence 参数的长度大于 19 个字符,则第 19 个字符之后的值会被忽略。如果 value-sequence 的长度小于 19 个字符,则配置结果取决于其前面的 mask 值。如果 mask 值中标志位的对应值位置为空,则将导致在目标驱动程序中为该属性分配一个随机值。
目标驱动程序不为 .conf 文件提供语法检查,因此对于诸如可调参数名称拼写错误和 value-sequence 条目不正确之类的错误,不会出现警告消息。