Kami ingin menyimpan jutaan file teks dalam sistem file Linux, dengan tujuan dapat melakukan zip up dan melayani koleksi sewenang-wenang sebagai layanan. Kami telah mencoba solusi lain, seperti database kunci / nilai, tetapi persyaratan kami untuk konkurensi dan paralelisme menjadikan penggunaan sistem file asli sebagai pilihan terbaik.
Cara paling mudah adalah dengan menyimpan semua file dalam folder:
$ ls text_files/
1.txt
2.txt
3.txt
yang seharusnya dimungkinkan pada sistem file EXT4 , yang tidak memiliki batasan jumlah file dalam folder.
Dua proses FS adalah:
- Tulis file teks dari goresan web (tidak boleh dipengaruhi oleh jumlah file di folder).
- Zip file yang dipilih, diberikan oleh daftar nama file.
Pertanyaan saya adalah, apakah menyimpan hingga sepuluh juta file dalam folder memengaruhi kinerja operasi di atas, atau kinerja sistem umum, berbeda dari membuat pohon subfolder untuk file yang akan ditinggali?
ls -l
atau apa pun yang stat
setiap inode dalam direktori (misalnya bash
globbing / penyelesaian tab) akan secara artifisial lebih cepat daripada setelah beberapa keausan (hapus beberapa file, tulis beberapa yang baru). ext4 mungkin lebih baik dengan ini daripada XFS, karena XFS secara dinamis mengalokasikan ruang untuk inode vs data, sehingga Anda dapat berakhir dengan inode yang lebih tersebar, saya pikir. (Tapi itu dugaan murni berdasarkan sedikit pengetahuan rinci; Saya baru saja menggunakan ext4). Pergi dengan abc/def/
subdirs.
ZipOutputStream
akan mengalahkan hampir semua sistem file asli Linux gratis - Saya ragu Anda ingin membayar untuk GPFS IBM. Loop untuk memproses set hasil JDBC dan membuat aliran zip mungkin hanya 6-8 baris kode Java.
dir_index
, yang sering diaktifkan secara default, akan mempercepat pencarian tetapi dapat membatasi jumlah file per direktori.