服务器之间的文件传输似乎很慢

服务器之间的文件传输似乎很慢

我有两台服务器,都运行 Rocky Linux v8.4,其中一台托管一个 raid 驱动器,我用它来备份以 /home 形式安装在服务器 A 上的(非常)大的 raid 驱动器。

服务器 A(带有需要备份的 70TB 大型 RAID,安装为 /home)nfs 从服务器 B 安装备份驱动器。服务器通过具有 10GB 连接的交换机连接。我目前只做了直接操作:

cp -a /home/* /backup

但我觉得传输速度很慢。我一直在用 vnstat 监控传输:


         hour        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     2022-09-07
         18:00     52.79 MiB |    9.23 GiB |    9.28 GiB |   22.15 Mbit/s
         19:00     47.31 MiB |    6.14 GiB |    6.19 GiB |   14.76 Mbit/s
         20:00     47.14 MiB |    6.18 GiB |    6.22 GiB |   14.85 Mbit/s
         21:00     47.43 MiB |    6.24 GiB |    6.28 GiB |   14.99 Mbit/s
         22:00     44.31 MiB |    4.11 GiB |    4.15 GiB |    9.91 Mbit/s
         23:00     44.46 MiB |    4.04 GiB |    4.08 GiB |    9.73 Mbit/s
     2022-09-08
         00:00     44.90 MiB |    4.39 GiB |    4.43 GiB |   10.58 Mbit/s
         01:00     44.97 MiB |    4.63 GiB |    4.67 GiB |   11.15 Mbit/s
         02:00     43.82 MiB |    3.86 GiB |    3.90 GiB |    9.30 Mbit/s
         03:00     54.34 MiB |    9.77 GiB |    9.82 GiB |   23.43 Mbit/s
         04:00     47.28 MiB |    6.41 GiB |    6.45 GiB |   15.40 Mbit/s
         05:00     47.52 MiB |    6.30 GiB |    6.35 GiB |   15.14 Mbit/s
         06:00     47.63 MiB |    6.53 GiB |    6.58 GiB |   15.69 Mbit/s
         07:00     46.99 MiB |    5.98 GiB |    6.03 GiB |   14.38 Mbit/s
         08:00     43.95 MiB |    4.57 GiB |    4.61 GiB |   11.01 Mbit/s
         09:00     44.94 MiB |    4.35 GiB |    4.39 GiB |   10.48 Mbit/s
         10:00     45.17 MiB |    4.69 GiB |    4.74 GiB |   11.30 Mbit/s
         11:00     44.88 MiB |    4.31 GiB |    4.35 GiB |   10.39 Mbit/s
         12:00     44.80 MiB |    4.72 GiB |    4.77 GiB |   11.38 Mbit/s
         13:00     47.73 MiB |    6.24 GiB |    6.29 GiB |   15.01 Mbit/s
         14:00     48.13 MiB |    6.29 GiB |    6.34 GiB |   15.12 Mbit/s
         15:00     45.31 MiB |    4.84 GiB |    4.89 GiB |   11.66 Mbit/s
         16:00     45.89 MiB |    4.90 GiB |    4.95 GiB |   11.81 Mbit/s
         17:00      7.58 MiB |  873.07 MiB |  880.66 MiB |   12.31 Mbit/s
     ------------------------+-------------+-------------+---------------

服务器 A 使用以下选项挂载 /home(来自 /proc/mounts):

/dev/sdb1 /home xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0

并使用以下选项从服务器 B nfs 自动挂载 /backup:

Server_B:/backup /backup nfs4 rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.33.254,local_lock=none,addr=172.16.33.250 0 0

服务器 B 使用以下选项安装备份驱动器:

/dev/sdb /backup xfs rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota 0 0

有没有更好的选择可以加快这些东西之间的传输速度?肯定有非常大的文件(50GB+)和非常小的文件的混合,所以这不是理想的传输场景,但它似乎仍然应该比这更快。这两个都是 xfs 文件系统,通过 Megaraid 9750-4i 卡在 raid6 硬件配置中运行。70TB raid 由 21 个 4TB WDC WD4000FYYZ-01UL 驱动器组成,备份驱动器是 21 个 16TB seagate ironwolf ST16000NE000-2RW103 驱动器。(我计划在备份完成后将较小的 raid 迁移到较大的 21 个 16TB 驱动器)。

网络:服务器 A 的 NIC

Settings for enp132s0f0:
        Supported ports: [ FIBRE ]
        Supported link modes:   10000baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  10000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 10000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: Direct Attach Copper
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

服务器 B 的网卡

Settings for enp132s0f0np0:
        Supported ports: [ FIBRE ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  Not reported
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: No
        Link partner advertised FEC modes: Not reported
        Speed: 10000Mb/s
        Duplex: Full
        Auto-negotiation: off
        Port: FIBRE
        PHYAD: 255
        Transceiver: internal
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x000020f7 (8439)
                               drv probe link ifdown ifup rx_err tx_err hw
        Link detected: yes

服务器之间的 iperf3:

Connecting to host fs01, port 5201
[  5] local 172.16.33.254 port 49004 connected to 172.16.33.250 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.10 GBytes  9.43 Gbits/sec    0    673 KBytes
[  5]   1.00-2.00   sec  1.09 GBytes  9.41 Gbits/sec    0    708 KBytes
[  5]   2.00-3.00   sec  1.09 GBytes  9.41 Gbits/sec    0    708 KBytes
[  5]   3.00-4.00   sec  1.09 GBytes  9.41 Gbits/sec    0    708 KBytes
[  5]   4.00-5.00   sec  1.09 GBytes  9.41 Gbits/sec    0    708 KBytes
[  5]   5.00-6.00   sec  1.09 GBytes  9.41 Gbits/sec    0    708 KBytes
[  5]   6.00-7.00   sec  1.10 GBytes  9.42 Gbits/sec    0    708 KBytes
[  5]   7.00-8.00   sec  1.10 GBytes  9.42 Gbits/sec    0    708 KBytes
[  5]   8.00-9.00   sec  1.09 GBytes  9.41 Gbits/sec    0    708 KBytes
[  5]   9.00-10.00  sec  1.10 GBytes  9.42 Gbits/sec    0    708 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  11.0 GBytes  9.41 Gbits/sec    0             sender
[  5]   0.00-10.04  sec  11.0 GBytes  9.37 Gbits/sec                  receiver

iperf Done.

答案1

我会先安装 ethtool(如果您还没有安装的话)。然后针对您的网络适配器运行 ethtool。验证每台服务器的连接速度。是 10/100/1000 还是双工?

之后,我会将 iperf(命令行带宽测试工具)下载到每个 Linux 机器上。使用 iperf,您将在两台 Linux 机器上运行它。一台机器将是服务器(监听某个端口),另一台机器将是客户端,向服务器发送数据,程序将测试实际带宽

答案2

显然,我最大的问题不是像我想象的那样的挂载选项,而是 NFS 驱动器上的大量写入操作。我在这里找到了一个关于尝试优化大量数据传输的优秀问题/答案:如何在两台服务器之间快速复制大量文件

事实证明,如果我先使用 tar 存档,那么传输速率会突然显著提高。我敢打赌,可能有更好的方法来安装驱动器以获得更高效的读/写速度,但我对这种提高感到满意。我最终使用的命令是:

for i in *; do echo "Transferring $i..."; tar c $i | tee >(sha512sum >&2) |pv -prab |ssh root@serverB 'tee >(sha512sum >&2) |tar xC /backup';done

这很酷,因为它会计算校验和以确认传输的所有内容都没有损坏。我对每个目录都单独执行了此操作,因此如果出现问题,我不必检查整个驱动器,我只需 rsync 失败的单个目录即可。我的新传输速率如下所示:

vnstat -h

 enp132s0f0  /  hourly

         hour        rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     2022-09-11
         12:00      6.19 GiB |    1.18 TiB |    1.19 TiB |    2.90 Gbit/s
         13:00      4.68 GiB |  914.89 GiB |  919.56 GiB |    2.19 Gbit/s
         14:00      4.07 GiB |  794.46 GiB |  798.53 GiB |    1.91 Gbit/s
         15:00      3.11 GiB |  599.20 GiB |  602.32 GiB |    1.44 Gbit/s
         16:00     52.35 GiB |  981.27 GiB |    1.01 TiB |    2.47 Gbit/s
         17:00    100.42 GiB |  692.77 GiB |  793.20 GiB |    1.89 Gbit/s
         18:00     15.76 GiB |   42.21 GiB |   57.97 GiB |  138.32 Mbit/s
         19:00      6.87 GiB |    1.52 GiB |    8.38 GiB |   20.00 Mbit/s
         20:00     27.24 GiB |  788.69 GiB |  815.93 GiB |    1.95 Gbit/s
         21:00      3.12 GiB |  232.74 GiB |  235.86 GiB |  562.79 Mbit/s
         22:00      2.12 GiB |  182.84 GiB |  184.95 GiB |  441.31 Mbit/s
         23:00    394.28 MiB |   55.79 MiB |  450.06 MiB |    1.05 Mbit/s
     2022-09-12
         00:00      3.29 GiB |  671.18 GiB |  674.47 GiB |    1.61 Gbit/s
         01:00      3.14 GiB |  690.73 GiB |  693.86 GiB |    1.66 Gbit/s
         02:00      4.93 GiB |    1.04 TiB |    1.05 TiB |    2.56 Gbit/s
         03:00      4.98 GiB |    1.02 TiB |    1.03 TiB |    2.51 Gbit/s
         04:00      4.91 GiB |    1.04 TiB |    1.05 TiB |    2.56 Gbit/s
         05:00      5.29 GiB |    1.09 TiB |    1.10 TiB |    2.68 Gbit/s
         06:00      4.75 GiB |    1.02 TiB |    1.03 TiB |    2.50 Gbit/s
         07:00      2.90 GiB |  667.92 GiB |  670.82 GiB |    1.60 Gbit/s
         08:00    962.17 MiB |  207.28 GiB |  208.22 GiB |  496.82 Mbit/s
         09:00    408.99 MiB |   75.80 GiB |   76.20 GiB |  181.81 Mbit/s
         10:00    763.05 MiB |  139.60 GiB |  140.34 GiB |  334.87 Mbit/s
         11:00    140.79 KiB |   39.67 KiB |  180.46 KiB |    4.93 kbit/s
     ------------------------+-------------+-------------+---------------

相关内容