Geliştirici yapıları için en hızlı dosya sistemi hangisidir?


10

Ben sürekli bir entegrasyon yapı sunucusu olarak hareket edecek bir Linux kutusu bir araya getirmek; çoğunlukla Java şeyler oluşturacağız, ancak bu sorunun derlenmiş herhangi bir dil için geçerli olduğunu düşünüyorum.

Hangi dosya sistemi ve yapılandırma ayarlarını kullanmalıyım? (Örneğin, bunun için atime ihtiyacım olmayacağını biliyorum!) Yapı sunucusu, küçük dosyaların okunması ve yazılması ve hangi dosyaların değiştirildiğini görmek için dizinleri taramak için çok zaman harcayacaktır.

GÜNCELLEME: Bu durumda veri bütünlüğü düşük bir önceliktir; bu sadece bir yapı makinesi ... son eserler sıkıştırılıp başka bir yerde arşivlenecek. Derleme makinesindeki dosya sistemi bozulur ve tüm veriler kaybedilirse, sadece silebilir ve yeniden görüntüleyebiliriz; derlemeler önceki gibi çalışmaya devam eder.



Gravyface'nin verdiği bağlantıyı okuyun, ancak yapılarınızı yapacağınız bölümü bir kenara koyduğunuzdan emin olun, daha sonra burada aldığınız cevapları test edebilirsiniz. Eğer para varsa, (ya tmpfs, Ramdiski kullanarak diskleri kullanarak vazgeçmek olmadığını görmek cyberciti.biz/faq/howto-create-linux-ram-disk-filesystem )
becomingwisest

Yanıtlar:


6

Temel dosya sistemi olarak ext4fs'yi birkaç hızlandırma seçeneğiyle kullanın

noatime,data=writeback,nobh,barrier=0,commit=300

Daha sonra birleşimler bunun üzerine bir tmpfs ramdisk bağlar, böylece derlemeler sırasında yazılan dosyalar ramdisk'in avantajlarından yararlanır. Oluşturulan ikili dosyaları derlemenin sonunda tmpfs'den çıkarmak için derleme yordamını değiştirin veya sökmeden önce tmpfs'yi ext4fs içine geri birleştirin.


: O 's değerinde belirterek daha hızlı olsa da barrier=0kemer wiki itibaren: "diskler garanti önbelleğe düzgün şiddetli dosya sistemi yolsuzluk ve veri kaybına yol açabilir elektrik kesintisi durumunda yazılır olamaz zaman engelleri devre dışı bırakılması"
ideasman42

6

En hızlı dosya sistemi? tmpfs noatimesetli mevcut RAM'e monte edilmiştir .

Bu, yalnızca kaynak ağacınızı oluşturmak için gereken her şeyi kontrol etmek için bir prosedürünüz varsa (çünkü yeniden başlattığınızda bir tmpfs dosya sisteminin içeriği kaybolur) ve kaynak ve nesneler mevcut RAM'inizin makul bir köşesine sığarsa ( derleyicinizi ve bağlayıcıyı değiştirmeden çalıştırmak için yeterli solda). Hız için RAM dışında çalışamayacağınızı söyledi.


Bu harika bir cevap, ama aradığım cevap tam olarak değil; bu, karşılayabileceğimden daha fazla RAM. (Belki birkaç yıl içinde RAM yarı fiyatına geldiğinde!)
Dan Fabulich

@Dan - Kaynak ağacınız ne kadar büyük? :-)
voretaq7

Kaynak ağaç çok büyük değil, ancak yerleşik nesneler ve test dosyaları takas olmadan belleğe sığmayacak kadar büyük.
Dan Fabulich

2

Michael Dillon cevabına birkaç seçenekle ext4 dosya sistemi oluşturabileceğinizi ekleyebilirim:

mkfs.ext4 -O dir_index,extent -i 8096 /dev/<disk>


dir_index
    Use hashed b-trees to speed up lookups in large directories.

extent 
    Instead of using the indirect block scheme for storing the location of data blocks in an inode, use extents instead.  This is a  much  more  efficient  encoding  which  speeds  up filesystem access, especially for large files.

-i 8096 size boyut başına daha fazla düğüm sağlar, çünkü bina ortamları çok sayıda dosya oluşturur.


0

Kaynaklar için, Reiser4 veya Btrfs gibi anında sıkıştırma desteğine sahip olmak tercih edilir . Her ikisi de henüz üretim için değil, her iki FS'yi de ağır ve mutlu bir şekilde kullanan insanları duydum. :-)

