Networking

無法使用涓流限製網路頻寬

  • November 13, 2019

我有一台伺服器,我想開始對某些文件進行日常備份。由於伺服器在生產中,最好限製網路頻寬,我認為涓流可以完成這項工作,但它似乎根本沒有任何效果,我不明白為什麼。

伺服器 A 有我要存檔的文件。我在上面創建了一個 NFS 共享,並允許訪問我安裝文件的伺服器 B。在伺服器 BI 上執行以下命令:

trickle -s -u 20000 -d 20000 find /mnt/ServerA/log/ -newermt 20181001 -not -newermt 20181002 -type f -print0 | xargs -0 tar -cvzf /tmp/archive.tar.gz

當我使用 iptraf-ng 工具觀察伺服器 B 網路流量時,我看到兩台伺服器都充分利用了它們的 1 Gigabit 頻寬(它們位於同一個區域網路中)。正如我在上面的命令中指定的那樣,涓流並不將其限制為 20Mbps。

這是我在 iptraf-ng 中看到的:846.68 Mbps(伺服器 A 和 B),而命令正在執行。

為什麼涓流命令不起作用,我可以使用什麼來代替,這相對簡單。

我對涓流不是很熟悉,但在我看來,在您的命令中,涓流是在“查找”命令上執行,而不是在使用頻寬的 tar 命令上執行。

我會考慮重新調整命令以使用 PV 來限制流的速度。我沒有嘗試過,但我想這樣的事情會起作用:

 find /mnt/ServerA/log/ -newermt 20181001 -not -newermt 20181002 -type f -print0 | tar -c --files-from - | pv --rate-limit 2m | gzip > /tmp/archive.tar.gz  

打破這個,find 命令像以前一樣找到你的文件。–files-from 允許 tar 將文件讀入流(未壓縮)。pv 命令充當流式傳輸的中斷 - 2m 為 2 兆字節,因此略多於 20 兆位。然後將此 tar 流壓縮為 gzip 文件。

我在這裡註意到,很多額外的絨毛 arround 進入流式傳輸然後壓縮文件 - 這是因為我知道源是遠端系統。如果源是本地系統並且文件被寫入遠端系統,您可以使用更簡單的變體,使用 tar 將 gzip 壓縮到流,然後通過 pv 管道並將其寫出 - 但這會限制速度壓縮流。

引用自:https://serverfault.com/questions/991593