Dosya sistemlerini milyonlarca hardlinkle nasıl yansıtırsınız?


11

Şu anda büyük bir sorunumuz var: Müşterilerimizden biri için bir dosya sistemini yansıtmamız gerekiyor. Bu gerçekten bir sorun değil, ama işte burada:

Bu dosya sisteminde milyonlarca hardlink içeren bir klasör var (evet! MİLYONLAR!). rsyncsadece filelist oluşturmak için 4 günden fazla sürüyor.

Aşağıdaki rsyncseçenekleri kullanıyoruz:

rsync -Havz --progress serverA:/data/cms /data/

Herkes bu rsync hızlandırmak veya alternatifleri kullanmak için bir fikri var mı? ddHedef disk kaynaktan daha küçük olduğu için kullanamadık .

GÜNCELLEME: Orijinal dosya sistemi olduğu için ext3biz çalışacağız dumpve restore. Seni güncel tutacağım


Zor. Önce kaynak dosya sistemini küçültün, sonra dd?
Bittrance

Yanıtlar:


3

Her iki tarafı da rsync 3'e yükseltmelisiniz. Changelog'dan:

- A new incremental-recursion algorithm is now used when rsync is talking
  to another 3.x version.  This starts the transfer going more quickly
  (before all the files have been found), and requires much less memory.
  See the --recursive option in the manpage for some restrictions.

Rsync 3.0.0'ın piyasaya sürülmesinden bu yana 2 yıl geçti, ancak maalesef çoğu kurumsal dağıtım bundan daha eski koda dayanıyor, yani muhtemelen rsync 2.6 kullanıyorsunuz.

Eğer referans (başkasının bu sorunu yaşıyorsa) için, olan zaten rsync 3 çalışan, o zaman artan özyineleme ile uyumsuz seçenekleri kullanıyor. Man sayfasından:

    Some options require rsync to know the full file list, so  these
    options  disable the incremental recursion mode.  These include:
    --delete-before,   --delete-after,    --prune-empty-dirs,    and
    --delay-updates.

Ayrıca, artımlı özyinelemenin desteklenmesi için her iki tarafın da rsync 3 çalıştırması gerekir.


Pritchard bu arka için teşekkür ederim, ancak artımlı kısımlar sorun değil, her iki taraf da rsync> 3.0 kullanıyor. Eğer rsync'i -H olmadan kullanırsak, büyük bir hız gelişimimiz var, ama ihtiyacımız olan şey bu değil.
Thomas Berger

Ahh. Evet, bu durumda dosya sistemi erişimini hızlandırmak için seçeneklere bakmak isteyebilirsiniz (ext3 kullanıyorsanız ext4'e geçmek gibi), daha hızlı disklere veya RAID düzeylerine geçmek (bu bir seçenek olsa bile), vb. dosya sisteminin yeterince hızlı olamayacağı bir noktada olabilir ve blok düzeyinde yedeklemeler tek seçeneğiniz olabilir. Bir sunucudan diğerine bir BackupPC havuzu rsync çalışırken bu sorun vardı.
Steven Pritchard

3

Artık ext * dump kullandık. İyi çalışıyor ve geri yükleme tarafının ext * olması gerekmiyor.

Cihazı değiştirerek ve kullanarak çevrimdışı bir yedekleme yaptık dump vf - /dev/vg0/opt | gzip -c > /mnt/backup/ext3dump.gz.

Burada boyut, zaman, hız ve son inode numaralarını görebileceğiniz son satırlar:

DUMP: dumping regular inode 47169535
DUMP: dumping regular inode 47169536
DUMP: Volume 1 completed at: Wed Jun 29 05:42:57 2011
DUMP: Volume 1 54393520 blocks (53118.67MB)
DUMP: Volume 1 took 4:16:43
DUMP: Volume 1 transfer rate: 3531 kB/s
DUMP: 54393520 blocks (53118.67MB)
DUMP: finished in 15403 seconds, throughput 3531 kBytes/sec
DUMP: Date of this level  dump: Wed Jun 29 01:24:29 2011
DUMP: Date this dump completed:  Wed Jun 29 05:42:57 2011
DUMP: Average transfer rate: 3531 kB/s
DUMP: DUMP IS DONE

Bu hala doğru olup olmadığını bilmiyorum ama dökümü sırasında dosya sistemi kullanılıyorsa dökümü bazı sorunlar için kullanılır. Hedefiniz hız olduğundan, tüm diğer erişimleri zaten devre dışı
bıraktığınızı

0

LVM'yi kullanabilir ve birimin anlık görüntülerini alabilir, ardından anlık görüntüyü yedek olarak yeniden ayarlayabilirsiniz.

Alternatif olarak, orijinal birimi çevrimdışına almak zorunda kalmamak için bunu diğer yanıtla birleştirebilir dump ve anlık görüntü biriminde kullanabilirsiniz .


Dosya sistemi düzeyinde değil, blok düzeyinde çalışan her şey büyük bir gelişme olacaktır.
Marcin

Sorumda görebileceğiniz gibi, yerel değil, Ağ üzerinden yansıtmak zorundayım. Ayrıca LVM bir ayna DEĞİL, sadece dediğin gibi bir enstantane.
Thomas Berger

1
@Thomas Berger: Benim düşüncem, daha sonra anlık görüntüyü (rsync kullanarak) ağ üzerinden kopyalayacağınızdı. Ve bir LVM anlık görüntüsü değilse aynayı tam olarak nasıl tanımlarsınız ?
Teddy

Bunun hala aynı sorunu var: Günler alacaktı. Bu günlerde büyük bir dalta olurdu (buna ihtiyacımız olmayacaktı), bu yüzden yeterli alanı korumalıyız ve o alana sahip değiliz. Ve bir ayna kaynağın bağımsız bir kopyasıdır. Verileri müşteri için üretimden gelişime kopyalamalıyız.
Thomas Berger

@Thomas Berger: Aslında, anlık görüntü birimini değil , gerçek anlık görüntü hacmini yeniden senkronize edeceğinizi kastediyordum . Ancak, şimdi anlık görüntü + döküm çözümünün daha iyi olduğuna inanıyorum.
Teddy
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.