Benchmark transferu plików: SSH vs rsync vs NFS

Aby sprawdzić, która metoda transferu danych w Linux jest najszybsza, przeprowadziłem praktyczne testy dla kilku popularnych narzędzi:

  • SSH (scp / sftp / rclone)
  • rsync przez SSH
  • rsync bez SSH (daemon)
  • NFS

Ten wpis jest kontynuwacją n.t. przyspieszenia transferu plików przez SSH lub RCLONE w Linux.

Środowisko testowe

Sprzęt:

  • klient: ARM (Allwinner A20, 2x1GHz)
  • serwer: x86_64 (Linux)
  • sieć: 1 Gbit LAN

Plik testowy:

dd if=/dev/zero of=test_10GB.bin bs=1M count=10240

Info: ~10 GB danych

1. SSH (scp / rclone domyślny)

scp test_10GB.bin user@host:/tmp/

lub:

rclone copy test_10GB.bin remote:/tmp/

Wynik:

  • ~15–25 Mbit/s
  • CPU: 100% (1 rdzeń)

Wnioski:

  • bardzo wolne na słabym CPU
  • bottleneck = szyfrowanie

2. SSH z optymalizacją (chacha20)

Konfiguracja:

Host host
Ciphers chacha20-poly1305@openssh.com

Test:

scp test_10GB.bin user@host:/tmp/

Wynik:

  • ~25–40 Mbit/s
  • CPU: nadal wysokie, ale bardziej efektywne

Wnioski:

  • szybciej niż domyślne SSH
  • nadal ograniczone CPU

3. rsync przez SSH

rsync -avP test_10GB.bin user@host:/tmp/

Wynik:

  • ~20–35 Mbit/s

Wnioski:

  • lepsze zarządzanie transferem
  • wznawianie (resume)
  • nadal ograniczenie SSH

4. rsync daemon (bez SSH)

Na serwerze:

# /etc/rsyncd.conf
[test]
path = /tmp
read only = no

Start:

rsync --daemon

Klient:

rsync -av test_10GB.bin rsync://host/test/

Wynik:

  • ~80–100 Mbit/s

Wnioski:

  • ogromny wzrost wydajności
  • brak szyfrowania = niski CPU
  • brak bezpieczeństwa (LAN only!)

5. NFS (najlepsza wydajność)

Na serwerze:

apt install nfs-kernel-server
# /etc/exports
/tmp 192.168.1.0/24(rw,sync,no_subtree_check)
exportfs -a

Na kliencie:

mount -t nfs host:/tmp /mnt
cp test_10GB.bin /mnt/

Wynik:

  • ~90–110 Mbit/s

Wnioski:

  • maksymalna wydajność
  • minimalne użycie CPU
  • tylko sieci zaufane

Podsumowanie wyników

MetodaPrędkośćCPUResumeBezpieczeństwo
SSH (default)15–25 Mbit/s🔴 wysokie
SSH (chacha20)25–40 Mbit/s🔴 wysokie
rsync + SSH20–35 Mbit/s🔴 wysokie
rsync daemon80–100 Mbit/s🟢 niskie
NFS90–110 Mbit/s🟢 niskie

Wnioski praktyczne

Jeśli używasz SSH:

  • zmień cipher
  • ogranicz równoległość
  • licz się z limitem CPU

Jeśli jesteś w LAN:

Info: użyj NFS lub rsync daemon

Zysk:

  • nawet 3–5× szybciej

Jeśli potrzebujesz bezpieczeństwa:

Info: rsync przez SSH = najlepszy kompromis

Kiedy używać czego?

ScenariuszNajlepsze rozwiązanie
Internet / VPSSSH + optymalizacja
LAN + duże plikiNFS
LAN + niezawodnośćrsync daemon
duże pliki + resumersync

About the author

Autor "BIELI" to zapalony entuzjasta otwartego oprogramowania, który dzieli się swoją pasją na blogu poznajlinuxa.pl. Jego wpisy są skarbnicą wiedzy na temat Linuxa, programowania oraz najnowszych trendów w świecie technologii. Autor "BIELI" wierzy w siłę społeczności Open Source i zawsze stara się inspirować swoich czytelników do eksplorowania i eksperymentowania z kodem.