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, rsync için geliştirilmiş bir paralel sarmalayıcıdır ve aynı anda birden fazla rsync işlemi çalıştırarak büyük dosya koleksiyonlarının aktarımını hızlandırır. Her işlem kendi dosya grubunu senkronize eder; böylece kullanılabilir bant genişliği ve CPU, tek bir rsync akışına kıyasla daha verimli kullanılır.

Bu kılavuzda parsyncfp'nin ne zaman yararlı olduğu, nasıl kurulacağı ve iki sunucu arasında temel bir aktarımın nasıl gerçekleştirileceği açıklanmaktadır.

Warning

Paralel kopyalama yalnızca hızlı diskler ve kararlı bir ağ bağlantısı kullanıldığında aktarımı 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 artışı sağlamaz ve bunun yerine kaynak sunucuya, hedef sunucuya veya aralarındaki bağlantıya ek yük bindirebilir. Küçük bir işlem sayısıyla başlayın, sonucu ölçün ve sayıyı yalnızca disklerin ve ağın bu yükü kaldırabildiğinden eminseniz artırın.

parsyncfp nasıl çalışır

parsyncfp, kaynak dosya ağacını yaklaşık olarak eşit boyutlu parçalara ayırmak için fpart yardımcı programını kullanır ve ardından her parça için bir tane olmak üzere birden fazla rsync işlemini paralel olarak başlatır. fpart dosya ağacını aşamalı olarak böldüğü için parsyncfp, kaynak dosya ağacının tamamının taranması tamamlanmadan önce dosyaları aktarmaya başlayabilir. Bu, özellikle çok büyük dizin ağaçlarında önemlidir.

Aracın yalnızca kaynak sunucuya kurulması gerekir. rsync, alıcı tarafta her zamanki gibi çalışır.

Aynı geliştirici, parsyncfp'nin halefi olan parsyncfp2'yi (pfp2) de geliştirmektedir. Bu sürüm, parsyncfp'ye kıyasla hata düzeltmeleri ve iyileştirmeler içerir ve ayrıca aynı anda birden fazla kaynak ana bilgisayardan gönderim yapılmasını destekler. Yeni kurulumlar için parsyncfp2 önerilen seçenektir. Bu kılavuz klasik parsyncfp'yi ele almaktadır; pfp2 komut söz dizimi büyük ölçüde uyumludur.

parsyncfp ne zaman kullanışlıdır

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

  • kaynakta milyonlarca küçük dosya bulunuyorsa ve rsync zamanının çoğunu gerçek veri aktarımı yerine meta veri işlemlerine harcıyorsa;
  • hem kaynak hem de hedef hızlı depolama birimleri (NVMe, SSD veya iyi yapılandırılmış RAID) kullanıyorsa;
  • kaynak ile 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 tek akış başına aktarım hızı tarafından sınırlandırılıyorsa.

Küçük dizinler, yavaş mekanik diskler veya tamamen doymuş bir ağ için normal rsync genellikle yeterlidir.

~/.parsyncfp dizini

parsyncfp, kaynak sunucuda ~/.parsyncfp adlı bir önbellek dizini oluşturur. Bunun içinde fpart günlüğünü, çalışan rsync işlemlerinin PID dosyalarını ve her rsync işleminin kopyalaması gereken yolları listeleyen parça dosyalarını içeren fpcache alt dizini bulunur. Günlük dosyalarına tarih damgası eklenir ve farklı çalıştırmalar arasında üzerine yazılmaz; böylece önceki çalışmalar daha sonra incelenebilir.

Aynı anda birden fazla parsyncfp örneği çalıştırmak istiyorsanız, --altcache seçeneğiyle her birine ayrı bir önbellek konumu belirtin. parsyncfp başlangıçta çalışan diğer örnekleri algılar ve bunlar hakkında uyarı verir; böylece yanlışlıkla çakışan çalıştırmalar erkenden fark edilebilir.

Bağımlılıkların kurulması

