Küçük dosyaların yavaş NFS aktarım performansı


12

RAID 1 + 0 kullanarak bir HP ML370 G5, Smart Array P400, SAS disklerinde Openfiler 2.3 kullanıyorum.

Openfiler'ın web tabanlı yapılandırmasını kullanarak ext3 bölümünden bir NFS paylaşımı ayarladım ve paylaşımı başka bir ana bilgisayardan bağlamayı başardım. Her iki ana bilgisayar da özel gigabit bağlantısı kullanılarak bağlanır.

Kullanarak basit kıyaslama dd:

 $ dd if=/dev/zero of=outfile bs=1000 count=2000000
 2000000+0 records in
 2000000+0 records out
 2000000000 bytes (2.0 GB) copied, 34.4737 s, 58.0 MB/s

Orta aktarım hızına (58.0 MB / s) ulaşabileceğini görüyorum.

Ancak , toplam boyutu ~ 300 MB olan birçok küçük dosya ( .phpve .jpgdosya başına yaklaşık 1-4 kB) içeren bir dizini kopyalarsam , cpişlem yaklaşık 10 dakika içinde sona erer.

NFS, yukarıdaki gibi küçük dosya aktarımı için uygun değil mi? Veya ayarlanması gereken bazı parametreler var mı?


Bu sorunuza cevap veriyor mu? NFS zayıf yazma performansı
Aleksandr Dubinsky

Yanıtlar:


7

Birçok küçük dosyayı aktarmanın, tek bir büyük dosyayı aktarmadan her zaman daha yavaş olmasının birçok nedeni vardır. Bir okuma için, dosyaların diskin etrafına dağılması daha olasıdır, bu da onları almak için her yerde arama gerektirir. Evan'ın belirttiği gibi, NFS (veya bu konudaki herhangi bir dosya sistemi!) İle ilgili olan ve işleri de karmaşıklaştıran meta veriler de vardır.

NFS bağlantınıza rsizeve wsizeparametrelerinizi artırmayı deneyebilir ve bunun performansa biraz yardımcı olup olmayacağını görebilirsiniz. Ayrıca , NFS'nin minimum gecikme süresi için ayarlanmasıyla ilgili bu soruyu kontrol edin , çünkü birçok küçük dosya aktarımı durumunda yardımcı olacak çok sayıda yararlı tavsiyeye sahiptir.


8

Çok fazla NFS deneyimim yok, ancak diğer ağ dosya paylaşım protokolleriyle ilgili deneyimim, neredeyse evrensel olarak "çok sayıda küçük dosya" senaryosunda performansın düştüğünü söylüyor. Gidiş-dönüş gecikmesi yaşıyorsunuz ve gecikmenin eklediği büyük bir dosya grubunun üzerinde.


4

XFS gibi farklı bir dosya sistemiyle denediniz mi? Aşırı miktarda küçük iSCSI blok transferleri yaparken tüm sorunlarımı çözdü. Neden olduğu hakkında bir fikrim yok.

Ayrıca, iSCSI / NFS genellikle oldukça büyük veri çerçeveleri (jumbo çerçeveler vb.) İçin yapılandırılır, küçük dosyaları birer birer kopyalarsanız size zarar verebilir. Belki tar'ing ve sonra transfer size yardımcı olacaktır.


1
Evet, testim XFS kullanarak ext3'ten biraz daha iyileşme gösterdi (~ 8 dakikaya karşı ~ 14 dakika).
Arie K

1
Biraz? Oldukça büyük bir gelişme olduğunu söyleyebilirim :)
pauska

1

TCP bağlantısı kullandığınızdan emin olun ( mount -t nfs -o tcp host: / mount / target ). Modern sistemlerde performans etkilenmez, ancak ağınız yüklüyse küçük ES'ler önemli ölçüde artabilir.

Ayrıca başka bir dosya sistemini de denemelisiniz; ext3 temelde en yavaş olanıdır. Sağlam, iyi bilinir, ancak bir dosya sunucusu için oldukça uygun değildir. XFS çok daha iyi ve reiserfs de küçük ES'lerde çok daha iyi.


1

Küçük dosyalardan oluşan büyük bir dizin ağacını NFS üzerinden aktarmak istiyorsanız ve sunucuya oturum açabiliyorsanız, bunu yapmanın en iyi yolu, istemcide otomatik olarak ayıklanan bir tar dosyasını aşağıdaki gibi yapmaktır:

tar c orta dizin | ssh kullanıcı @ host tar -xf - -C destdir

Bu şekilde yalnızca tek bir "dosya" ağ üzerinden aktarılır ve tüm dosyalarınız hemen ana bilgisayarda olur.


0

Sadece Evan'ın cevabına eklemek için, kopyaladığınız her dosya için meta veri (dizin girişleri, vb.) Oluşturma yükünüz de vardır.


0

Chris'in cevabına benzer bir çözüm , dosyalarınızı düzenli olarak istemcilere yeniden senkronize etmek olacaktır. İki yönlü değişiklikler yapmak istiyorsanız aynı zamanda birlikte de kullanabilirsiniz.


0

Sorun, paylaşımınızın syncseçenekle (varsayılan) dışa aktarılmasıdır . asyncYazmaları önemli ölçüde hızlandırmak için kullanın . Bkz. Nfs.sourceforge.net/nfs-howto/ar01s05.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.