Linux 多路径:如何配置单个多总线路径组

Eil*_*Eil 3 linux ubuntu iscsi multipath

我刚刚将功能正常的 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
Run Code Online (Sandbox Code Playgroud)

现在看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

我的/etc/multipath.conf看起来像这样:

defaults {
    user_friendly_names yes
    path_selector "round-robin 0"
    path_grouping_policy multibus
}

multipaths {
    multipath {
        wwid 3600a098000b5efae00000e9a5b9b58f5
        alias backupeng
    }
}
Run Code Online (Sandbox Code Playgroud)

出于性能原因,我需要将所有路径放在同一个路径组中,就像以前一样。我的理解是path_grouping_policy multibus应该这样做。在过去的几个小时里,我尝试重新启动 multipathd、在主机上从头开始设置 iscsi 和多路径配置等。

multipathd -k我可以粘贴->的完整输出show config,但我在其中看到的内容与我的 multipath.conf 文件一致。我还可以提供其他信息吗?

tel*_*coM 5

您是否实际测量过性能并发现其性能下降?您实际上可能会发现它有所改进,尽管差异可能不是很大。

Dell PowerVault MD3860i 似乎是一种主动/被动(也称为非对称或 ALUA)类型的存储系统:它有两个存储控制器,并且每个磁盘在任何给定时间都被视为由其中一个控制器“拥有”。如果通过当前不“拥有”该磁盘的控制器访问磁盘,则会触发所有权切换,从而为磁盘 I/O 操作增加一些额外的延迟。

因此,最好仅使用使用当前拥有正在访问的磁盘的控制器的路径。

您的新multipath -ll输出表明dm-multipath正在使用该协议从存储系统接收 ALUA 信息rdac。也就是说,存储控制器告诉dm-multipath它当前应该使用哪些路径。这rdac协议是 LSI/Engenio/NetApp 存储控制器及其 OEM 使用的较旧协议,并且很好理解。还有其他类似的特定于供应商的协议,SCSI-3 ALUA 将成为传递此信息的新标准方式,尽管并非所有存储系统都使用它。

您将默认的path_grouping_policy设置为multibus,但它很可能被编译为multipath-tools. (一般特定节拍:适用devicemultipath部分中的任何设置都将覆盖该部分中设置的值defaults。)

这些内置默认值是与存储设备制造商合作实现的;显然,multipath-toolsUbuntu 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
    }
Run Code Online (Sandbox Code Playgroud)

path_grouping_policymultibus适用于真正的主动/主动存储系统,它允许您不受限制地使用任何和所有路径。这些往往是更大、更高级别的存储产品。

您可以编写自己的device { ... }overrides { ... }阻止来multipath.conf覆盖这些设置,但只有当您从存储供应商那里获得特定信息,或者您有测试结果证明您实际上比供应商更了解时,您才应该在生产中这样做和dm-multipath开发商。

  • 所以“multipath”正在做它应该做的事情,事实上,我快疯了。或者至少在存储方面我还有更多的学习要做。你说的一切都有道理,我接受了你的答案。谢谢! (2认同)