Tercih edilen konumdaki coğrafi olarak dağıtılmış dosya sistemi


11

Standart bir dosya sunucusunu bir WAN üzerinden birkaç siteye dağıtması gereken bir uygulama oluşturuyorum. Temel olarak, her sitenin çeşitli boyutlarda (bazıları 100'lerin MB aralığında, ancak en küçükleri) çok sayıda çeşitli dosya yazması gerekir ve uygulama, çarpışmaların sorun olmayacağı şekilde yazılır. Aşağıdaki nitelikleri karşılayan bir sistem kurmak istiyorum:

  1. Her site, dosyaları paylaşılan bir "ad alanında" depolayabilir. Yani, tüm dosyalar aynı dosya sisteminde görünecektir.
  2. Her site, gerekli olmadıkça WAN üzerinden veri göndermez. Yani, WAN'ın her iki tarafında da aynı mantıksal dosya sistemine "birleştirilecek" yerel depolama olacaktır.
  3. Linux ve Ücretsiz ($$$) bir Artı

Temel olarak, merkezi bir NFS paylaşımı gibi bir şey gereksinimlerin çoğunu karşılar, ancak yerel olarak yazılan verilerin yerel kalmasına izin vermez. WAN'ın uzak taraflarındaki tüm veriler her zaman yerel olarak kopyalanır.

Lustre'ye baktım ve onunla bazı başarılı testler yaptım, ancak dosyaları dağıtılmış depolamada oldukça eşit bir şekilde dağıtıyor gibi görünüyor. Belgeleri inceledim ve otomatik olarak uzak depolama yerine yerel depolamayı "tercih edecek" bir şey bulamadım. En düşük gecikmeli depolama ile giden bir şey bile iyi olurdu. Çoğu zaman bu uygulamanın gereksinimlerini karşılayacaktı.


Aşağıda sorulan bazı soruların cevapları:

  • Sunucu düğümleri: başlatmak için 2 veya 3. Her sunucu, onlarca eşzamanlı okuma / yazma istemcisine bağlanır.
  • WAN Topology tam ağ ve güvenilirdir. (büyük şirket, maliyet bürokrasi kadar sınırlayıcı değildir)
  • İstemci yük devretme: Aslında istemcilerin yük devretme olmasını düşünmemiştim (çoğunlukla şu anki uygulamamız bunu tek bir sitede yapmıyor). Pratik cevap, coğrafi olarak dağıtılan her sitedeki sunucuların, hizmet verdikleri müşteriler için tek hata noktası olması bekleniyordu. Yine de, burada belirli bir şey düşünürseniz, bu tartışmaya oldukça uygun olacağını düşünüyorum.
  • Roll-my-own: Ben rsync / unison düşündüm, ancak bu çalışmanın "dinamik" bölümünü sorunsuz bir şekilde yapmak için biraz fantezi mantık gerekir. Yani, dosya yerel gibi görünüyor, ancak yalnızca istek üzerine alınır.
  • MS-DFS: Kesinlikle bakmam gereken bir şey gibi görünüyor. Ana sorunum, bağlanan istemcilerin çoğu NFS istemcisi olduğu için Windows'ta NFS sunucusu yapılandırması / güvenilirliği / performansı konusunda emin olamamak olabilir.

Linux ve Re Plus için zor reged.
dpb

Yanıtlar:


5

Linux gereksinimi hakkında utanç. Windows DFS tam olarak bunu yapar. 2003 R2'den bu yana, bunu blok düzeyinde de yapıyor.


Chris, cevap için teşekkürler. Bence Windows'da DFS aradığım şey. Kesinlikle bakmam gereken bir şey.
Mart'ta dpb

DFS, blok düzeyinde çalışmaz. Çoğaltma hizmeti dosya bazında işlem yapmaz.
eckes

4

Bazı sorular:

  • Bu şeye katılmayı kaç tane "sunucu" düğümü düşünüyorsunuz?

  • WAN bağlantı topolojisi neye benziyor-- hub ve bağlı, tam ağ? Ne kadar güvenilir?

  • Yerel sunucunun başarısız olması durumunda istemcilerin coğrafi olarak yerel olmayan bir sunucuya yük devretmesini bekliyor musunuz?

Windows DFS-R, potansiyel olarak ağır lisans maliyetleri olsa da, aradığınız şeyi kesinlikle yapar.

Çarpışmaların bir sorun olmadığını ve dağıtılmış bir kilit yöneticisine ihtiyacınız olmadığını söylüyorsunuz, bu yüzden bunu rsync veya Unison gibi kullanıcı araçlarıyla yapabilir ve sadece NFS'li dosyaların derlemesini yerel istemcilere aktarabilirsiniz. Bu çirkin ve bir çoğaltma topolojisi oluşturma ve aslında kullanıcı alanı araçlarını çalıştırmak için bir tür sistemi birlikte çalmak zorunda kalacaksınız, ancak lisanslama maliyeti gittikçe kesinlikle ucuz olurdu.


Cevabınız için teşekkürler Evan, soruyu istediğin verilerle güncelledim. Unison / rsync fikrinizle ilgileniyorum, ancak dinamik yönün nasıl ele alınacağını tam olarak görmüyorum. (Unison ile ilgili çok fazla deneyimim yok, sadece rsync).
dpb

@dpb: Orijinal düzenlemenizde bu gereksinimi anlamıyordum. Microsoft DFS-R de bunu yapmaz. İsteğe bağlı alma davranışı, yerel verileri önbelleğe alınmamış dosya saplamalarına yönelik istekleri durdurmak, verileri almak ve okumayı yerine getirmek için dosya sisteminde "etkin" bir şey gerektirir. Bu davranışla coğrafi olarak dağıtılmış dosya sisteminin farkında değilim - bu daha çok HSM'ye benziyor.
Evan Anderson

Benim gibi clueless olanlar için: en.wikipedia.org/wiki/Hierarchical_storage_management . Tekrar teşekkürler @Evan. Temelde depolama yerini dinamik bir şekilde yeniden düzenlemekle neredeyse ilgilenmiyorum. Bence HSM çok havalı geliyor, ama bunun serin kısmı yaptığım şey için oldukça abartılı.
dpb

3

AFS'yi düşündünüz mü ?

Andrew Dosya Sistemi (AFS), tüm istemci iş istasyonlarına homojen, konumdan saydam bir dosya adı alanı sunmak için bir dizi güvenilir sunucu kullanan dağıtılmış ağa bağlı bir dosya sistemidir.

Anladığım kadarıyla, son gelişmelerin çoğu OpenAFS projesinin arkasındaydı .

"Tercih edilen yerellik" özelliğinin kullanılabilir olup olmadığını bilmek için projeye yeterince aşina olduğumu iddia edemiyorum, ancak aksi halde kulağa iyi bir uyum gibi geliyor.


1
Ayrıca CodaFS'ye de göz atın: en.wikipedia.org/wiki/Coda_%28file_system%29
blank3

1

Luster'deki OST havuzlarına baktınız mı ?

Otomatik olmayacaktır, ancak OST havuzları ile belirli OST / OSS'lere dizinler / dosyalar atayabilirsiniz - temel olarak OST'lerde varsayılan yuvarlak liste / şeritleme yerine ilke tabanlı depolama ayırma.

Böylece site başına bir dizin ayarlayabilir ve bu dizini o sitenin yerel OST'lerine atayabilirsiniz, bu da tüm G / Ç'yi yerel OST'lere yönlendirir. Hala küresel bir isim alanı olacak.

WAN bağlantıları (yerel önbellek sunucuları ve bunun gibi şeyler) üzerinden Lustre'yi geliştirmek için çok fazla çalışma var, ancak hepsi hala ağır geliştirme AFAIK altında.


Teşekkürler @ James, Neredeyse tam olarak aradığım şey bu. Ben en üst düzeyde munged ad alanında meraklı değilim (bir OST havuzuna belirli dizinleri atayın), ama belki de Tamam olurdu. Lustre'de kullanım durumu ve sınırlamanın ne olduğunu bilmek en azından iyidir. Tekrar teşekkürler!
dpb

1

Belki NFS ama uygulama sunucularında Cachefs ile hedefinize ulaşırsınız . Anladığım gibi, yazılı her şey hala merkezi sunucuya gidecek, ama en azından okumalar yerel olarak önbelleğe alınabilir. Bu, kullanım alışkanlıklarınıza bağlı olarak potansiyel olarak okumaları geciktirebilir.

Ayrıca, mabye UnionFS göz atmaya değer. Bununla birlikte, her konumun bir NFS dışa aktarımı olacağını düşünüyorum ve daha sonra her konumdaki UnionFS'yi kullanabilirsiniz ve konumdaki diğer tüm NFS bağlarının bir dosya sistemi olarak görünmesini sağlayabilirsiniz. Bununla ilgili deneyimim yok.


Teşekkürler @Kyle, UnionFS hakkında bilmiyordum, agresif önbellekleme ile birlikte, NFS bunun için iyi bir çözüm olabilir. Konum sayısı arttıkça bakımını yapmakta daha fazla sorun olabileceğini düşünüyorum, ama karar vermeden önce bu konuya bakacağım.
dpb

0

Diskleri çoğaltmak için DRBD'ye bakabilirsiniz. http://www.drbd.org/ . Bu, şimdi Çekirdeğe dönüştüren bir linux Yüksek Kullanılabilirlik çözümüdür.

Ancak, bunun bazı sınırlamaları vardır:

  1. Yalnızca iki düğüm kurulabilir
  2. WAN, DRBD'yi sağlam tutacak kadar güvenilir olmayabilir.

İlginç bir fikir, ancak diğer dağıtılmış dosya sistemleri üzerinde benim uygulama bir şey verecek sanmıyorum. (parlaklık, glusterf, vb.). Gönderdiğiniz için teşekkürler ...
dpb

0

Basit tutmak istiyorsanız, bir rsync'e bir göz atın, birçok sorunu çözer ve yazılabilir.



0

Btsync, iyi bir deneyim yaşadığım başka bir çözüm. Dosyaları aktarmak için BitTorrent protokolünü kullanır, böylece sahip olduğunuz daha fazla sunucu yeni dosyaları senkronize etmek kadar hızlı olur.

Rsync tabanlı çözümden farklı olarak, dosyaları / klasörleri ne zaman yeniden adlandırdığınızı algılar ve bunları sil / kopyala yerine tüm düğümlerde yeniden adlandırır.

Daha sonra btsync istemcileri yerel ağdaki klasörleri paylaşabilir.

Bulduğum tek dezavantajı (MS DFS ile karşılaştırıldığında), yerel bir dosya kopyasını algılamayacağıdır. Bunun yerine tüm akranlara yüklenen yeni bir dosya olarak yorumlayacaktır.

Şimdiye kadar btsync en iyi senkronizasyon çözümü gibi görünüyor ve Windows, Linux, Android ve ARM cihazlarına (örn. NAS) yüklenebilir

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.