Seorang teman saya yang suka pemrograman di lingkungan Linux, tetapi tidak tahu banyak tentang administrasi Linux baru-baru ini mengalami masalah di mana OS-nya (Ubuntu) melaporkan "kehabisan ruang disk pada volume XXX." Tetapi ketika dia pergi untuk memeriksa volume, masih ada 700 GB yang tersisa. Setelah banyak waktu yang terbuang, dia akhirnya bisa mengetahui bahwa dia kehabisan inode. (Dia menyimpan banyak pembaruan inkremental kecil dari sistem cadangan pada volume ini dan membakar semua inode-nya.)
Dia bertanya kepada saya mengapa kernel Linux melaporkan pesan kesalahan ("kehabisan ruang disk") alih-alih melaporkan dengan benar ("kehabisan inode"). Saya tidak tahu, jadi saya pikir saya akan bertanya kepada StackExchange.
Adakah yang tahu mengapa ini terjadi? dan mengapa itu belum diperbaiki setelah bertahun-tahun? (Saya ingat seorang teman yang berbeda memberi tahu saya tentang masalah ini pada 1995.)
sumber
ext4
mengalokasikan inode pada waktu pembuatan fs seperti ext2 / 3 dan tidak dapat dimodifikasi kemudian.Saya menganggap teman Anda menggunakan ext fs, karena salah satu dari beberapa fs masuk akal yang dapat kehabisan inode.
Tampaknya teman Anda mengotak-atik sistem file-nya dan memecahkannya atau memiliki volume beberapa TB yang sangat besar. Inode bukan hal yang digunakan sekali dan membuang. Jika ia benar-benar kehabisan inode, itu berarti ia memiliki banyak file dan direktori yang sangat aneh ... yang dapat terjadi pada volume> 4TB (tebakan berpendidikan), di mana "hanya" 700GB yang gratis. Untuk keluarga ekst dari fs jumlah inode ditentukan ketika fs dibuat. Dari
mkfs.ext4
halaman manual:Untuk mempersingkat sisa jawaban ini: Ini berarti
mkfs
diberikan dengan rasio seperti itu, atau akan mengasumsikan satu. Jika teman Anda menggunakan fs berbeda dari yang diasumsikan rasio yang dipilih mungkin salah untuk kasus penggunaannya dan ia mendapatkan kesalahan itu ... mengisi volume multi-TB tunggal dengan banyak file kecil dapat dihitung.Apakah teman Anda menggunakan lingkungan desktop yang mengimplementasikan konsep "tempat sampah" untuk file atau bentuk cadangan lain yang dapat membuat file dalam jumlah besar? Mungkin dia bisa memperbaiki masalahnya hanya dengan menyingkirkan file yang tidak dibutuhkan.
Saya ingat masalah ini dengan ext2 dari waktu ketika kernel 2.4 cukup baru. Sebagai aturan praktis, saya selalu menggunakan XFS untuk volume yang sangat besar dibandingkan dengan apa yang saat ini umum. Saat ini saya akan memanggil segalanya antara 250GB hingga 1TB umum untuk volume tunggal dan kita dapat membeli HDD 4TB. Jadi untuk semuanya> 3TB saya lebih suka menggunakan XFS daripada ext. Hanya aturan praktis, tetapi tidak kehabisan inode untuk waktu yang lama ...
sumber
tune2fs -l /dev/sda1
) dan kebetulan saya memiliki rasio 1 inode untuk setiap empat blok dan setiap blok berukuran 1k. Berapa banyak ini dapat dianggap "default" namun, saya tidak tahu.