Bir sonraki seçim (genellikle yaparım) Ext3 değil , Reiser3'tür . Ext3 günümüzde biraz daha hızlı olabilir , ancak Reiser3'ün i-nodes format-time sınırları yoktur, "data =" seçeneğinin çevrimiçi değiştirilmesini destekler. Sıkı küçük dosyaların paketlenmesine izin veren "kuyruk" desteğine sahiptir, ancak hız konusunda endişeleriniz varsa "notail".

Hem XFS hem de JFS, "bunları bir sürü küçük dosya" durumu için bir acı olacaktır.

(EXT4'ten bahsetmeyi unuttum: Evet, daha da hızlı, sonra EXT3. Ancak yukarıda belirtilen EXT3'ün tüm sınırlamaları EXT4'lerdir).


0

Açıkladığınız işlemler, ideal dosya sisteminin yapabilecekleri konusunda bazı önemli ipuçları verir:

  • Oluşturma işlemi sırasında büyük ölçüde rastgele r / w erişimleri.
  • Birçok, birçok dosya kısa sürede güncellenir, bu nedenle hızlı meta veri işlemleri kritiktir.
  • Büyük olasılıkla çok dosya ağırlıklı dosya sistemlerinde birçok küçük dosyanın verimli kullanımı.
  • Nadir ve belirsiz kenar vakalarında veri kaybını riske atmayacak kadar olgun.

Btrfs ve Ext4 yukarıdakilerin üçüdür ve dördüncüsü şüphelidir. Ext4 muhtemelen bunun için yeterince olgun, ancak btrfs henüz pişirilmedi. noatimemeta veri işlemlerini daha verimli hale getirmeye yardımcı olur, ancak bir sürü yeni dosya oluştururken, çığlık atmak için hızlı bir şekilde meta veri işlemlerine ihtiyacınız vardır.

İşte o zaman temel depolama bir faktör olmaya başlar. XFS meta-veri işlemleri birkaç blokta yoğunlaşma eğilimindedir ve bu da işlemleri zorlayabilir. Ext-tarzı dosya sistemleri meta-veriyi açıkladığı verilere yaklaştırma konusunda daha iyidir. Ancak, depolama alanınız yeterince soyutsa (bir VPS'de çalıştırıyorsanız veya bir SAN'a bağlıysanız) önemli değildir .

Her dosya sisteminde birkaç yüzde daha fazla puan elde etmek için yapılabilecek çok az hız vardır. Altta yatan depolama alanının ne kadar yüksek olduğu, ne kadar kazanç elde edeceğinizi büyük ölçüde etkiler.

Depolama alanında, depolama biriminizde yeterli G / Ç İşlemi yükü varsa, dosya sistemi verimsizlikleri çok fazla önemli olmaya başlar. Derleme bölümünüz için bir SSD kullanıyorsanız, dosya sistemi seçimi, daha rahat çalıştığınızdan daha az önemlidir.


Aslında veri kaybını bu kadar önemsemiyorum. (Açıklığa kavuşturmak için soruyu güncelledi.) Yani, veri kaybı iyi bir şey değil, ancak kritik verileri saklamıyorum; Çok fazla dosya işliyorum ve verileri başka bir yere taşıyorum. RAM alabilseydim, yukarıda önerilen voretaq7 olarak sadece tmpfs kullanırdım.
Dan Fabulich

0

Birçok küçük dosya için, ext4'ün, xfs, jfs ... üzerinde Reiser'ı öneriyorum, ancak ext4'ün bu erişim modeli için önceki enkarnasyonlarından çok daha iyi (yani, duruşun tersi) olduğunu duydum.

Reiser birçok dosya yapısını inode ağacına iter - bu nedenle küçük dosyalarla uğraşırken gerçekten iyi çalışır.

Ancak, önde gelen dosya sistemleri arasındaki davranış farklılıkları, etkili bir şekilde önbelleğe almak / arabelleğe almak için yeterli fiziksel belleğe sahip olacağınız avantajlara kıyasla nispeten küçüktür.

ve hangi dosyaların değiştirildiğini görmek için dizinleri tarama.

Bu, sorunu çözmenin berbat bir yoludur - nispeten basit olmasına rağmen. Bu kadar önemliyse, modları indekslemek için inotify işleyici yazmayı düşünün .

OTOH, flaş SSD kullanıyorsanız (bu size çok düşük arama süreleri verecektir) Uzun ömürlü nedenlerle yazmayı daha etkili dağıtan bir fs kullanmanızı öneririm - örn. JFFS2

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.