GNU/Linux >> Belajar Linux >  >> Linux

Untuk Apa Inode Baik?

Saya ingin tahu apakah menyimpan informasi tentang file di inode daripada langsung di direktori sepadan dengan biaya tambahan. Mungkin saja saya melebih-lebihkan biaya atau mengabaikan beberapa hal penting, tapi itulah mengapa saya bertanya.

Saya melihat bahwa sesuatu seperti "inode" diperlukan untuk hardlink, tetapi jika overhead benar-benar sebesar yang saya kira, saya ingin tahu apakah ada alasan yang membenarkannya:

  • menggunakan hardlink untuk pencadangan itu pintar, tetapi efisiensi pencadangan tidak cukup penting jika dibandingkan dengan efisiensi operasi normal
  • tidak memiliki penalti kecepatan atau ukuran untuk hardlink benar-benar penting, karena keuntungan ini hanya berlaku untuk beberapa file memanfaatkan hardlink saat mengakses semua file menderita overhead
  • menghemat ruang untuk beberapa binari bernama sama seperti bunzip2 dan bcat diabaikan

Saya tidak mengatakan bahwa inode/hardlink itu buruk atau tidak berguna, tetapi dapatkah itu membenarkan biaya tipuan ekstra (caching pasti sangat membantu, tetapi itu bukan peluru perak)?

Jawaban yang Diterima:

Tautan keras tidak penting. Mereka bukan alasan untuk memiliki inode. Mereka adalah produk sampingan:pada dasarnya, desain sistem file mirip unix yang masuk akal (dan bahkan NTFS cukup dekat dalam hal ini) memiliki tautan keras gratis.

Inode adalah tempat semua metadata file disimpan:waktu modifikasinya, izinnya, dan sebagainya. Itu juga di mana lokasi data file pada disk disimpan. Data ini harus disimpan di suatu tempat.

Menyimpan data inode di dalam direktori membawa overhead-nya sendiri. Itu membuat direktori lebih besar, sehingga mendapatkan daftar direktori lebih lambat. Anda menyimpan pencarian untuk setiap akses file, tetapi setiap traversal direktori (beberapa di antaranya diperlukan untuk mengakses file, satu per direktori pada jalur file) membutuhkan biaya lebih sedikit. Yang terpenting, ini membuat jauh lebih sulit untuk memindahkan file dari satu direktori ke direktori lain:alih-alih hanya memindahkan pointer ke inode, Anda perlu memindahkan semua metadata.

Sistem Unix selalu mengizinkan Anda untuk mengganti nama atau menghapus file, bahkan jika suatu proses telah membukanya. (Pada beberapa varian unix, buat ini hampir selalu.) Ini adalah properti yang sangat penting dalam praktiknya:ini berarti aplikasi tidak dapat "membajak" file. Mengganti nama atau menghapus file tidak memengaruhi aplikasi, itu dapat terus membaca dan menulis ke file. Jika file dihapus, data tetap ada sampai tidak ada proses yang membuka file lagi. Ini difasilitasi dengan mengasosiasikan proses dengan inode. Proses tersebut tidak dapat dikaitkan dengan nama file karena dapat berubah atau bahkan hilang sewaktu-waktu.

Terkait:Apa alat yang bagus untuk memvisualisasikan pekerjaan Agen SQL ??
Linux
  1. Apa itu file .so?

  2. Apa solusi yang bagus untuk penandaan file di linux?

  3. Apa penampil file CHM yang bagus untuk (Fedora) Linux?

  1. Apa itu file jarang di Linux

  2. Untuk apa Linux test -a command test?

  3. Apa implikasi kinerja untuk jutaan file dalam sistem file modern?

  1. Apa buku Linux/Unix yang bagus untuk pengguna tingkat lanjut?

  2. Untuk apa file .la libtool?

  3. Butuh editor hex yang bagus untuk Linux