nfs 伺服器海量小檔案傳輸效率慢的問題

Linux mrsupns • at 2021-01-14 12:06:10 • 3 Views

現在有一臺 nfs 伺服器,掛載到一臺業務伺服器,有海量的小檔案需要拷貝到 nfs 伺服器上,經過測試發現:單個大檔案傳輸速度很快,但是海量的小檔案傳輸就很慢了。新增掛載引數 rsize=8192,wsize=8192,發現效率還是很慢;這個問題如何優化?

Total: 24
  • Osk 2021-01-13 13:27:20
    小檔案估計無解,nfs smb 9p 等似乎都快不起來
  • matrix67 2021-01-13 13:27:20
    小檔案,tcp 的慢啟動,再加上建立檔案啥的都需要網路 io 。

    tar 打包壓縮,傳了再解壓。
  • reus 2021-01-13 13:27:20
    開多執行緒併發傳
  • mrsupns 2021-01-13 13:27:20
    @matrix67 不能 tar
  • Jirajine 2021-01-13 13:28:20
    tar 打包,輸出到 stdout,走管道。
    另一端 tar 從 stdin 解包,釋放到檔案系統。
    中間可以通過 ssh 、netcat 等方式連線。
  • d0m2o08 2021-01-13 13:28:20
    換物件儲存🤣
  • Songxwn 2021-01-13 13:29:20
    全快閃記憶體
  • MasterMonkey 2021-01-13 13:29:20
    @Jirajine 贊同
  • nightwitch 2021-01-13 13:30:20
    tar 唄,不能 tar 總得有個原因吧。
  • GGGG430 2021-01-13 14:27:20
    @Jirajine 老哥詳細說說怎麼實現呢
  • CallMeReznov 2021-01-13 14:28:20
    物件儲存
  • zent00 2021-01-13 14:28:20
    tar cvf - src_path | tar xvf - -C nfs_path
  • zent00 2021-01-13 14:30:20
    抱歉,剛才路上手機匆忙回覆,沒有細想,上一條給出的方法還是走 NFS 進行寫入操作,沒有意義。

    如果你走 SSH 的話,這樣操作:
    tar cvf - src_path | ssh [email protected]_host "tar xvf - -C dst_path"
  • mrsupns 2021-01-13 14:31:20
    @zent00 我們這邊是要通過 nfs 共享檔案,有沒有啥引數可以優化一下的?
  • dorothyREN 2021-01-13 15:23:47
    基本上 無解
  • willis 2021-01-13 16:27:47
    如果只是一次性傳輸,用 rsync 傳吧,支援斷點續傳
  • zk8802 2021-01-13 16:30:47
    有兩個點可以注意一下:

    - 儲存伺服器不要用 ZFS 。NFS on ZFS 儲存小檔案時很慢。
    - 用 nfsstat 和 nfsiostat 看看有沒有效能上的問題。有時候瓶頸是網路 IO,有時候瓶頸是儲存伺服器的效能。
    - 試試 pNFS 。

    但是歸根結底,在 NFS 上儲存小檔案效能低的根源是 NFS 的設計本身。如果 NFS RPC 可以全部並行的話,儲存小檔案的效能會提高很多。
  • mrsupns 2021-01-13 17:30:48
    不只是傳輸的問題,我們程式有依賴,需要 find 某目錄下的檔案並迴圈檔名,然後做處理。因為是在 nfs 伺服器上,所以迴圈的時候特別慢
  • zlowly 2021-01-13 17:27:48
    如果你的 nfs 可以用 v3 協議的話可以開啟 async,不過看你 size 只設到 8k,是不是隻能用 v2 協議?
    另外對本身存放海量檔案的伺服器還可以調整一下檔案系統引數例如 ext4 裡設定 noatime 等。
  • mrsupns 2021-01-13 18:30:48
    @zlowly 如果是 v3 的應該要給多少 K
  • zlowly 2021-01-13 23:20:16
    @mrsupns 對於 v3 和 v4 一般預設就是 32k,網路穩定且 tcp 傳輸的話你可以測試下調高到 64k 。
  • snip 2021-01-15 10:12:00
    用 rsync 試試呢?
  • mrsupns 2021-01-15 15:10:54
    @snip 不行呢
Add a reply
For Commenting you need to Login. If you dont have a Account you need to Register.