DRBD IOWait - 高 i/o 磁盘和 iowait,但低流量和 r/w 磁盘

DRBD IOWait - 高 i/o 磁盘和 iowait,但低流量和 r/w 磁盘

我需要你的帮助。

我有 DRBD 集群 (9.6.0,内核 3.10.0-957.21.3,CentOS 7)。在这个集群中,我有两个 drbd 磁盘:

  • SSD 的 drbd0
  • drbd1 用于 HDD

drbd0 (SSD,sda) 一切正常 - 处于更新状态。但 drbd1 (HDD,sdb) 我看到以下内容:

# drbdadm status
drbd0 role:Primary
  disk:UpToDate
  slave role:Secondary
    peer-disk:UpToDate

drbd1 role:Primary
  disk:UpToDate
  slave role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:0.17

速度非常慢 - 6 小时内只用了 0.17%。我知道 HDD 比 SSD 慢,但这个速度太慢了。

信息:

我有这个配置(注释行-这是我的实验):

# cat /etc/drbd.d/global_common.conf 
global {
 usage-count  yes;
}
common {
 net {
  protocol B;
  }
}

# cat /etc/drbd.d/drbd0.res 
resource drbd0 {
        on master {
                device /dev/drbd0;
                disk /dev/mapper/vg_ssd_drbd-lv_ssd_drbd;
                meta-disk internal;    
                address 192.168.100.15:7788;
        }
        on slave  {
                device /dev/drbd0;
                disk /dev/mapper/vg_ssd_drbd-lv_ssd_drbd;
                meta-disk internal;
                address 192.168.100.17:7788;
        }
        net {
                sndbuf-size 10M;
                rcvbuf-size 10M;
                ping-int 2;
                ping-timeout 2;
                connect-int 2;
                timeout 5;
                ko-count 5;
                max-buffers 128k;
                max-epoch-size 8192;
                verify-alg md5;
        }
        disk {
                c-plan-ahead 20;
                c-min-rate 1M;
                c-max-rate 600M;
                c-fill-target 2M;
                al-extents 3389;
        }
}

# cat /etc/drbd.d/drbd1.res 
resource drbd1 {
        on master {
                device /dev/drbd1;
                disk /dev/mapper/vg_hdd_drbd-lv_hdd_drbd;
                meta-disk internal;    
                address 192.168.100.15:7789;
        }
        on slave  {
                device /dev/drbd1;
                disk /dev/mapper/vg_hdd_drbd-lv_hdd_drbd;
                meta-disk internal;
                address 192.168.100.17:7789;
        }
        net {
                #sndbuf-size 1M;
                #rcvbuf-size 1M;
                ping-int 2;
                ping-timeout 2;
                connect-int 2;
                timeout 5;
                ko-count 5;
                #max-buffers 12k;
                #max-epoch-size 8192;
                #verify-alg md5;
        }
        disk {
                #c-plan-ahead 20;
                c-min-rate 1K;
                c-max-rate 600M;
                #c-fill-target 2M;
                al-extents 919;
        }
}

服务器具有 10Gbps 通道链路 - 都位于一个房间内。

我可以向你展示我的监控:

在此处输入图片描述

晚上我同步了我的 SSD - 一切正常。但白天我尝试同步我的 HDD,结果很糟糕。

IO 瞬间增长,但对磁盘的读写操作却没有一台服务器。与 NET 流量的情况相同。

在此处输入图片描述

如果我连接到服务器,我会看到以下图片:

top - 12:52:35 up 1 day, 10:44,  1 user,  load average: 1.01, 1.06, 1.26
Tasks: 492 total,   1 running, 491 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  0.3 sy,  0.0 ni,  0.0 id, 99.7 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

DRBD1(我在 iostat 中看到他)在 CPU 上以 100% 的速度加载 iowait,但 WriteKB 和 ReadKB 约为零。

我谷歌了一下它的问题,有人建议我显示 TCP 缓冲区,但没问题。我将 drbd1 的所有 DRBD 设置刷新为默认值,但没有结果。

在此处输入图片描述

我尝试自己诊断问题并发现了两个异常:

一。我看到有人在 1 秒内显示“执行 I/O 所花费的时间”。我想,我在这里得到的是超时。

在此处输入图片描述

二。在我的硬盘安装目录中,我发现 df/du 和 ls 命令有很大不同。也许这是 KVM 的功能,但我不确定。

du -sh /data/hdd-drbd/*
170M    /data/hdd-drbd/awx-add.qcow2
7.7G    /data/hdd-drbd/awx.qcow2
2.0G    /data/hdd-drbd/template-DISABLE.qcow2
ls -lah /data/hdd-drbd/
total 9.8G
drwxr-xr-x  2 root root   74 Aug 16 17:37 .
drwxr-xr-x. 8 root root   91 Aug 14 22:11 ..
-rw-------  1 qemu qemu 201G Aug 15 19:41 awx-add.qcow2
-rw-------  1 qemu qemu 7.7G Aug 18 17:26 awx.qcow2
-rw-------  1 root root  46G Aug 15 13:48 template-DISABLE.qcow2

现在我要将所有数据移至 SSD 磁盘,并尝试重新同步空磁盘 - 也许 - 没问题。但我需要您的帮助来解决这个问题 - 您对这种情况有什么想法吗?

编辑:

还有一点——为什么我要重新同步我的存储?我在 LVM 中为 drbd[0/1] 添加了一些 PV,并调整了 drbd 设备的大小。也许这是重要的信息……在此操作之前,drbd 运行良好。

编辑2:

空盘重新同步相同...

答案1

我有 CRUTCH 风格的解决方案。

首先,我将所有数据从 HDD-drbd 移至 SSD-drbd,然后重新创建 drbd-device。因为此同步工作正常。

其次,我(可能)发现了一个性能问题。见图表

在此处输入图片描述

我享受了 2 小时的良好性能,但随后我尝试启动 KVM 的虚拟机。神奇的是,性能下降了(根据图表,约为 13:10)。然后我停止虚拟机,性能恢复了。

我认为这是因为在同步期间你不应该给 DRBD 提供哪怕是最小的负载。但是,我真的希望同步之后不会再出现这个问题。

相关内容