Kopiranje datoteka s brzim višedretvenim parsyncfp-om | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Kopiranje datoteka s brzim višenitnim parsyncfp-om

Uvod

parsyncfp je paralelni omotač oko rsynca koji ubrzava prijenos velikih zbirki datoteka pokretanjem više rsync procesa istovremeno. Svaki proces sinkronizira vlastiti skup datoteka, pa se dostupna propusnost i resursi CPU-a koriste učinkovitije nego kod jednog rsync toka.

Ovaj vodič objašnjava kada je parsyncfp koristan, kako ga instalirati i kako izvršiti osnovni prijenos između dva poslužitelja.

Warning

Paralelno kopiranje ubrzava prijenos samo na brzim diskovima i uz stabilnu mrežu. Na sporim diskovima ili mrežnim datotečnim sustavima (NFS, SMB, FUSE), povećavanje broja paralelnih procesa često ne donosi povećanje brzine, a umjesto toga može dodatno opteretiti izvor, odredište ili vezu između njih. Započnite s malim brojem procesa, izmjerite rezultat i povećajte broj samo ako diskovi i mreža mogu pratiti opterećenje.

Kako parsyncfp radi

parsyncfp koristi uslužni program fpart za podjelu izvornog stabla datoteka na dijelove približno jednake veličine, a zatim paralelno pokreće više rsync procesa, po jedan za svaki dio. Budući da fpart dijeli stablo postupno, parsyncfp može započeti prijenos datoteka prije nego što se dovrši potpuno skeniranje izvornog stabla, što je važno za vrlo velika stabla direktorija.

Alat je potrebno instalirati samo na izvornom poslužitelju. rsync upravlja prijemnom stranom na uobičajen način.

Isti autor održava nasljednika pod nazivom parsyncfp2 (pfp2), koji uključuje ispravke grešaka i poboljšanja u odnosu na parsyncfp te dodatno podržava slanje s više izvornih hostova istovremeno. Za nove implementacije preporučuje se parsyncfp2. Ovaj vodič obrađuje klasični parsyncfp; sintaksa naredbi za pfp2 uglavnom je kompatibilna.

Kada je parsyncfp koristan

parsyncfp daje najveće poboljšanje kada:

  • izvor sadrži milijune malih datoteka, pri čemu rsync većinu vremena troši na operacije s metapodacima, a ne na stvarni prijenos podataka;
  • i izvor i odredište koriste brzu pohranu (NVMe, SSD ili dobro podešen RAID);
  • mreža između izvora i odredišta je brza i stabilna (1 Gbit/s ili više, uz mali gubitak paketa);
  • jedan rsync proces je ograničen CPU-om ili propusnošću jednog toka, a ne diskom ili mrežnom vezom.

Za male direktorije, spore rotirajuće diskove ili zasićenu mrežu obični rsync obično je dovoljan.

Direktorij ~/.parsyncfp

parsyncfp na izvornom poslužitelju stvara direktorij predmemorije pod nazivom ~/.parsyncfp. Unutar njega nalazi se poddirektorij fpcache, koji sadrži zapisnik fparta, PID datoteke pokrenutih rsync procesa i datoteke dijelova koje navode koje putanje svaki rsync treba kopirati. Datoteke zapisnika označene su datumom i vremenom te se ne prepisuju između pokretanja, pa se prethodna pokretanja mogu naknadno pregledati.

Ako želite istovremeno pokrenuti više instanci parsyncfpa, svakoj instanci odredite zasebnu lokaciju predmemorije pomoću opcije --altcache. parsyncfp pri pokretanju otkriva druge pokrenute instance i upozorava na njih, tako da se slučajna preklapanja pokretanja mogu rano uočiti.

Instalacija ovisnosti

Sam parsyncfp oslanja se na rsync (za prijenos) i fpart (za podjelu izvornog stabla na dijelove). Instalirajte oba paketa na izvornom poslužitelju.

Na Debianu i Ubuntuu:

apt-get install rsync fpart

Na RHEL-u, CentOS Streamu, AlmaLinuxu i Rocky Linuxu fpart nije dostupan u osnovnim repozitorijima. Najprije omogućite EPEL repozitorij, a zatim instalirajte oba paketa:

