25 TB + değerinde milyonlarca dosyayı dosya sisteminde verimli bir şekilde depolama hakkında ipuçları


11

Diyelim ki 25 TB değerinde sıkıştırılmamış günlük dosyalarıyla karşılaşıyorsunuz ve 25 TB toplu depolama kapasitesine sahip bir dizi 20 emtia kutusuna sahipsiniz.

Bunları nasıl saklarsınız?

a) Hangi dağıtılmış dosya sistemini kullanmalı?

b) Hangi sıkıştırma / açma formatı / algoritması?

c) Günlük dosyası boyutu tüm metin ve çok fazla boşluk 7 MB max 7 MB

d) Kullanım a) insanlar en son günlük dosyalarını öncekinden daha fazla isterler, bu nedenle hangi önbellek sistemini kullanmak isterler b) insanlar yalnızca günlük dosyalarını okuyamaz c) kişiler günlük dosyalarının bir tarih aralığına göre listelenmesini ister

e) Emtia kutularında çalışan işletim sistemi Linux'tur,

f) Yedeklemeye gelince, bununla ilgilenen bir depolama dizimiz var. Yani diziden veri geri yükleme yeteneği var.

Dosya sistemine doğrudan erişmelerini istemiyorum. Ne yapmalıyım ? Bunun için onlara REST tabanlı bir API nasıl edinebilirim?

Lütfen size 2 sent ayırın ve ne yapardınız?

Ankur


Emtia kutuları hangi işletim sistemlerini çalıştırıyor? Hataya dayanıklılık ister misiniz, yoksa bir kutuda depolanan tüm verileri kaybederseniz sorun olmaz mı?
Mark Henderson

@farseeker size soruları cevaplamak için soruyu düzenledi. Teşekkürler
Ankur Gupta

Sadece soruyu tekrar okuyun ve soracağım ilk soru şudur: Şu anda günlük dosyalarının 25 TB'si nerede saklanıyor ve orada kalabilirler mi?
Mark Henderson

NFS dosya sisteminde @farseeker
Ankur Gupta

Yanıtlar:


7

Ben bir dağıtılmış dosya sistemi ninja değilim, ancak olabildiğince az sayıda makineye birleştirebildiğim kadar konsolide ettikten sonra, makinelerin çoğunu bir ana makineye bağlamak için iSCSI kullanmayı deneyeceğim. Orada, umarım hataya dayanıklı bir depolamada birleştirebilirim. Tercihen, bir makine içinde (sürücü sönerse) ve makineler arasında (bütün bir makine kapalıysa) hataya dayanıklı.

Şahsen ZFS'yi seviyorum. Bu durumda, sıkıştırma, veri tekilleştirme ve hataya dayanıklılıktaki yapı yardımcı olacaktır. Ancak, veriyi hataya dayanıklı hale getirirken sıkıştırmanın başka birçok yolu olduğundan eminim.

Tavsiye etmek için gerçek bir anahtar teslimi dağıtılmış dosya çözümü olsaydı, bu gerçekten kludgey biliyorum ama umarım doğru yönü gösteriyor.

Düzenleme: Ben hala ZFS yeni ve iSCSI kurma, ama Almanya'da Sun ZFS hata toleransı gösteren nerede bir video görmek hatırladı. Bir bilgisayara üç USB hub'ı bağladılar ve her hub'a dört flash sürücü takın. Daha sonra herhangi bir hub'ın depolama havuzunu indirmesini önlemek için her hub'dan bir flash sürücüden oluşan bir RAIDz birimi oluşturdular. Sonra dört ZFS RAIDz birimini bir araya getirir. Bu şekilde eşlik için sadece dört flash sürücü kullanıldı. Sonraki tabii takılı olmayan bir hub ve bu her zpool bozuldu, ancak tüm veriler mevcuttu. Bu yapılandırmada en fazla dört sürücü kaybolabilir, ancak yalnızca iki sürücü aynı havuzda değilse.