parsyncfp, aktarım için rsync'e ve kaynak dosya ağacını parçalara ayırmak için fpart'a ihtiyaç duyar. 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 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üze uygun olanı etkinleştirin:

# 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

Dağıtımınız fpart paketini hiç sağlamıyorsa (örneğin, bu kılavuzun yazıldığı sırada RHEL 10 veya türevleri) veya EPEL kullanmamayı tercih ediyorsanız, fpart'ı kaynak kodundan derleyebilirsiniz. Resmi depo fpart GitHub repository adresindedir; README dosyasında gerekli derleme bağımlılıklarının kısa bir listesi (C derleyicisi, make ve standart C kütüphanesi başlık dosyaları) yer alır.

parsyncfp'nin kurulması

parsyncfp, GitHub üzerinde barındırılan tek bir Perl betiğidir. Betiği indirin, çalıştırılabilir hale getirin ve tam yolunu yazmadan çağırabilmek için PATH değişkeninizde bulunan bir dizine taşıyın:

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

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

parsyncfp --help

Yardım ekranı görüntüleniyorsa parsyncfp kullanıma hazırdır.

Hedef sunucuya SSH erişiminin ayarlanması

parsyncfp rsync'i SSH üzerinden çalıştırır. Bu nedenle kaynak sunucunun hedef sunucuya parola sormadan giriş yapabilmesi gerekir. Kaynak sunucuda bir anahtar çifti oluşturun (henüz mevcut değilse) ve genel anahtarı hedef sunucuya kopyalayın:

ssh-keygen ssh-copy-id user@target_host

user@target_host ifadesini hedef sunucunun kullanıcı adı ve IP adresi veya ana bilgisayar adıyla değiştirin. Bu adımdan sonra aşağıdaki komutun parola istemeden bağlanması gerekir:

ssh user@target_host

Aktarımın gerçekleştirilmesi

Tipik bir parsyncfp komutu şu şekildedir:

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

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

Info

Kaynak bağımsız değişkenindeki sondaki eğik çizgiye dikkat edin: www/, www dizininin içeriğini hedefe kopyalar (yukarıdaki örnekte olduğu gibi); www ise (eğik çizgi olmadan) www dizininin kendisini kopyalar ve hedefte /var/dir/www/ oluşturur. Bu davranış normal rsync ile aynıdır.

Temel komut parametreleri

  • --NP, paralel rsync işlemlerinin sayısını belirler. Makul bir başlangıç değeri 4 ila 8'dir; sayıyı kademeli olarak artırın ve yalnızca diskler ile ağ henüz tamamen doymamışsa artırmaya devam edin. --NP değerini 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ırırken veya varsayılan konum yavaş depolama üzerindeyken kullanışlıdır. tmpfs tarafından desteklenen bir konuma (örneğin birçok dağıtımda /tmp) işaret etmekten kaçının; çünkü çok büyük kaynak dosya ağaçlarında parça listeleri büyüyebilir ve RAM'in önemli bir bölümünü tüketebilir.
  • --startdir, ardından gelen kaynak yolları için temel olarak kullanılan çalışma dizinini belirler.
  • --startdir sonrasındaki bağımsız değişkenler, kopyalanacak kaynak dizinleridir (bir veya birden fazla, boşluklarla ayrılmış şekilde) ve bunları user@host:/path/ biçimindeki rsync tarzı hedef izler.

Tüm seçeneklerin listesini görmek için parsyncfp --help komutunu çalıştırın veya projenin üst akış belgelerine bakın.

Yararlı ek seçenekler