dnf install epel-release dnf install rsync fpart

Neki EPEL paketi ovise o paketima iz PowerTools ili CRB repozitorija, koji je prema zadanim postavkama onemogućen. Omogućite odgovarajući repozitorij za svoju verziju:

# RHEL/AlmaLinux/Rocky Linux 9 and newer dnf config-manager --set-enabled crb # RHEL/AlmaLinux/Rocky Linux 8 dnf config-manager --set-enabled powertools

Info

Ako vaša distribucija uopće ne isporučuje fpart (na primjer, RHEL 10 ili njegove izvedenice u vrijeme pisanja ovog vodiča) ili ne želite koristiti EPEL, izgradite fpart iz izvornog koda. Službeni repozitorij je fpart GitHub repozitorij; README navodi mali broj ovisnosti potrebnih za izgradnju (C kompajler, make i standardne zaglavne datoteke C biblioteke).

Instalacija parsyncfpa

parsyncfp je jedna Perl skripta smještena na GitHubu. Preuzmite je, učinite izvršnom i premjestite u direktorij koji se nalazi u vašem PATH-u kako biste je mogli pozvati bez navođenja pune putanje:

wget https://raw.githubusercontent.com/hjmangalam/parsyncfp/master/parsy ncfp chmod +x parsyncfp sudo mv parsyncfp /usr/local/bin/

Provjerite radi li skripta:

parsyncfp --help

Ako se prikaže zaslon pomoći, parsyncfp je spreman za korištenje.

Postavljanje SSH pristupa odredištu

parsyncfp pokreće rsync putem SSH-a, stoga se izvorni poslužitelj mora moći prijaviti na odredišni poslužitelj bez lozinke. Generirajte par ključeva na izvornom poslužitelju (ako već ne postoji) i kopirajte javni ključ na odredište:

ssh-keygen ssh-copy-id user@target_host

Zamijenite user@target_host korisničkim imenom te IP adresom ili nazivom hosta vašeg odredišnog poslužitelja. Nakon ovog koraka naredba u nastavku trebala bi se povezati bez traženja lozinke:

ssh user@target_host

Pokretanje prijenosa

Tipična parsyncfp naredba izgleda ovako:

parsyncfp --NP=8 --altcache=/dir/local/tmp --startdir=/dir/local/ www/ [email protected]:/var/dir/

Ova naredba pokreće 8 rsync procesa, koristi /dir/local/tmp kao direktorij predmemorije i kopira sadržaj direktorija /dir/local/www u /var/dir/ na odredišnom hostu 192.168.67.1.

Info

Obratite pozornost na završnu kosu crtu u izvornom argumentu: www/ kopira sadržaj direktorija www u odredište (kao u gornjem primjeru), dok www (bez kose crte) kopira sam direktorij www, stvarajući /var/dir/www/ na odredištu. To je isto ponašanje kao kod običnog rsynca.

Glavni parametri naredbe

  • --NP postavlja broj paralelnih rsync procesa. Razumna početna vrijednost je 4 do 8; povećavajte broj postupno i samo ako diskovi i mreža još nisu zasićeni. Postavljanje vrijednosti --NP na broj CPU jezgri samo po sebi rijetko je pravi izbor.
  • --altcache određuje alternativni direktorij predmemorije. Koristan je kada istodobno pokrećete više instanci parsyncfpa ili kada se zadana lokacija nalazi na sporoj pohrani. Izbjegavajte lokaciju na tmpfs-u (kao što je /tmp na mnogim distribucijama), jer popisi dijelova za vrlo velika izvorna stabla mogu postati veliki i zauzeti značajnu količinu RAM-a.
  • --startdir postavlja radni direktorij koji se koristi kao osnova za izvorne putanje koje slijede.
  • Argumenti nakon --startdir predstavljaju izvorne direktorije koje treba kopirati (jedan ili više njih, odvojenih razmacima), nakon čega slijedi odredište u rsync formatu user@host:/path/.

Za potpuni popis opcija pokrenite parsyncfp --help ili pogledajte dokumentaciju projekta.