Bu yapılandırma her bir kutunun ham sürücüsüyle kullanıldıysa, parite için değil veri için daha fazla sürücü korunur. FreeNAS'ın sürücüleri iSCSI aracılığıyla "ham" bir şekilde paylaşabileceğini (veya yapabildiğini) duydum , bu yüzden Linux'un da aynısını yapabileceğini varsayıyorum. Söylediğim gibi, hala öğreniyorum, ancak bu alternatif yöntem sürücü paritesi açısından daha önceki önerimden daha az israf olacaktır. Tabii ki, kabul edilebilir olup olmadığını bilmediğim ZFS kullanmaya güvenirdi. Bu bir öğrenme deneyimi olmadıkça, bir şey inşa etmek / bakımını yapmak / tamir etmek zorunda kalacaksanız, bildiklerinize bağlı kalmanın genellikle en iyisi olduğunu biliyorum.

Umarım bu daha iyidir.

Edit: Bazı kazma yaptı ve hakkında konuştuğum video bulundu . USB flash sürücüyü hub'lara yaymayı açıkladıkları kısım 2m10s'de başlar. Video, depolama sunucusu "Thumper" (X4500) ve bir sabit disk denetleyici arızası varsa verileriniz hala iyi olacak şekilde diskleri denetleyicilere nasıl dağıtacağınız demosu. (Şahsen bu sadece eğlenen ineklerin bir videosu olduğunu düşünüyorum. Keşke kendim bir Thumper kutusu olsaydım, ama eşim evin içinde bir palet krikosu çalıştırmamı istemezdi.: D Bu büyük bir kutu.)

Düzenleme: OpenAFS adlı dağıtılmış bir dosya sistemi üzerinden geliyor hatırladı . Denememiştim, sadece hakkında bir şeyler okumuştum. Belki de diğerleri gerçek dünyada nasıl işlediğini bilir.


4

İlk olarak, günlük dosyaları gerçekten yüksek oranlarda sıkıştırılabilir. Günlük dosyalarımın 10: 1 oranında sıkıştırıldığını görüyorum. 5: 1 oranına bile sıkıştırırlarsa, bu sadece 5 GB veya depolama kapasitenizin% 20'sidir.

Yeterli depolama alanınız olduğu göz önüne alındığında, belirli sıkıştırma algoritması çok önemli değil. Yapabilirdiniz...

  • Windows kullanıcıları dosyalara doğrudan erişecekse zip dosyalarını kullanın.
  • Linux üzerinden erişileceklerse gzip kullanın ve hızlı dekompresyon önemlidir.
  • Linux üzerinden erişileceklerse bzip2 kullanın ve mümkün olan en küçük dosyalara sahip olmak önemlidir.

Daha büyük soru şu: Kullanıcılarınıza bu dosyalara nasıl kolay erişim sağlayacaksınız? Bunun bir kısmı, makinelerinizin nasıl yapılandırıldığına bağlıdır.

Tek bir makineye yeterli depolama alanı koyabilirseniz, salt okunur bir Windows dosya paylaşımı gibi son derece basit bir şey yapabilirsiniz. Dosyaları sadece alt dizinlerde düzenlediğinizde başlamaya hazırsınız.

Bu dosyalar için tek bir dosya sunucusu oluşturamıyorsanız, dağıtılmış bir dosya sistemine ihtiyacınız olduğunu görebilirsiniz . Windows, ihtiyaçlarınızı karşılayabilecek bir Dağıtılmış Dosya Sistemine (DFS) sahiptir.

İhtiyaçlarınız daha gelişmişse, kullanıcılarınızın günlük dosyalarına göz atabildiği ve indirebileceği bir kullanıcı arabirimi olarak bir web uygulaması isteyebilirsiniz. Bu durumda, bir ön uç uygulama sunucusuyla kullanılmak üzere tasarlanmış dağıtılmış bir dosya sistemi olan MogileFS'yi kullanmanızı öneririm. Çoğu web programlama dili ile entegrasyon çok kolaydır. Bilgisayarınızda paylaşılan bir sürücü olarak bağlayamazsınız, ancak bir web uygulaması için veri deposu olarak birinci sınıftır.


Bilginize: Windows DFS, birden çok sunucudaki dosyaları / klasörleri senkronize tutmanın bir yoludur. Depolamayı birden çok sunucuda tek bir depolama sürücüsü olarak kullanmanıza izin vermez. microsoft.com/windowsserversystem/dfs/default.mspx
Scott McClenning

