Program saya membuat banyak file kecil berumur pendek. Biasanya dihapus dalam satu detik setelah pembuatan. File-file tersebut berada dalam sistem file ext4 yang didukung oleh hard disk nyata. Saya tahu bahwa Linux secara berkala membersihkan ( pdflush
) halaman-halaman kotor ke disk. Karena file saya berumur pendek, kemungkinan besar file tersebut tidak di-cache oleh pdflush
. Pertanyaan saya adalah, apakah program saya menyebabkan banyak disk menulis? Kekhawatiran saya adalah kehidupan hard disk saya.
Karena file kecil, mari kita asumsikan jumlah ukurannya lebih kecil dari dirty_bytes
dan dirty_background_bytes
.
Ext4 memiliki jurnal default dihidupkan, yaitu jurnal metadata. Saya juga ingin tahu apakah metadata atau data ditulis ke disk.
sync
opsi. Anda dapat mempertimbangkan fedora, debian, atau ubuntu yang diinstal secara default. Anda pilih satu. (2) Setiap file sekitar 60KB. (3) Sekitar 1000 file dibuat dan dihapus per detik, tetapi tidak lebih dari 10 file setiap saat. Dengan kata lain, throughput I / O besar tetapi ruang yang ditempati kecil.Jawaban:
Eksperimen sederhana menggunakan ext4:
Buat gambar 100MB ...
Jadikan itu perangkat loop ...
Buat filesystem dan mount ...
Buat semacam dijalankan dengan file berumur pendek. (Ubah ini ke metode apa pun yang Anda inginkan.)
Umount, sinkronkan, lepaskan.
Periksa isi gambar.
Dalam kasus saya, daftar semua nama file, tetapi tidak ada konten file. Jadi hanya isinya yang tidak tertulis.
sumber
nbd
dan catat lalu lintas (atau metode serupa untuk melacak semua penulisan).Kecuali Anda berbicara tentang solid-state drive, sejumlah besar penulisan disk tidak akan menjadi faktor dominan dalam umur drive.
Jika Anda benar-benar ingin menghindari penulisan disk, lihatlah ke tmpfs ,
sumber
Sebagai aturan umum, tidak, mereka tidak akan ditulis. Ini karena cache membersihkan halaman kotor ketika salah satu dari dua kondisi terpenuhi:
Data sudah kadaluwarsa
/proc/sys/vm/dirty_writeback_centisecs
, yang defaultnya adalah 5 detik.Ada terlalu sedikit memori untuk cache untuk menyimpan data, lebih dari
dirty_ratio
halaman kotor dalam cache (default ke 20%).Jadi pada sistem dengan banyak memori bebas dan sedikit lalu lintas tulis selain dari file kecil Anda yang dihapus dalam waktu kurang dari 5 detik, data tidak akan memerah.
sumber
Apakah file berumur pendek dapat ditulis ke disk atau tidak tergantung tidak hanya pada perilaku default dari cache file kernel, tetapi juga pada detail implementasi driver sistem file dan opsi mount dari sistem file tersebut. Dimungkinkan untuk mengkonfigurasi sistem sedemikian rupa sehingga semuanya akan selalu segera dituliskan ke disk (pada dasarnya, perilaku seperti DOS).
Satu sistem file, yang secara jelas menampilkan perilaku yang Anda minati (disebut "alokasi tertunda") adalah XFS. Dengannya Anda bisa lebih atau kurang yakin (tidak diberi opsi konfigurasi lucu di tempat lain) bahwa blok-blok milik hanya file yang dihapus akan digunakan kembali dalam memori, tanpa akses disk menengah. XFS mungkin masih ingin memperbarui jurnal metadata-nya (yang akan ditulis ke disk agak sering; namun, mengingat jurnal XFS adalah metadata saja, itu cukup kecil untuk diatur pada beberapa perangkat lain yang cepat, seperti RAM yang didukung baterai ditemukan pada banyak pengontrol RAID).
Karena perilaku ini, tidak jarang ditemukan benar-benar nol, tetapi sebaliknya mencari file yang sah (ukuran dan metadata lainnya utuh) pada sistem file XFS setelah gangguan daya tiba-tiba. Tersebut adalah biaya untuk mendukung operasi file "semi-sementara" cepat.
Beberapa teori
Secara umum, panggilan sistem yang mengakses sistem file berakhir, agak cepat, dalam metode yang ditentukan driver sistem file (terlampir pada "struct inode_operations" dan "struct file_operations" ketika driver VFS terdaftar). Apa yang terjadi setelah itu hanya menjadi kebijaksanaan implementasi sistem file. Biasanya, sesuatu yang menyerupai pendekatan berikut digunakan (contoh sederhana ini adalah dari driver FAT linux):
Jika sistem file dipasang dalam mode "sinkronisasi", semua perubahan langsung menuju disk (melalui fat_sync_inode () dalam kasus ini). Jika tidak, blok tersebut ditandai sebagai "kotor" dan tetap berada dalam cache memori sampai memerah pada kesempatan yang masuk akal.
Dengan demikian, tidak mungkin untuk memprediksi perilaku sistem sehubungan dengan file sementara tanpa mempertimbangkan opsi pemasangan sistem file dan memeriksa kode sumber implementasinya (ini, tentu saja, sebagian besar berlaku untuk semua jenis sistem file eksotis yang sebagian besar ditemukan di ruang tertanam) .
sumber
sync
opsi. Aku tidak akan melakukan itu.