Hızlı çoklu iş parçacıklı parsyncfp ile dosya kopyalama | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

Hızlı çoklu iş parçacıklı parsyncfp ile dosya kopyalama

Giriş

parsyncfp, aynı anda birden fazla rsync işlemi çalıştırarak büyük dosya koleksiyonlarının aktarımını hızlandıran, rsync etrafında paralel bir sarmalayıcıdır. Her işlem kendi dosya parçasını senkronize eder, böylece mevcut bant genişliği ve CPU, tek bir rsync akışına göre daha verimli kullanılır.

Bu kılavuz, parsyncfp'nin ne zaman yararlı olduğunu, nasıl kurulacağını ve iki sunucu arasında temel bir aktarımın nasıl çalıştırılacağını anlatır.

Warning

Paralel kopyalama yalnızca hızlı disklerde ve kararlı bir ağda aktarımları hızlandırır. Yavaş disklerde veya ağ üzerinden bağlanan dosya sistemlerinde (NFS, SMB, FUSE) paralel işlem sayısını artırmak çoğu zaman hız kazancı sağlamaz ve bunun yerine kaynağa, hedefe veya aralarındaki bağlantıya ek yük bindirebilir. Az sayıda işlemle başlayın, sonucu ölçün ve sayıyı yalnızca diskler ve ağ ayak uydurabiliyorsa artırın.

parsyncfp nasıl çalışır

parsyncfp, kaynak dosya ağacını yaklaşık olarak eşit boyutta parçalara bölmek için fpart yardımcı programını kullanır, ardından her parça için bir tane olmak üzere birden fazla rsync işlemini paralel olarak başlatır. fpart ağacı kademeli olarak böldüğünden, parsyncfp kaynak ağacın tam taraması tamamlanmadan önce dosyaları aktarmaya başlayabilir; bu da çok büyük dizin ağaçları için önemlidir.

Aracın yalnızca kaynak sunucuya kurulması gerekir. rsync alıcı tarafı her zamanki gibi yönetir.

Aynı yazar, parsyncfp'ye göre hata düzeltmeleri ve iyileştirmeler içeren ve ayrıca birden fazla kaynak ana bilgisayardan aynı anda göndermeyi destekleyen parsyncfp2 (pfp2) adlı bir halefi sürdürmektedir. Yeni dağıtımlar için parsyncfp2 önerilen seçimdir. Bu kılavuz klasik parsyncfp'yi kapsar; pfp2 komut sözdizimi büyük ölçüde uyumludur.

parsyncfp ne zaman yararlıdır

parsyncfp en büyük kazancı şu durumlarda sağlar:

  • kaynak, rsync'in zamanının çoğunu gerçek veri aktarımı yerine meta veri işlemlerine harcadığı milyonlarca küçük dosya içeriyorsa;
  • hem kaynak hem de hedef hızlı depolama (NVMe, SSD veya iyi yapılandırılmış bir RAID) ile destekleniyorsa;
  • kaynak ve hedef arasındaki ağ hızlı ve kararlıysa (1 Gbps veya daha fazla, düşük paket kaybı);
  • tek bir rsync işlemi disk veya bağlantı tarafından değil, CPU veya akış başına verimle sınırlıysa.

Küçük dizinler, yavaş döner diskler veya doygun bir ağ için genellikle düz rsync yeterlidir.

~/.parsyncfp dizini

parsyncfp, kaynak sunucuda ~/.parsyncfp adlı bir önbellek dizini oluşturur. İçinde, fpart günlüğünü, çalışan rsync işlemlerinin PID dosyalarını ve her rsync'in hangi yolları kopyalayacağını listeleyen parça dosyalarını içeren fpcache alt dizinini bulacaksınız. Günlük dosyaları tarih damgalıdır ve çalıştırmalar arasında üzerine yazılmaz, böylece önceki çalıştırmalar daha sonra incelenebilir.

Aynı anda birden fazla parsyncfp örneği çalıştırmak isterseniz, --altcache seçeneğiyle her birine ayrı bir önbellek konumu belirtin. parsyncfp, başlangıçta çalışan diğer örnekleri algılar ve onlar hakkında uyarır, böylece kazara çakışan çalıştırmalar erken görünür hale gelir.

Bağımlılıkların kurulumu

parsyncfp'nin kendisi rsync (taşıma) ve fpart'a (kaynak ağacını parçalara bölmek için) dayanır. Her ikisini de kaynak sunucuya kurun.