Korisne dodatne opcije

Nakon što osnovni prijenos proradi, za produkcijske prijenose vrijedi poznavati nekoliko opcija:

  • --maxbw=500000 ograničava ukupnu propusnost koju koriste svi rsync procesi, u KB/s. Korisno kada se veza dijeli s drugim uslugama.
  • --maxload=12 zaustavlja pokretanje novih rsync procesa kada prosječno opterećenje sustava poraste iznad zadane vrijednosti. Korisno na opterećenim izvornim poslužiteljima, ali prije upotrebe pročitajte upozorenje u nastavku.
  • --chunksize=5G određuje veličinu svakog fpart dijela. Veći dijelovi smanjuju dodatne troškove po dijelu kod prijenosa s mnogo malih datoteka; manji dijelovi poboljšavaju paralelizam kod prijenosa nekoliko vrlo velikih datoteka.
  • --rsyncopts="-a -s -x" omogućuje prosljeđivanje dodatnih opcija izravno osnovnim rsync procesima. Koristite ga za uključivanje kompresije (-z), postavljanje prilagođene veličine bloka ili druge optimizacije rsynca. Nemojte prosljeđivati --delete putem --rsyncopts; razlog je objašnjen u odjeljku „Ograničenja“ u nastavku.
  • --verbose=2 povećava razinu detalja zapisivanja, što olakšava otklanjanje problema tijekom prvih pokretanja.

Warning

Autor projekta dokumentirao je poznati problem s opcijom --maxload: kada parsyncfp prolazi kroz ponovljene cikluse obustave i nastavka rada, neke izvorne datoteke možda neće biti prenesene na odredište. Ako koristite --maxload, postavite prag dovoljno visoko da se obustave nikada ne aktiviraju ili nakon završetka prijenosa provjerite rezultat zasebnom provjerom dosljednosti.

Ograničenja

Čak i na odgovarajućem hardveru, parsyncfp ima određene nedostatke koje treba uzeti u obzir prije povećavanja broja procesa:

  • parsyncfp ne podržava sigurno korištenje rsync opcije --delete. Svaki paralelni rsync proces vidi samo svoj dio izvora, pa će, ako se proslijedi --delete, svaki proces pokušati obrisati na odredištu datoteke koje nisu u njegovom dijelu, iako te datoteke pripadaju drugim dijelovima. To može izbrisati velike dijelove odredišta. Kada vam je potrebno ponašanje opcije --delete, koristite obični rsync (ili zaseban postupak čišćenja).
  • parsyncfp ne održava globalni redoslijed datoteka između paralelnih rsync procesa, pa redoslijed kojim se datoteke pojavljuju na odredištu nije predvidljiv. To je važno samo za radne procese koji tijekom samog kopiranja ovise o vremenskim oznakama datoteka ili redoslijedu popisa direktorija.
  • Na HDD poljima mnogi paralelni rsync procesi pretvaraju obrazac sekvencijalnog čitanja u gotovo nasumični, što može biti sporije od jednog rsync procesa. SSD i NVMe diskovi mnogo su manje pogođeni.
  • Na datotečnim sustavima s vrlo velikim brojem malih datoteka dodatni troškovi metapodataka po datoteci mogu dominirati vremenom prijenosa. Paralelizam pomaže do određene granice, nakon čega se povećanje performansi zaustavlja.
  • Svaki rsync proces otvara vlastitu SSH vezu prema odredištu, pa visoke vrijednosti --NP višestruko povećavaju dodatne troškove uspostavljanja veza. Na WAN vezama s gubitkom paketa ili visokom latencijom to može pogoršati zagušenje umjesto poboljšati performanse. U tom slučaju manji broj procesa uz pravilno podešen rsync (kompresija, veća veličina bloka) često daje bolje rezultate od velikog broja paralelnih procesa.

Vidi također

Ako se parsyncfp pokaže složenijim nego što vam je potrebno, paket fpart također sadrži fpsync, jednostavniji omotač za paralelni rsync istog autora. Koristi isti princip podjele na dijelove, ali s manje opcija i često je dovoljan za jednokratne prijenose.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA