Doğrudan bağlı gigabit sunucular


27

CentOS 6.5 çalıştıran iki Dell R515 sunucum var, bunlardan her biri diğerine doğrudan bağlı olan geniş NIC'lerden biri. Her gece ss üzerinde rsync kullanarak yedekleri ana sunucudan ikincisine göndermek için doğrudan bağlantıyı kullanıyorum. Trafiği izlerken, bir gigabit bağlantı noktasından beklediğimden çok daha az olan ~ 2 MBps veri hacmi görüyorum. MTU’yu her iki tarafta 9000’e ayarladım, ancak bu hiçbir şeyi değiştirmedi.

Beni maksimum kullanılabilir kapasiteye götürecek önerilen bir dizi ayar ve optimizasyon var mı? Dahası, milyonlarca dosyayı kopyalamak için ssh (veya potansiyel olarak sadece NFS) üzerinden rsync kullandığımdan (~ 6Tb küçük dosyalar - büyük bir Zimbra posta deposu) aradığım optimizasyonların, özel kullanım durumum için daha spesifik olması gerekebilir .

Her iki tarafta da ext4 kullanıyorum, eğer önemliyse

Teşekkürler

EDIT: Aşağıdaki rsyncseçenekleri hemen hemen benzer sonuçlarla kullandım:

rsync -rtvu --delete source_folder/ destination_folder/

rsync -avHK --delete --backup --backup-dir=$BACKUPDIR source_folder/ destination_folder/

Şu anda, cpaynı doğrudan kablo bağlantısı üzerinden bir NFS dışa aktarımı için kullanıldığında aynı düzeyde kötü performansa bakıyorum .

EDIT2: senkronizasyonu bitirdikten sonra çalıştırabilir iperfve performansın 990Mbits / sn civarında olduğunu fark ettim, yavaşlık kullanımdaki gerçek veri setinden kaynaklanıyordu.


1
Etiketlerinize rsync eklemelisiniz. Rsync’in giriş kısmı için zamanı kontrol ettiniz mi? Düşük verimlilik, küçük dosyalar nedeniyle olabilir. Seçenekleri kontrol etmek için rsync komutunuzu gönderebilir misiniz?
kranteg

@kranteg lütfen düzenlemeye bakın
dyasny

2
Lütfen ile bağlantıyı doğrulayın iperf.
ewwhite

evet, iperf 991mbits / s gösterir, sanırım çok yavaş bir veri kümesidir
dyasny

Rsync ile iyi bir throuphput'a ve küçük dosyaları olan bir veri kümesine sahip olamazsınız. Kesinlikle katranı denemelisin.
kranteg

Yanıtlar:


24

Dosya sayımı ve SSH şifreleme yükü büyük olasılıkla en büyük engeldir. Böyle bir transferde kablo hızını görmeyeceksiniz.

