限制将文件写入NFS的速度

CentOS 5.6

NFS被安装在服务器上用于备份磁盘空间。 当备份工作开始时,它可以达到80MB / s,我们真的不希望占用这么多的带宽。 所以我需要find一种方法来限制写入NFS的速度。

我用–bwlimit = 5000尝试了rsync 。 然而,它的确限制了阅读速度,但是积累的数据仍然是80MB / s,没有几秒钟的写作活动。

有没有办法限制NFS的写入速度?

对不起,打开这样一个旧的线程,但我写了一个脚本来限制使用pv命令的速度传输,它也适用于NFS。 我还没有得到的唯一的东西是一滴速度,只有当我通过sshfs使用NFS一切都很好。

我的服务器NFSconfiguration(出口):

 rw,sync,no_subtree_check 

和客户端configuration(挂载选项):

 rsize=8192,wsize=8192,timeo=14,intr,_netdev,noauto,hard,sync 

这是我的脚本:

  #!/bin/bash # Simple Script to mv files OR folders at $3 BPS tor_path="$1" mv_dir="$2" speed="$3" tor_dir="$(basename "$tor_path")" file="" tlines="" cnt="" file="" [[ "$mv_dir" != *"/" ]] && mv_dir=""$mv_dir"/" if [[ -f "$tor_path" ]] && [[ -d "$mv_dir" ]] then pv -L "$speed" "$tor_path" > "$mv_dir""$tor_dir" elif [[ -d "$tor_path" ]] && [[ -d "$mv_dir" ]] then tor_files="$(mktemp --tmpdir tor_files.XXXXXX)" [[ "$tor_path" != *"/" ]] && tor_path=""$tor_path"/" find "$tor_path" -type d > "$tor_files" sed 's#'"$tor_path"'#'"$tor_dir"'/#g; s###g' -i "$tor_files" tlines="$(wc -l < "$tor_files")" cnt=0 while [ "$cnt" -lt "$tlines" ] do let cnt++ file="$(head -n $cnt $tor_files | tail -1)" mkdir "$mv_dir""$file" done find "$tor_path" -type f > "$tor_files" sed 's#'"$tor_path"'#'"$tor_dir"'/#g' -i "$tor_files" tlines="$(wc -l < "$tor_files")" cnt=0 while [ "$cnt" -lt "$tlines" ] do let cnt++ file="$(head -n $cnt $tor_files | tail -1)" pv -L "$speed" "$tor_path""$(basename "$file")" > "$mv_dir""$file" done rm "$tor_files" else exit 1 fi 

NFS不提供限制客户端使用的带宽的方法。

您看到数据累积并全速写出的行为是在客户机上增长的脏页,然后被刷新到NFS服务器。 这是IO工作的预期方式。

在Linux NFS客户端上,可以使用tc来匹配和控制stream量。 这就像使用NFS服务器的IP地址作为目的地,并限制该类的速率一样简单。

这在“ Linux高级路由和stream量控制HOWTO”中有介绍 ,具体见第9章“带宽pipe理排队规则”man tc

下面是一个使用确切命令的例子: http : //iomem.com/archives/17-Rate-limiting-with-sch_htb.html