系统:CentOS Linux 7

数量:3

前言:3台内网CentOS7.9系统,两个作为nfs服务器提供存储,后文标识名分别是src、dst;一个作为客户端,后文标识名是client,在本地挂载两个nfs,挂载目录假设是 /nfs-src/nfs-dst

描述: client使用cp命令,从 /nfs-src 复制一个 10G 的文件到 /nfs-dst

实验过程:

为监控系统、流量等,需要监控系统,正好我已有 prometheus,再分别在两个nfs部署 node_exporter,加入到node任务中。

开始:cp /nfs-src/test /nfs-dst/

观察(net表示任意流量,net in表示入流量,net out表示出流量;io Read表示读速率,io Write表示写速率):

  • 首先 client 远程调用 src 进行一系列初始化,花费了不少时间,此阶段无 io、net;
  • 开始传输,src 根据远程调用频率发生 io Read(通过sar采集NFSD数据,发现io基本与远程调用速度正相关),发生net out;
  • client 前期发生短暂 io Write,同时发生 net in/out,net in 与 src 的 net out 基本一致;
  • dst 发生 io Wirte,后期高峰;发生 net in(约等于 client 的 net out)
  • 此过程,随着 nfs 远程调用发生io、net,并不会如本地cp一般持续,最终到复制完成,10G的文件,耗时大约50分钟。

监控图:

  • nfs-src nfs-src.png

  • client nfs-client.png

  • nfs-dst nfs-dst.png

总结:

总体上,内存均无明显变化,client作为“中介”磁盘使用无变化,数据不在它的本地落盘。

  • 对于 src,系统负载无明显变化,随着nfs远程调用,发生 io 和 net out,CPU使用率略微上升,调用结束,io、net out、cpu 下降,总出口流量与文件大小一致;

  • 对于 cleint,负载和cpu上升,且持续到复制结束;发生 net in 与 src 的 net out 一致;发生 net out 于 dst 的 net in 一致,总出入口流量与文件大小一致;

  • 对于 dst,负载、cpu与client基本一致;发生 net in(配合 src 的 net out 图,正好跟 client net 流量图一样);总入口流量与文件大小一致;

受限于磁盘性能、nfs远程调用频率,io、net均未有持续的增长,总体呈现峰谷形,但cp效率“惊人”,不推荐此场景使用。

另外,看到有一个实用程序 nfs-cp,其使用说明可以直接cp两个nfs,不知道效率如何。


·End·