Bunu düşündükten sonra haklısın; Diğer makinelerde yaşayan klasörlere yönelik bir DFS kök noktanız varsa DFS kullanılabilir. Bu şekilde kullanıcı bir dosya yapısını görür ve verilerin gerçekte hangi makinelerde yaşadığını bilmesine gerek kalmaz, DFS bilir. Bu işe yarar. Genellikle insanlar bana Windows DFS hakkında soru sorduğumda, genellikle depolama alanını bir araya getirmenin bir yolu olduğunu düşünüyorlar ve bu yüzden sadece bu sonuca varıyorum. Üzgünüm ve işe yarayabilecek hakkın.
Scott McClenning

2

lessfs veri tekilleştirme, sıkıştırma yapan bir dosya sistemidir. Tüm sorunu çözmeyecek olsa da, bir arka uç olarak bakmak bir göz atmaya değer olabilir.


2

bu klasörleri NFS aracılığıyla dışa aktar

Onları ağaç olarak apache (belge kökü altında) çalıştırarak tek bir makineye monte edin

sıkıştırmak için zip kullanın-iyi sıkıştırma oranı, zip tüm işletim sistemlerinden açılabilir

Apache'deki dosyaları listele - böylece kullanıcılara salt okunur erişim sağlıyorsunuz (günlük dosyalarının düzenlenmesi gerekiyor, değil mi)


1
Nfs + httpd üzerinde anlaş, zip'te katılmıyorum. gzip, http ile daha iyi etkileşime girer.
Tobu

@Tobu'dan gzip yorumu için +1 - Doğru yapılandırma ile Apache, gzip'lenmiş dosyaları şeffaf bir şekilde açacak ve görüntüleyecek bir web tarayıcısına sunabilir. Kullanıcıların sıkıştırma hakkında bilgi sahibi olması bile gerekmez.
Christopher Cashell

0

Günlük dosyalarını sıkıştırmayı hiç düşündünüz mü? Ardından, son kullanıcıya sunmadan önce bunları açmak için ön uçta bir şey yapın. Belki bir CGI türü betik.


0

@Ankur ve @Porch. Bu günlükleri sıkıştırmanın gerekliliğine kesinlikle katılıyorum.

@jet Bence daha basit şema daha iyi - bu nedenle son kullanıcı için httpd ideale yakın. Ve arka uç herhangi biri olabilir.

Bence - günlükleri 2 gruba ayırın - klasörler 'eski' ve 'yeni'.

Bunları httpd'nin belge köküne birleştirin. Büyük sözlük ve blok boyutlarına sahip eski olanlar için (tüm işletim sistemleri için popüler olan xz veya 7z arşivler) güçlü sıkıştırma kullanın, hatta katı arşivler olabilir.

Yenileri için fs sıkıştırmayı kullanın: lessfs (rw, veri tekilleştirme + ışık sıkıştırma yöntemleri), fusecompress 0.9.x (rw, hafif - güçlü sıkıştırma yöntemleri), btrfs / zfs, squashfs (ro, hafif - güçlü sıkıştırma yöntemleri, bazı veri tekilleştirme, kullanım yeni döndürülmüş günlükler için).

Günlükleri şeffaf bir şekilde sıkıştırılmış fs'ye (fusecompress, lessfs, btrfs / zfs) yazabilirsiniz. Yazılan günlüklere httpd ile R / o erişimi sağlayın. Kullanıcılar için şeffaf olacak ve onlar için şeffaf bir şekilde açılacaktır.

Sigorta sıkıştırması ile ilgili uyarılar: 1) yalnızca 0.9.x kullanın - kararlıdır. Buradan klonlayın https://github.com/hexxellor/fusecompress

Daha sonraki sürümler ya lzma'yı iyi desteklemez ya da veri kaybetmez.

2) bir dosyayı sıkıştırmak için sadece 1 cpu çekirdeği kullanır, bu nedenle yavaş olabilir.

Bir süreden (birkaç ay) daha eski olan 'yeni' klasördeki her günlüğü yeniden sıkıştırın ve 'eski'ye geçin.

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.