Unix klasörünün alabileceği maksimum dosya sayısı nedir?


20

Unix klasörünün alabileceği maksimum dosya sayısı nedir?

Dosya sayısı ile aynı olacağını düşünüyorum.


3
Çok daha iyi bir soru olabilir: Kaç tane kullanmalıyım? stackoverflow.com/questions/466521/…
Joachim Sauer

1
Sitemin URL'lerinin site.com/username/ ve benzeri gibi görünmesini isterdim, ancak (eğer şanslıysam) 2 milyondan fazla kullanıcı olacağını düşünerek 2 milyondan fazla klasör alacağını düşünüyorum. PHP gibi bir komut dosyası ile bir klasördeki klasörlerin diğer olasılıklarına bakıyordum modrewrite ile kullanmak istiyorum

1
Kendinize bir iyilik yapın ve yeniden yazma şeması ile alt dizinler oluşturun.
Peter Eisentraut

Yanıtlar:



14

Mevcut tüm Unix dosya sistemlerinde bir dizin neredeyse sınırsız sayıda dosya tutabilir . Halbuki "sınırsız" disk alanı ve inotlarla sınırlıdır - ilk önce ne olursa olsun.

Daha eski dosya sistemi tasarımlarında ( ext2 , UFS , HFS + ) bir dizinde çok sayıda dosyanız varsa işler yavaşlama eğilimindedir. Genellikle işler yaklaşık 10.000 dosyaya acı vermeye başlar. Daha yeni dosya sistemleri ( ReiserFS , XFS , ZFS , UFS2 ) ile , genel performans darboğazlarını görmeden bir dizinde milyonlarca dosyaya sahip olabilirsiniz.

Ancak bir dizinde çok fazla dosya olması iyi test edilmemiştir ve başarısız olan birçok araç vardır. Örneğin, periyodik sistem bakım komut dosyaları üzerinde engel oluşturabilir.

Mutlu bir şekilde UFS2 üzerinde milyonlarca dosya içeren bir dizin kullandım ve dizini silmek istedikçe hiçbir sorun görmedim - bu birkaç GÜN aldı.


12

Dosya sisteminin kaç tane düğümle oluşturulduğuna bağlıdır . yürütme

df -i 

size ücretsiz düğüm sayısını verecektir. Bu, bir dosya sisteminin ve dolayısıyla bir dizinin sahip olabileceği dosya sayısının pratik sınırıdır.


1
Bununla birlikte, birçok dosya sisteminde, boş düğüm sayısından bağımsız olarak, dizin başına dosya sınırı vardır.

1
evet, ancak soru UNIX dosya sistemlerini hedefledi ve bildiğim kadarıyla tüm modern UNIX dosya sistemleri bir dizindeki dosya sayısını sınırlamıyor.

6

Sanırım birçok dosyayı tek bir yerde saklamayı düşünüyorsun, değil mi?

Modern Unix dosya sistemlerinin çoğu , bir dizine çok sayıda dosya koyabilir , ancak aşağıdaki yollar, dosyaları listeleme vb. Gibi işlemler, dosyalar listesinde doğrusal bir arama içerir ve liste çok büyürse yavaşlar.

Birkaç bin kişinin çoğu pratik kullanım için çok fazla olduğunu duyduğumu hatırlıyorum. Tipik çözüm, gruplandırmayı ayırmaktır. Yani,

/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/

ve dosyalarınızı kendi karma değerlerine göre uygun alt dizinde saklayın basename. Uygun bir karma seçin, ilk karakter basit durumlar için yapabilir.


Cristian Ciupitu o yorumlarında yazıyor XFS ve muhtemelen diğer çok yeni dosya sistemleri kullanmak log(N)bu kısıt büyük ölçüde bu yüzden, tutma rehberi içeriğine aranabilir yapıları ıslah .


5
XFS gibi bazı modern dosya sistemleri doğrusal arama içermez. XFS'nin B-Tree teknolojisi, karmaşık dizinler ( uoks.uj.edu.pl/resources/flugor/IRIX/xfs-whitepaper.html adresinden ) kullanarak bir dosyanın konumunu içeren bloklara ve / veya uzantılara doğrudan gitmesini sağlar .
Cristian Ciupitu

Ah! Bunu bilmiyordum. Teşekkürler. Metne ekler.
dmckee

1
Ext3 için "dir_index" özelliğini etkinleştirmeniz gerekir, bkz. tune2fs (8).

0

ext3Bir dizinde yaklaşık 20k + dosyanız varsa, en yaygın linux dosya sistemi biçimlerinden biri gerçekten durgunlaşır. Kaç tane tutabileceğine bakılmaksızın, bir dizinde bu kadar çok dosya bulundurmaktan kaçınmalısınız.


0

Bıraktığınız yorumdan, FS'nizin kaç dosya / klasör barındırabileceğini gerçekten umursamadığınızı düşünüyorum.

Muhtemelen ModRewrite kullanmayı ve site.com/username adresini site.com/?user= veya benzeri bir şeye yeniden yazmayı ve tüm verilerinizi bir veritabanında depolamayı düşünmelisiniz. Kullanıcı başına bir klasör oluşturmak genellikle gerekli değildir (ve iyi bir fikir değildir).

Bununla birlikte, her dosya sisteminin sınırları vardır ve dfsisteminizin her bölümünde kaç tane inode bulunduğunu söyleyebilir.

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.