Temel aktarım çalıştıktan sonra, üretim ortamındaki çalıştırmalar için birkaç seçeneği bilmek faydalıdı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şılıyorsa kullanışlıdır.
  • --maxload=12, sistem yük ortalaması belirtilen değerin üzerine çıktığında yeni rsync işlemlerinin başlatılmasını duraklatır. Yoğun çalışan kaynak sunucularda yararlı olabilir, ancak kullanmadan önce aşağıdaki uyarıyı okuyun.
  • --chunksize=5G, her fpart parçasının boyutunu belirler. Daha büyük parçalar, çok sayıda küçük dosya içeren aktarımlarda parça başına düşen ek yükü azaltır; daha küçük parçalar ise birkaç çok büyük dosyanın aktarımında paralelliği artırır.
  • --rsyncopts="-a -s -x", temel rsync işlemlerine doğrudan ek seçenekler aktarmanızı sağlar. Sıkıştırmayı (-z) etkinleştirmek, özel bir blok boyutu ayarlamak veya diğer rsync ayarlarını uygulamak için kullanabilirsiniz. --delete seçeneğini --rsyncopts üzerinden aktarmayın; bunun neden güvenli olmadığı aşağıdaki Sınırlamalar bölümünde açıklanmaktadır.
  • --verbose=2, günlük kaydı ayrıntılarını artırır ve ilk çalıştırmalarda sorun gidermeyi kolaylaştırır.

Warning

Üst akış geliştiricisi --maxload ile ilgili bilinen bir sorunu belgelemiştir: parsyncfp art arda duraklatma ve devam ettirme döngülerinden geçtiğinde bazı kaynak dosyalar hedefe aktarılmayabilir. --maxload kullanıyorsanız, duraklatmaların hiçbir zaman tetiklenmeyeceği kadar yüksek bir eşik belirleyin veya aktarım tamamlandıktan sonra sonucu ayrı bir tutarlılık kontrolüyle doğrulayın.

Sınırlamalar

Uygun donanımlarda bile parsyncfp, işlem sayısını artırmadan önce bilinmesi gereken bazı ödünleşimlere sahiptir:

  • parsyncfp, rsync'in --delete seçeneğini güvenli bir şekilde desteklemez. Her paralel rsync işlemi kaynağın yalnızca kendi parçasını gördüğünden, --delete aktarılırsa her işlem hedefte kendi parçasında bulunmayan dosyaları silmeye çalışır. Ancak bu dosyalar diğer parçalara ait olabilir. Bu durum hedefteki verilerin büyük bir bölümünün silinmesine neden olabilir. --delete davranışına ihtiyacınız olduğunda normal rsync veya ayrı bir temizleme işlemi kullanın.
  • parsyncfp, paralel rsync işlemleri arasında dosyaların küresel sıralamasını korumaz. Bu nedenle dosyaların hedefte görünme sırası öngörülebilir değildir. Bu durum yalnızca kopyalama işlemi sırasında dosya zaman damgalarına veya dizin listeleme sırasına bağlı iş akışları için önemlidir.
  • HDD disk dizilerinde çok sayıda paralel rsync işlemi, normalde sıralı olan okuma düzenini neredeyse rastgele bir düzene dönüştürür. Bu, tek bir rsync işleminden daha yavaş olabilir. SSD ve NVMe sürücüleri bundan çok daha az etkilenir.
  • Çok büyük sayıda küçük dosya içeren dosya sistemlerinde dosya başına düşen meta veri yükü aktarım süresine hâkim olabilir. Paralellik belirli bir noktaya kadar yardımcı olur, ardından performans artışı durur.
  • Her rsync işlemi hedef sunucuya kendi SSH bağlantısını açar. Bu nedenle yüksek --NP değerleri bağlantı kurma yükünü artırır. Paket kaybı veya yüksek gecikme bulunan WAN bağlantılarında bu durum performansı artırmak yerine tıkanıklığı daha da kötüleştirebilir. Böyle durumlarda, ayarlanmış bir rsync ile (sıkıştırma, daha büyük blok boyutu) daha az sayıda işlem kullanmak, çok sayıda paralel işlem kullanmaktan genellikle daha iyi sonuç verir.

Ayrıca bakınız

parsyncfp ihtiyacınızdan daha kapsamlı görünüyorsa, fpart paketi aynı geliştirici tarafından hazırlanan daha basit bir paralel rsync sarmalayıcısı olan fpsync'i de içerir. Aynı parçalama yöntemini kullanır, ancak daha az seçenek sunar ve genellikle tek seferlik aktarımlar için 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