我刚刚将功能正常的 Ubuntu 16.04 主机升级到 18.04,现在遇到了多路径问题。
软件包版本:* multipath-tools 0.7.4-2ubuntu3 * open-iscsi 2.0.874-5ubuntu2.7
我有一台 Dell PowerVault MD3860i,有四条通往主机的路径。升级前,multipath -ll
它看起来像这样:
backupeng (3600a098000b5efae00000e9a5b9b58f5) dm-2 DELL,MD38xxi
size=8.0T features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 3:0:0:1 sdb 8:16 active ready running
|- 4:0:0:1 sdc 8:32 active ready running
|- 5:0:0:1 sdd 8:48 active ready running
`- 6:0:0:1 sde 8:64 active ready running
现在看起来像这样:
backupeng (3600a098000b5efae00000e9a5b9b58f5) dm-2 DELL,MD38xxi
size=8.0T features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=14 status=active
| |- 5:0:0:1 sdd 8:48 active ready running
| `- 6:0:0:1 sde 8:64 active ready running
`-+- policy='round-robin 0' prio=9 status=enabled
|- 3:0:0:1 sdb 8:16 active ready running
`- 4:0:0:1 sdc 8:32 active ready running
我的/etc/multipath.conf
样子是这样的:
defaults {
user_friendly_names yes
path_selector "round-robin 0"
path_grouping_policy multibus
}
multipaths {
multipath {
wwid 3600a098000b5efae00000e9a5b9b58f5
alias backupeng
}
}
出于性能原因,我需要将所有路径放在同一个路径组中,就像以前一样。我的理解是path_grouping_policy multibus
应该这样做。在过去的几个小时里,我尝试过重新启动 multipathd、从头开始在主机上设置 iscsi 和多路径配置等等。
multipathd -k
我可以粘贴->的完整输出show config
,但我看到的内容与我的 multipath.conf 文件一致。我还能提供其他信息吗?
答案1
您是否实际测量过性能并发现性能下降了?您可能实际上发现性能有所改善,尽管差异可能不是很大。
Dell PowerVault MD3860i 似乎是一种主动/被动(也称为非对称或 ALUA)式存储系统:它有两个存储控制器,每个磁盘在任何时候都被视为“属于”其中一个控制器。如果通过当前不“拥有”磁盘的控制器访问磁盘,则会触发所有权切换,这会增加磁盘 I/O 操作的一些额外延迟。
因此,最好仅使用使用当前拥有正在访问的磁盘的控制器的路径。
您的新multipath -ll
输出表明dm-multipath
正在使用该rdac
协议从存储系统接收 ALUA 信息。也就是说,存储控制器正在告知dm-multipath
它当前应该使用哪些路径。该rdac
协议是 LSI/Engenio/NetApp 存储控制器及其 OEM 使用的较旧的协议,并且很容易理解。还有其他类似的特定于供应商的协议,SCSI-3 ALUA 将成为传达此信息的新标准方式,尽管并非所有存储系统都使用它。
您正在设置默认path_grouping_policy 到multibus
,但它很可能被编译到 中的硬件特定默认值所覆盖multipath-tools
。(特定胜过一般:适用device
或multipath
部分中的任何设置都将覆盖部分中设置的值defaults
。)
这些内置默认值是与存储设备制造商合作实现的;显然multipath-tools
Ubuntu 16.04 中的版本还没有针对 Dell PowerVault MD3860i 的特定默认值,但在 Ubuntu 18.04 中有了。
您可以使用 查看这些内置默认值sudo multipath -t
。对于您的存储系统,相关的设置组可能如下所示:
device {
vendor "DELL"
product "(MD34xx|MD38xx)"
product_blacklist "Universal Xport"
path_grouping_policy "group_by_prio"
path_checker "rdac"
features "2 pg_init_retries 50"
hardware_handler "1 rdac"
prio "rdac"
failback "immediate"
no_path_retry 30
}
path_grouping_policymultibus
适用于真正的主动/主动存储系统,它允许您无限制地使用任何路径。这些往往是更大、更高级别的存储产品。
您可以编写自己的设置device { ... }
或overrides { ... }
阻止multipath.conf
覆盖这些设置,但只有当您拥有存储供应商提供的特定信息,或者您有测试结果证明您实际上比供应商和开发人员更了解时,您才应该在生产中这样做dm-multipath
。