使用壓縮功能減少主機之間SCP時候的頻寬佔用

zhang41082發表於2019-01-14
SCP是使用SSH協議進行主機之間資料傳輸的常用命令,但有時候如果主機不在同一個機房,那麼這個資料複製佔用的頻寬就是要好好考慮的問題了,SCP提 供了-l引數來限制頻寬的佔用,但限制頻寬的同時卻增加了複製需要的時間。一個比較好的辦法就是在主機端先進行資料壓縮,然後SCP過去後再解壓。好在 SSH和SCP已經為我們準備好了這些解決問題的辦法。[@more@]



預設情況下的SSH是不支援壓縮的資料傳輸的(不同版本的預設值可能不一樣,可以透過man sshd_config來查詢文件進行確認),要支援壓縮的資料傳輸,那麼首先要修改SSH的配置檔案(一般位於/etc/ssh/sshd_config),修改Compression選項為yes,然後重啟SSHD服務。Compression提供了三個選項,分別是delayed/no/yes,第一個表示使用者驗證的時候不壓縮,只是在資料傳輸過程中進行壓縮;第二個表示不壓縮;第三個表示從頭到尾都壓縮。修改完這些後,在進行SCP的時候需要新增-C引數來開啟壓縮功能。

來看下測試的結果:
首先DD建立一個檔案,然後分別使用普通和壓縮來進行傳輸,網路上的流量分別如下(因為是本機SCP本機的測試,所以流量在lo口上):
05:11:33 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
05:11:34 PM lo 3360.40 3360.40 26106605.94 26106605.94 0.00 0.00 0.00

05:12:33 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
05:12:34 PM lo 427.27 427.27 190298.99 190298.99 0.00 0.00 0.00

從上面可以看到明顯的不使用壓縮的時候,傳輸的速度就是網路卡上顯示的流量的速度;使用壓縮的時候,傳輸的速度有所提升,但是網路卡上的流量只有之前的1%(這麼大的壓縮比率是因為DD產生的資料塊內容都是相同的,壓縮比比較高)。使用ORACLE的資料檔案測試的時候,壓縮比率也有10倍以上,大大減少了頻寬的佔用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-1031609/,如需轉載,請註明出處,否則將追究法律責任。

相關文章