Debian ve Ubuntu'da:

apt-get install rsync fpart

RHEL, CentOS Stream, AlmaLinux ve Rocky Linux'ta fpart temel depolarda bulunmaz. Önce EPEL deposunu etkinleştirin, ardından her iki paketi de kurun:

dnf install epel-release dnf install rsync fpart

Bazı EPEL paketleri, varsayılan olarak devre dışı bırakılan PowerTools veya CRB deposundaki paketlere bağlıdır. Sürümünüz için doğru olanı etkinleştirin:

# RHEL/AlmaLinux/Rocky Linux 9 ve daha yenisi dnf config-manager --set-enabled crb # RHEL/AlmaLinux/Rocky Linux 8 dnf config-manager --set-enabled powertools

Info

Dağıtımınız fpart'ı hiç sağlamıyorsa (örneğin, bu yazının yazıldığı sırada RHEL 10 veya yeniden derlemeleri) veya EPEL kullanmamayı tercih ediyorsanız, fpart'ı kaynaktan derleyin. Resmi depo GitHub'daki fpart deposudur; README, küçük bir derleme bağımlılığı kümesini listeler (bir C derleyicisi, make ve standart C kitaplık başlıkları).

parsyncfp kurulumu

parsyncfp, GitHub'da barındırılan tek bir Perl betiğidir. İndirin, çalıştırılabilir hale getirin ve tam yol yazmadan çağırabilmek için PATH'inizdeki bir dizine taşıyın:

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

Betiğin çalıştığını doğrulayın:

parsyncfp --help

Yardım ekranı görünürse, parsyncfp kullanıma hazırdır.

Hedefe SSH erişiminin ayarlanması

parsyncfp, rsync'i SSH üzerinden çalıştırır, bu nedenle kaynak sunucunun hedefe parolasız giriş yapabilmesi gerekir. Kaynakta bir anahtar çifti oluşturun (henüz yoksa) ve genel anahtarı hedefe kopyalayın:

ssh-keygen ssh-copy-id user@target_host

user@target_host'u kullanıcı adı ve hedef sunucunuzun IP'si veya ana bilgisayar adıyla değiştirin. Bu adımdan sonra, aşağıdaki komut parola istemeden bağlanmalıdır:

ssh user@target_host

Bir aktarımın çalıştırılması

Tipik bir parsyncfp komutu şöyle görünür:

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

Bu komut 8 rsync işlemi başlatır, /dir/local/tmp'yi önbellek dizini olarak kullanır ve /dir/local/www içeriğini hedef ana bilgisayar 192.168.67.1 üzerindeki /var/dir/'e kopyalar.

Info

Kaynak argümanındaki sondaki eğik çizgiye dikkat edin: www/ www dizininin içeriğini hedefe kopyalar (yukarıdaki örnekteki gibi), www (eğik çizgi olmadan) ise www dizininin kendisini kopyalar ve hedefte /var/dir/www/ oluşturur. Bu, düz rsync ile aynı davranıştır.

Temel komut parametreleri

  • --NP paralel rsync işlemlerinin sayısını ayarlar. Makul bir başlangıç noktası 4 ila 8'dir; sayıyı kademeli olarak ve yalnızca diskler ve ağ henüz doygun değilse artırın. --NP'yi CPU çekirdeği sayısına eşitlemek tek başına nadiren doğru seçimdir.
  • --altcache alternatif bir önbellek dizini belirtir. Aynı anda birden fazla parsyncfp örneği çalıştırdığınızda veya varsayılan konum yavaş depolamada olduğunda yararlıdır. Çok büyük kaynak ağaçları için parça listeleri büyüyebileceğinden ve bunların RAM'i tüketmesini istemeyeceğinizden, tmpfs tabanlı bir konuma (birçok dağıtımdaki /tmp gibi) işaret etmekten kaçının.
  • --startdir kendisinden sonra gelen kaynak yolları için temel olarak kullanılan çalışma dizinini ayarlar.

--startdir'den sonraki argümanlar kopyalanacak kaynak dizinlerdir (bir veya birkaç, boşlukla ayrılmış), ardından user@host:/path/ biçiminde rsync tarzı hedef gelir.

Seçeneklerin tam listesi için parsyncfp --help çalıştırın veya upstream belgelerine bakın.

Yararlı ek seçenekler

