GNU/Linux >> Belajar Linux >  >> Linux

Jumlah maksimum file/direktori di Linux?

60000 bukan apa-apa, 20000 juga. Tetapi Anda harus mengelompokkan 20.000 ini dengan cara apa pun untuk mempercepat akses ke sana. Mungkin dalam kelompok 100 atau 1000, dengan mengambil nomor direktori dan membaginya dengan 100, 500, 1000, terserah.

E.g., saya punya proyek di mana file memiliki nomor. Saya mengelompokkannya dalam 1000-an, jadi saya punya

id/1/1332
id/3/3256
id/12/12334
id/350/350934

Anda sebenarnya mungkin memiliki batas keras - beberapa sistem memiliki inode 32 bit, jadi Anda dibatasi hingga 2^32 per sistem file.


Jika sistem file server Anda memiliki dir_index fitur diaktifkan (lihat tune2fs(8) untuk perincian tentang pemeriksaan dan pengaktifan fitur) maka Anda dapat menyimpan hingga 100.000 file dalam direktori sebelum kinerja menurun. (dir_index telah menjadi default untuk sistem file baru untuk sebagian besar distribusi selama beberapa tahun sekarang, jadi itu hanya akan menjadi lama filesystem yang tidak mengaktifkan fitur ini secara default.)

Yang mengatakan, menambahkan level direktori lain untuk mengurangi jumlah file dalam direktori dengan faktor 16 atau 256 akan secara drastis meningkatkan kemungkinan hal-hal seperti ls * bekerja tanpa over-running maksimum argv kernel ukuran.

Biasanya, ini dilakukan dengan sesuatu seperti:

/a/a1111
/a/a1112
...
/b/b1111
...
/c/c6565
...

yaitu, menambahkan huruf atau angka ke jalur, berdasarkan beberapa fitur yang dapat Anda hitung dari namanya. (Dua karakter pertama dari md5sum atau sha1sum dari nama file adalah salah satu pendekatan umum, tetapi jika Anda memiliki id objek yang unik, maka 'a'+ id % 16 mekanisme yang cukup mudah untuk menentukan direktori mana yang akan digunakan.)


ext[234] filesystem memiliki jumlah inode maksimum yang tetap; setiap file atau direktori membutuhkan satu inode. Anda dapat melihat jumlah dan batasan saat ini dengan df -i . Misalnya, pada filesystem ext3 15GB, dibuat dengan pengaturan default:

Filesystem           Inodes  IUsed   IFree IUse% Mounted on
/dev/xvda           1933312 134815 1798497    7% /

Tidak ada batasan pada direktori khususnya di luar ini; perlu diingat bahwa setiap file atau direktori memerlukan setidaknya satu blok sistem file (biasanya 4KB), meskipun itu adalah direktori dengan hanya satu item di dalamnya.

Seperti yang Anda lihat, 80.000 inode tidak mungkin menjadi masalah. Dan dengan dir_index opsi (diaktifkan dengan tune2fs ), pencarian di direktori besar bukanlah masalah besar. Namun, perhatikan bahwa banyak alat administratif (seperti ls atau rm ) dapat mengalami kesulitan menangani direktori dengan terlalu banyak file di dalamnya. Karena itu, disarankan untuk membagi file Anda sehingga Anda tidak memiliki lebih dari beberapa ratus hingga seribu item dalam direktori tertentu. Cara mudah untuk melakukannya adalah dengan melakukan hash pada ID apa pun yang Anda gunakan, dan menggunakan beberapa digit heksadesimal pertama sebagai direktori perantara.

Misalnya, Anda memiliki ID item 12345, dan di-hash menjadi 'DEADBEEF02842.......' . Anda mungkin menyimpan file Anda di bawah /storage/root/d/e/12345 . Anda sekarang telah memotong jumlah file di setiap direktori sebesar 1/256.


Linux
  1. Salin file &direktori di Linux

  2. Linux Hapus File dan Direktori

  3. Jumlah maksimum file terbuka terbesar yang diizinkan di Linux

  1. Cara Mengunggah atau Mengunduh File/Direktori Menggunakan sFTP di Linux

  2. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  3. Cara Mengganti Nama Direktori di Linux

  1. Membuat dan Menghapus File dan Direktori Di Linux

  2. Hapus hanya file dalam direktori di direktori BUKAN linux

  3. perintah linux tree membatasi jumlah file yang ditampilkan di setiap direktori