Linux多路径IO流量负载和单链路负载压测
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测试均分别使用:
- dd压测,不经过缓存
顺序写IO测试语句:time dd if=/dev/zero of=/dev/mapper/disktest bs=8k count=300000 oflag=direct - 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
至此。