CentOS 7 与 CentOS Stream 8 上不同的 mdadm RAID 1 行为和性能

CentOS 7 与 CentOS Stream 8 上不同的 mdadm RAID 1 行为和性能

我有 2 个基本相同的配置,在 CentOS 7.9.2009 (3.10.0-1160.24.1.el7.x86_64) 和 CentOS Steam 8 (4.18.0-301.1.el8.x86_64) 上处理 i/o 的方式似乎不同。两者都使用完全相同的硬件。

CentOS 8 上的 I/O 性能明显变慢,导致整个操作系统陷入瘫痪。运行的程序每约 50 毫秒写入约 4kb 到文件,并每隔几分钟创建新文件。

它们的分区完全相同:

NAME    FSTYPE            LABEL
sda                                                                      
|-sda1  linux_raid_member
| `-md0 ext4              /
|-sda2  linux_raid_member 
| `-md2 swap              [SWAP]
|-sda3  linux_raid_member 
| `-md3 ext4              /home
`-sda4  linux_raid_member 
  `-md4 vfat              /boot/efi
sdb    
|-sdb1  linux_raid_member
| `-md0 ext4              /
|-sdb2  linux_raid_member 
| `-md2 swap              [SWAP]
|-sdb3  linux_raid_member 
| `-md3 ext4              /home
`-sdb4  linux_raid_member 
  `-md4 vfat              /boot/efi

md3 ext4 分区已禁用日志记录 (^has_journal),因为这是所有写入操作发生的地方。

两者都使用 mdadm 版本 4.1 配置完全相同:

ARRAY /dev/md/0  metadata=1.2
ARRAY /dev/md/2  metadata=1.2
ARRAY /dev/md/3  metadata=1.2
ARRAY /dev/md/4  metadata=1.0

CentOS 7 i/o 信息(良好/工作版本):

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.42    0.00    1.73    0.79    0.00   96.06

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sdb               6.57     1.09    6.77   20.33   861.35   181.20    76.93     0.15    5.57    1.80    6.83   1.85   5.03
sda               6.57     1.09    6.89   20.34   871.93   181.20    77.37     0.16    5.73    2.06    6.97   1.86   5.05
md2               0.00     0.00    0.00    0.00     0.00     0.00    36.87     1.94    0.00    0.00    0.00 9189344.91 100.00
md0               0.00     0.00    0.12    2.04     3.04    13.32    15.18     0.38    0.00    0.00    0.00 463.89 100.01
md3               0.00     0.00    0.34   17.24    43.12   165.73    23.76     0.30    0.00    0.00    0.00  56.91 100.02
md4               0.00     0.00    0.00    0.00     0.00     0.00     9.63     0.05    0.00    0.00    0.00 1271435.74 100.00

请注意,%iowait 相对较低,md 设备处于 100 %util,而 sdX 处于较低 %util(最后一列)

CentOS Stream 8 i/o 信息(较新版本的iostat不同列):

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.15    0.00    5.17    8.72    0.00   81.96

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sdb             15.06   51.51   1394.12    266.33     6.74     5.28  30.91   9.29   13.90    8.96   0.67    92.57     5.17   5.65  37.59
sda             15.24   51.52   1407.22    266.33     6.76     5.26  30.73   9.26   13.96    9.11   0.68    92.35     5.17   5.68  37.90
scd0             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    2.10    0.00   0.00     0.20     0.00   2.80   0.00
md2              0.00    0.05      0.01      0.21     0.00     0.00   0.00   0.00    0.00    0.00   0.00     6.13     4.00   0.00   0.00
md0              0.16    5.46      5.68     23.85     0.00     0.00   0.00   0.00    0.00    0.00   0.00    34.53     4.36   0.00   0.00
md3              0.21   47.99     16.97    239.23     0.00     0.00   0.00   0.00    0.00    0.00   0.00    80.54     4.98   0.00   0.00
md4              0.00    0.00      0.02      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     6.01     0.50   0.00   0.00

请注意,%iowait 非常高,md 设备的 %util 为 0,而 sdX 的 %util 更高

看起来atopCentOS 7 实际上表现更差; MD 设备呈红色闪烁。

MDD |          md0  | busy    101% | read       0  |              |  write     29 | KiB/r      0  | KiB/w      4 | MBr/s    0.0  | MBw/s    0.0 |               | avq 317813.45 |  avio  345 ms
MDD |          md3  | busy    101% | read       0  |              |  write    518 | KiB/r      0  | KiB/w      7 | MBr/s    0.0  | MBw/s    0.4 |               | avq 113304.48 |  avio 19.3 ms
DSK |          sdb  | busy     11% | read       0  |              |  write    551 | KiB/r      0  | KiB/w      7 | MBr/s    0.0  | MBw/s    0.4 |               | avq     4.02 |  avio 2.05 ms |
DSK |          sda  | busy     11% | read       0  |              |  write    551 | KiB/r      0  | KiB/w      7 | MBr/s    0.0  | MBw/s    0.4 |               | avq     4.35 |  avio 1.94 ms |

在 CentOS 8 Stream 上,MD 设备没有闪烁红色,因为电量为 0%

MDD |           md0 |  busy      0%  | read       0  |  write     58  | KiB/r      0  |  KiB/w      4 |  MBr/s    0.0  | MBw/s    0.0  |  avq     0.00  | avio  0.0 ns  |
MDD |           md3 |  busy      0%  | read       0  |  write     40  | KiB/r      0  |  KiB/w     22 |  MBr/s    0.0  | MBw/s    0.1  |  avq     0.00  | avio  0.0 ns  |
DSK |           sdb |  busy      7%  | read       0  |  write     93  | KiB/r      0  |  KiB/w     12 |  MBr/s    0.0  | MBw/s    0.1  |  avq     1.30  | avio 6.97 ms  |
DSK |           sda |  busy      6%  | read       0  |  write     93  | KiB/r      0  |  KiB/w     12 |  MBr/s    0.0  | MBw/s    0.1  |  avq     1.30  | avio 6.58 ms  |
NFS |  rpc        4 |  cread      0  | cwrit      0  |  MBcr/s   0.0  | MBcw/s   0.0  |  nettcp     4 |  netudp     0  | badfmt     0  |  badaut     0  | badcln     0  |

在 CentOS 8atop读取上,还有一个 NFS 行,而在 CentOS 7 上则没有。它们都运行 NFS 服务器(安装了相同的客户端硬件/系统),所以也许这会以某种方式影响它?客户端安装到/home/user(在 md3 分区上),这是所有写入发生的地方。

在两个系统上运行相同的程序(快速小写入),iotop在 CentOS 7 上将显示 5-10% I/O 使用率,而在 CentOS 8 计算机上则显示 30-80% I/O 使用率。 CentOS 8 机器也显示了 [nfsd] 的一些 I/O 使用情况,但非常低 (<4%)。

我很确定罪魁祸首是 CentOS 8 机器出于某种原因写入 sdX,而不是 mdX,但我也可能完全误解了 MD 设备的工作原理。

相关内容