Linux多路径IO流量负载和单链路负载压测

发布时间 2023-11-13 17:38:56作者: PiscesCanon

 

Linux Multipath的IO流量多链路负载和单链路负载压测

 

再linux下,对于udev和multipath均能做到自定义并持久化设备名,其中udev还能做到更改设备权限。

而multipath也能做到持久化设备名,但无法更改设备权限,但是multipath能够实现更多的功能,比如IO流量负载功能。

 

测试

情况1 单链路IO流量负载

新增一个存储挂载的磁盘设置,共4条链路,在linux上表现为多了4块盘,查询wwid可以发现4块盘实际上对应的是同一个。

[root@oracledb1 ~]# ll /dev/sda[i,j,k,h]
brw-rw---- 1 root disk 66, 16 Nov 10 17:13 /dev/sdah
brw-rw---- 1 root disk 66, 32 Nov 10 17:13 /dev/sdai
brw-rw---- 1 root disk 66, 48 Nov 10 17:14 /dev/sdaj
brw-rw---- 1 root disk 66, 64 Nov 10 17:14 /dev/sdak

[root@oracledb1 ~]# scsi_id --whitelisted /dev/sdah
36c4b8b41004840d411a7bd4200000011
[root@oracledb1 ~]# scsi_id --whitelisted /dev/sdai
36c4b8b41004840d411a7bd4200000011
[root@oracledb1 ~]# scsi_id --whitelisted /dev/sdaj
36c4b8b41004840d411a7bd4200000011
[root@oracledb1 ~]# scsi_id --whitelisted /dev/sdak
36c4b8b41004840d411a7bd4200000011

 

 

修改/etc/multipath.conf,持久化新磁盘并设置单链路IO流量负载,新增配置如下:

        multipath {
                        wwid                    36c4b8b41004840d411a7bd4200000011
                        alias                   disktest
}

 

重新加载配置,https://www.cnblogs.com/PiscesCanon/p/17829710.html

[root@oracledb1 ~]# multipath -r
[root@oracledb1 ~]# multipath -ll
......
disktest (36c4b8b41004840d411a7bd4200000011) dm-8 HUAWEI,XSG1
size=20G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 1:0:0:9 sdah 66:16  active ready running
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 1:0:2:9 sdai 66:32  active ready running
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 2:0:0:9 sdaj 66:48  active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 2:0:2:9 sdak 66:64  active ready running

 

 

之后进行IO压测。详情见“IO测试”。

防偷放爬。

 

情况2 多链路IO流量负载

修改/etc/multipath.conf并重载:

        multipath {
                        wwid                    36c4b8b41004840d411a7bd4200000011
                        alias                   disktest
                        path_grouping_policy    multibus
                        path_checker            tur
                        path_selector           "round-robin 0"
}

[root@oracledb1 ~]# multipath -r
[root@oracledb1 ~]# multipath -ll
......
reload: disktest (36c4b8b41004840d411a7bd4200000011) undef HUAWEI,XSG1
size=20G features='0' hwhandler='0' wp=undef
`-+- policy='round-robin 0' prio=1 status=undef
  |- 1:0:0:9 sdah 66:16  active ready running
  |- 1:0:2:9 sdai 66:32  active ready running
  |- 2:0:0:9 sdaj 66:48  active ready running
  `- 2:0:2:9 sdak 66:64  active ready running

之后进行IO压测。详情见“IO测试”。

 

IO测试

只做写测试。

情况1和情况2测试均分别使用:

  1. dd压测,不经过缓存
    顺序写IO测试语句:time dd if=/dev/zero of=/dev/mapper/disktest bs=8k count=300000 oflag=direct
  2. fio工具进行随机写IO测试。
    随机写IO测试语句:fio -filename=/dev/mapper/disktest -direct=1 -iodepth 32 -rw=randwrite -ioengine=libaio -bs=8k -numjobs=32 -runtime=180 -group_reporting -name=randwrite -size=5G

 

情况1和情况2

实际线程数不同,bs不同带来的结果也可能不同。并发数量越大,多链路IO流量负载的优势越大。

 

单链路的iostat:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.75    0.00    0.53    1.19    0.00   97.53

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdah              0.00     0.00    0.00 3284.00     0.00 26272.00    16.00     0.97    0.30   0.30  97.20
sdai              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdaj              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdak              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

 

多链路的iostat:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.18    0.00    0.47    1.30    0.00   98.05

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdah              0.00     0.00    0.00  927.00     0.00  7416.00    16.00     0.32    0.35   0.35  32.20
sdai              0.00     0.00    0.00  926.00     0.00  7408.00    16.00     0.21    0.23   0.23  21.40
sdaj              0.00     0.00    0.00  926.00     0.00  7408.00    16.00     0.18    0.20   0.20  18.50
sdak              0.00     0.00    1.00  927.00     4.00  7416.00    15.99     0.26    0.28   0.28  26.40

 

 

至此。