İyileştirme seçenekleri şunları içerir:

  • Daha az maliyetli bir şifreleme algoritmasıyla rsync + SSH kullanmak (örn. -e "ssh -c arcfour")
  • HPN-SSH gibi bir şeyle tamamen SSH üzerinden şifrelemeyi ortadan kaldırmak .
  • Blok bazlı transferler. Anlık görüntülerdd , ZFS anlık görüntüsü gönderme / alma vb.
  • Bu bir kerelik veya nadiren yapılan bir transferse tar, netcat ( nc), mbuffer veya bazı kombinasyonları kullanın.
  • CentOS tuned-admayarlarınızı kontrol edin .
  • Atime'i dosya sisteminizden kaldırmak. Diğer dosya sistemi bağlama seçeneklerini incelemek.
  • NIC arabellekleri gönderir / alır.
  • rsyncKomutunu ayarlamak . Misiniz -W, burada bütün dosyaları seçeneği mantıklı? Sıkıştırma etkin mi?
  • Depolama alt sisteminizi aktarma türleri için optimize edin (SSD'ler, iş mili sayısı, RAID denetleyici önbelleği.)

NFS için SSH'yi terkettim, hemen hemen aynı sonuçları görüyorum. Blok tabanlı transferler planladığım şeydir, LVM anlık görüntü tabanlı yedeklemelere geçin ve yedekleri dd için ZFS çalıştıracağım ikinci sunucuya ekleyin. her iki tarafta da atime devre dışı. Sıkıştırma kullanılmamıştır. Depolama türlerini bu tür bir aktarma için nasıl optimize ederim? Kaynakta biri yerel sürücülerde diğeri MD1220'de olmak üzere 12x10k üzerinde iki RAID10 sürücü vardır. Yedekleme sunucusu aynı disk sayısına sahiptir, ancak büyük SATA sürücüleri ile RAID5 kullanır. Her iki tarafta da tam önbellek H800 ve H700 denetleyicileri. 2MBps (___ 'dan iftop) ~
dyasny

~ ağ bağlantısının yine de burada tıkanıklık olduğunu düşündürüyor.
dyasny

@dyasny iperfEmin olmak için ağınızı test edin .
ewwhite


1
Hedef dizin yapısının rsyncdeğil tarafından yaratıldığından emin olun cp. Başlangıçta tarafından oluşturulan bir uzak dizin ağacını güncellemek rsynciçin çok daha uzun sürdüğünü gördüm cp: 88GB, 3 saat yerine 1m26m'de kontrol toplamıyla güncellendi! İlk disk düzenini nasıl oluşturursanız, iyi güncelleme performansı elde etmek için kritik önem taşır. CPU zamanı aynıdır; gerçek zaman iki katına çıkabilir. (Herhangi bir değişiklik yapmadan yapılan aynı güncelleme, SSD'den 200 GB Seagate'e 13 dakika içinde çalışır).
Ian D. Allen

3

Muhtemelen bildiğiniz gibi çok sayıda küçük dosyayı kopyalamak (örneğin MailDir formatı veya benzerini kullanan posta kutuları) kesinlikle yüksek bant genişliğine sahip arayüzlerden yararlanmak için en iyi seçenek değildir. SSH muhtemelen bunun için de en iyi nakil protokolü değildir. İkincil ana makinenize göndermeden önce kaynak ana bilgisayarda bir tarball oluşturmak için tar kullanmaya çalışacağım.

tar c /var/mail | ssh root@secondary-host 'tar x -C /var/backups'

Artımlı yedeklemeye ihtiyacınız varsa -gtar seçeneklerini denemek isteyebilirsiniz . Yine de throuput'u en üst düzeye çıkarmanız gerekiyorsa, ssh yerine netcat kullanmayı deneyin.


Şifreleme yükünü kaldırmak için SSH yerine
NFS'ye geçtim

Tar kullanmayı denediniz mi? İlk adım olarak birincil sunucuda yerel bir tarbal oluşturmayı deneyin ve sonra bunu kablo üzerinden aktarın. (veya ağınızı, @wwhite tarafından önerilen iperf ile test edin)
alxgomz

Eğer boş yerim olsaydı, yapardım.
Dolu bir

daha sonra netcat veya ssh üzerinden
pipolamayı

Daha sonra yedekleme dayalı engellemek için geçiş olacak ve ben boruya niyetinde ddaracılığıyla nco zaman. ama şu anda, iki büyük yedeklemeyle takıldım, sonra ana bilgisayardan
ayrılmam gerekiyor

1

Katkıda bulunan faktörleri ayırmaya çalışın:

  • CPU (örneğin, geridöngü aracılığıyla bağlanmış / dev / sıfır dd)
  • disk G / Ç (örneğin , cat> / dev / null [kısa devreyi önlemek için piped] olarak adlandırılmış büyük bir dosyanın dd'si)
  • fiziksel ağ G / Ç (örneğin, diğer makineye bağlanmış dd)
  • vb.

ve onları bağımsız olarak test etmek.

Broadcom sürücüleri ile ilgili bazı kötü deneyimlerim oldu, bu yüzden ilk önerim kullanılabilir ağ bant genişliğini aşağıdakilerle test etmektir: dd if=/dev/zero bs=1m count=10k | rsh backup_host cat \> /dev/null


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.