Berapa jumlah maksimal file yang dapat disimpan oleh folder Unix?

20

Berapa jumlah maksimal file yang dapat disimpan oleh folder Unix?

Saya pikir ini akan sama dengan jumlah file.

Peter Mortensen
sumber
3
Pertanyaan yang jauh lebih baik adalah: Berapa banyak yang harus saya gunakan? stackoverflow.com/questions/466521/…
Joachim Sauer
1
Saya ingin url situs saya terlihat seperti site.com/username/ dan seterusnya, tetapi berpikir bahwa (jika saya beruntung) mendapatkan lebih dari 2 juta pengguna yang akan menjadi lebih dari 2 juta folder, karena saya tidak ingin menggunakan skrip seperti PHP dengan modrewrite saya sedang melihat kemungkinan lain folder dalam folder
1
Bantulah diri Anda sendiri dan buat subdirektori dengan skema penulisan ulang.
Peter Eisentraut

Jawaban:

14

Pada semua sistem file Unix saat ini direktori dapat menampung jumlah file yang hampir tidak terbatas . Sedangkan "tidak terbatas" dibatasi oleh ruang disk dan inode - apa pun yang habis terlebih dahulu.

Dengan desain sistem file yang lebih lama ( ext2 , UFS , HFS + ) banyak hal cenderung menjadi lambat jika Anda memiliki banyak file dalam direktori. Biasanya hal-hal mulai menyakitkan sekitar 10.000 file. Dengan sistem file yang lebih baru ( ReiserFS , XFS , ZFS , UFS2 ) Anda dapat memiliki jutaan file dalam direktori tanpa melihat hambatan kinerja umum.

Tetapi memiliki begitu banyak file dalam direktori tidak diuji dengan baik dan ada banyak alat yang gagal itu. Sebagai contoh, skrip pemeliharaan sistem berkala mungkin muntah di dalamnya.

Saya dengan senang hati menggunakan direktori dengan beberapa juta file di UFS2 dan tidak melihat masalah sampai saya ingin menghapus direktori - yang membutuhkan beberapa HARI.

maks
sumber
12

Tergantung berapa banyak inode yang diciptakan dengan sistem file. Mengeksekusi

df -i 

akan memberi Anda jumlah inode gratis. Ini adalah batas praktis dari berapa banyak file sistem file dan karenanya sebuah direktori dapat menampung.

Peter Mortensen
sumber
1
Namun, banyak sistem file memiliki batas file per direktori, terlepas dari jumlah inode yang gratis.
1
ya, tetapi pertanyaannya menargetkan sistem file UNIX dan sejauh yang saya tahu semua sistem file UNIX modern tidak membatasi jumlah file dalam direktori.
6

Saya menganggap Anda berpikir untuk menyimpan banyak file di satu tempat, bukan?

Sebagian besar sistem file Unix modern dapat meletakkan banyak file dalam satu direktori, tetapi operasi seperti mengikuti jalur, mendaftarkan file, dll. Melibatkan pencarian linear melalui daftar file dan menjadi lambat jika daftar tumbuh terlalu besar.

Saya ingat pernah mendengar bahwa beberapa ribu terlalu banyak untuk penggunaan praktis. Solusi biasanya adalah memecah pengelompokan. Itu adalah,

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

dan menyimpan file Anda di sub-direktori yang sesuai sesuai hash mereka basename. Pilih hash yang mudah digunakan, karakter pertama dapat dilakukan untuk kasus sederhana.


Cristian Ciupitu menulis dalam komentarnya bahwa XFS , dan mungkin sistem file yang sangat baru lainnya, menggunakan log(N)struktur yang dapat dicari untuk menyimpan konten direktori, sehingga kendala ini sangat diperbaiki .

dmckee
sumber
5
Beberapa sistem file modern, misalnya XFS tidak melibatkan pencarian linier. Teknologi B-Tree XFS memungkinkannya untuk langsung menuju blok dan / atau luasan yang mengandung lokasi file menggunakan indeks canggih (dari uoks.uj.edu.pl/resources/flugor/IRIX/xfs-whitepaper.html ).
Cristian Ciupitu
Ah! Saya tidak tahu itu. Terima kasih. Akan menambah teks.
dmckee
1
Untuk ext3, Anda harus mengaktifkan fitur "dir_index", lih. tune2fs (8).
0

ext3salah satu format sistem file linux yang paling umum menjadi sangat lamban jika Anda memiliki sekitar 20k + file dalam direktori. Terlepas dari berapa banyak yang dapat ditampung, Anda harus mencoba menghindari memiliki banyak file dalam satu direktori.

Rory
sumber
0

Dari komentar yang Anda tinggalkan, saya pikir Anda tidak terlalu peduli tentang berapa banyak file / folder yang dapat di-host oleh FS Anda.

Anda mungkin harus mempertimbangkan untuk menggunakan ModRewrite dan menulis ulang situs.com/username ke situs.com/?user= atau sejenisnya dan menyimpan semua data Anda dalam database. Membuat satu folder per pengguna pada umumnya tidak perlu (dan bukan ide yang baik).

Yang mengatakan, setiap filesystem memiliki batas, dan dfdapat memberi tahu Anda berapa banyak inode yang tersedia pada setiap partisi sistem Anda.

ℝaphink
sumber