Temel aktarım çalıştıktan sonra, üretim çalıştırmaları için bilinmeye değer birkaç seçenek vardır:

  • --maxbw=500000 tüm rsync işlemleri tarafından kullanılan toplam bant genişliğini KB/s cinsinden sınırlar. Bağlantı diğer hizmetlerle paylaşıldığında yararlıdır.
  • --maxload=12 sistem yük ortalaması verilen değerin üzerine çıktığında yeni rsync işlemlerinin başlatılmasını duraklatır. Yoğun kaynak sunucularında yararlıdır, ancak kullanmadan önce aşağıdaki uyarıyı okuyun.
  • --chunksize=5G her fpart parçasının ne kadar büyük olacağını kontrol eder. Daha büyük parçalar, çok sayıda küçük dosya içeren aktarımlarda parça başına ek yükü azaltır; daha küçük parçalar, birkaç çok büyük dosya içeren aktarımlarda paralelliği artırır.
  • --rsyncopts="-a -s -x" ek bayrakları doğrudan alttaki rsync işlemlerine geçirmenize olanak tanır. Sıkıştırmayı (-z) etkinleştirmek, özel bir blok boyutu ayarlamak veya diğer rsync ayarlamalarını uygulamak için kullanın. --delete'i --rsyncopts aracılığıyla geçirmeyin; bunun neden güvenli olmadığı için aşağıdaki "Sınırlamalar" bölümüne bakın.
  • --verbose=2 günlük ayrıntı düzeyini artırır, bu da ilk çalıştırmalarda sorun gidermeyi kolaylaştırır.

Warning

Upstream yazar, --maxload ile bilinen bir sorunu belgeledi: parsyncfp tekrarlayan askıya alma ve devam ettirme döngülerinden geçtiğinde, bazı kaynak dosyalar hedefe aktarılmayabilir. --maxload kullanıyorsanız, eşiği askıya almaların asla tetiklenmeyeceği kadar yüksek ayarlayın veya aktarım tamamlandıktan sonra sonucu ayrı bir tutarlılık kontrolüyle doğrulayın.

Sınırlamalar

Uygun donanımda bile, parsyncfp'nin işlem sayısını artırmadan önce bilinmeye değer ödünleşimleri vardır:

  • parsyncfp, rsync'in --delete seçeneğini güvenli bir şekilde desteklemez. Her paralel rsync işlemi yalnızca kaynağın kendi parçasını görür, bu nedenle --delete geçirilirse, her işlem hedefte kendi parçasında olmayan dosyaları, yani meşru olarak diğer parçalara ait dosyaları silmeye çalışır. Bu, hedefin büyük kısımlarını silebilir. --delete anlamına ihtiyacınız olduğunda düz rsync (veya ayrı bir temizleme geçişi) kullanın.
  • parsyncfp, paralel rsync işlemleri arasında dosyaların genel sıralamasını korumaz, bu nedenle dosyaların hedefte göründüğü sıra öngörülebilir değildir. Bu yalnızca, kopyalama sırasında dosya zaman damgalarına veya dizin listeleme sırasına bağlı iş akışları için önemlidir.
  • HDD dizilerinde, çok sayıda paralel rsync işlemi, sıralı bir okuma deseni olacak şeyi neredeyse rastgele bir desene dönüştürür ki bu, tek bir rsync'ten daha yavaş olabilir. SSD ve NVMe sürücüleri çok daha az etkilenir.
  • Çok sayıda küçük dosya içeren dosya sistemlerinde, dosya başına meta veri ek yükü aktarım süresine hakim olabilir. Paralellik bir noktaya kadar yardımcı olur, sonra platoya ulaşır.
  • Her rsync işlemi hedefe kendi SSH bağlantısını açar, bu nedenle yüksek --NP değerleri bağlantı kurulum ek yükünü çoğaltır. Paket kaybı veya yüksek gecikme olan WAN bağlantılarında, bu durum tıkanıklığı iyileştirmek yerine kötüleştirebilir. Bu durumda, ayarlanmış bir rsync ile daha az işlem (sıkıştırma, daha büyük blok boyutu) genellikle çok sayıda paralel işlemden daha iyi performans gösterir.

Ayrıca bakınız

parsyncfp ihtiyacınızdan daha ağır geliyorsa, fpart paketi aynı yazardan daha basit bir paralel rsync sarmalayıcısı olan fpsync'i de içerir. Aynı parçalama fikrini kullanır ancak daha az seçenekle ve tek seferlik aktarımlar için genellikle yeterlidir.

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