Apa perbedaan antara "ukuran inode" dan "Bytes per inode"

18

Informasi di bawah ini diambil dari halaman manual, saya ingin tahu perbedaan antara byte-per-inode dan inode-size?

-i bytes-per-inode

Tentukan rasio byte / inode. mke2fs membuat inode untuk setiap byte bytes-per-inode ruang pada disk. Semakin besar rasio byte-per-inode, semakin sedikit inode yang akan dibuat. Nilai ini umumnya tidak boleh lebih kecil dari ukuran file sistem, karena terlalu banyak inode akan dibuat. Ingatlah bahwa tidak mungkin untuk memperluas jumlah inode pada sistem file setelah dibuat, jadi berhati-hatilah dalam menentukan yang benar nilai untuk parameter ini.

-I inode-size

Tentukan ukuran setiap inode di bytes.mke2fs secara default membuat 256-byte inode. Dalam kernel setelah 2.6.10 dan beberapa kernel vendor sebelumnya adalah mungkin untuk menggunakan inode yang lebih besar dari 128 byte untuk menyimpan atribut yang diperluas untuk kinerja yang ditingkatkan. Nilai ukuran inode haruslah kekuatan 2 lebih besar atau sama dengan 128. Lebih besar inode -ukuran ukuran lebih banyak ruang tabel inode akan mengkonsumsi, dan ini mengurangi ruang yang dapat digunakan dalam sistem file dan juga dapat berdampak negatif terhadap kinerja. Atribut diperluas disimpan dalam inode besar tidak terlihat dengan kernel yang lebih tua, dan filesystem tersebut tidak akan dapat dipasang dengan 2,4 kernel sama sekali. Tidak mungkin untuk mengubah nilai ini setelah sistem file dibuat.

Akheel Asadi
sumber

Jawaban:

13

Pertama, apa itu inode? Di dunia Unix, inode adalah semacam entri file. Nama file dalam direktori hanyalah label (tautan!) Ke inode. Sebuah inode dapat dirujuk di beberapa lokasi (hardlink!).

-i bytes-per-inode (alias inode_ratio)

Untuk beberapa alasan yang tidak diketahui, parameter ini kadang-kadang didokumentasikan sebagai byte-per-inode dan kadang-kadang sebagai inode_ratio . Menurut dokumentasi, ini adalah rasio byte / inode . Sebagian besar manusia akan memiliki pemahaman yang lebih baik ketika dinyatakan sebagai (alasan bahasa Inggris saya):

  • 1 inode untuk setiap X byte penyimpanan (di mana X adalah byte-per-inode).
  • filesize rata-rata terendah yang bisa Anda masukkan.

Rumus (diambil dari mke2fs kode sumber ):

inode_count = (blocks_count * blocksize) / inode_ratio

Atau bahkan disederhanakan (dengan asumsi "ukuran partisi" kira-kira setara dengan blocks_count * blocksize, saya belum memeriksa alokasi):

inode_count = (partition_size_in_bytes) / inode_ratio

Catatan 1: Sekalipun Anda memberikan jumlah inode tetap pada waktu pembuatan FS ( mkfs -N ...), nilainya diubah menjadi rasio, sehingga Anda bisa memuat lebih banyak inode saat Anda memperbesar ukuran sistem file.

Catatan 2: Jika Anda menyetel rasio ini, pastikan untuk mengalokasikan inode secara signifikan lebih dari apa yang Anda rencanakan untuk digunakan ... Anda benar-benar tidak ingin memformat ulang sistem file Anda.

-Saya ukuran inode

Ini adalah jumlah byte yang akan dialokasikan oleh sistem file / cadangan untuk setiap inode yang mungkin dimiliki sistem file. Spasi digunakan untuk menyimpan atribut inode (baca Intro to Inodes ). Di Ext3, ukuran default adalah 128. Di Ext4, ukuran default adalah 256 (untuk menyimpan extra_isizedan menyediakan ruang untuk inline extended-attributes). baca Linux: Mengapa mengubah ukuran inode?

Catatan: X byte disjkspace dialokasikan untuk setiap inode yang dialokasikan, apakah gratis atau digunakan, di mana X = ukuran inode.

Franklin Piat
sumber
5

bytes-per-inode menentukan berapa banyak inode yang dibuat untuk sistem file itu; inode-size menentukan seberapa besar masing-masing inode tersebut.

Anda memerlukan banyak inode jika Anda ingin meletakkan banyak file kecil (& / atau banyak direktori) pada file filesem.

AFAIK, Anda benar-benar hanya memerlukan inode yang lebih besar dari ukuran default 256 byte jika Anda ingin menyimpan atribut diperluas untuk file Anda. psusi mengatakan dalam komentar bahwa itu tidak benar.

PM 2Ring
sumber
4
Sebenarnya atribut yang diperluas disimpan dalam blok mereka sendiri daripada inode, jadi Anda tidak perlu inode yang lebih besar untuk mereka. Ada beberapa tambalan melayang-layang di milis agak baru untuk akhirnya menambahkan kemampuan untuk menyimpan atribut diperpanjang di inode jika mereka cukup kecil untuk masuk, tetapi jika mereka telah mencapai arus utama, itu akan sangat baru.
psusi
1

Skema sistem file yang sangat kasar:

|_|__inodes__|_______________________DATA_________________________________|
  • inode-ratio / bytes-per-inode = jumlah inode untuk area DATA
  • inode-size = ukuran setiap inode di area inode
sja
sumber
0

Saya benar-benar menyukai jawaban sja, itu memberi esensi perbedaan.

Ini hanya ekspansi saya sendiri (karena saya tidak dapat berkomentar atau memilih, baru saja memulai dengan stackexchange ini) dan saya ingin jawaban untuk diri saya sendiri dinyatakan secara seimbang dalam istilah non-teknis yang dapat dimengerti oleh pengguna yang perlu membuat keputusan selama volume data pengaturan tetapi belum tentu tahu semua detail di balik implementasi.

Persona / Objek: - volume data dalam perangkat penyimpanan - file dalam volume - perangkat penyimpanan, mereka diformat dan menyediakan blok byte dan alamatnya - lokasi file dalam penyimpanan

Tindakan: membuat / menghapus / mengganti nama file dan folder dengan sistem operasi dalam penyimpanan, file membaca / menulis / bergerak, perubahan izin, dll.

File ukuran N byte harus dibuat dalam "potongan" (blok). Meskipun secara teoritis orang dapat berpikir bahwa file dapat dikelola sebagai urutan byte tunggal (secara logis mereka dapat) semua yang kita perlukan untuk mengelola file dalam ruang akan menjadi indeks yang ditunjuk memberitahu beberapa properti file (nama dll) dan di mana setiap file dimulai pada penyimpanan. Namun karena cara perangkat keras dirancang dengan "bus" dan "blok" dan pertimbangan kinerja, "potongan" tersebut berukuran tertentu, dan kelipatan ukuran blok media (mis. 512 byte, 4096 byte) dan dikelola oleh lapisan inodes yang memberi tahu lapisan berikutnya tentang lokasi file dan bagaimana potongan digantung ketika mereka perlu ditemukan, dimuat ke memori dll.

Jika seseorang memiliki satu gulungan besar kertas (volume) dan harus merancang penyimpanan informasi untuk dokumen yang terbuat dari halaman (karakter atau bit informasi) untuk menyimpan dokumen multi halaman yang diperlukan adalah indeks (untuk menemukan dokumen), ruang penyimpanan untuk halaman (dengan beberapa posisi halaman sederhana). Dalam mekanisme pengumpulan Unix (inode) dan memotong halaman yang sebenarnya. inode-size adalah ukuran entri indeks (lebih atau kurang) bytes-per-inode adalah ukuran halaman

Efek mengubah dua pengaturan yang dipermasalahkan:

changin inode-size - biasanya tidak perlu diubah, tetap dengan default (sesuai tautan yang diposting di jawaban sebelumnya untuk diskusi)

bytes-per-inode - memengaruhi jumlah maksimum file yang dapat dibuat dalam volume (mungkin kinerja dan "pemborosan" byte yang tidak digunakan)

Kembali ke analogi gulungan kertas: Bayangkan harus menulis dan menyimpan dokumen dengan ukuran tertentu (file) dalam sistem seperti itu (atau banyak dokumen dengan berbagai ukuran) - jika ukuran halaman, yang ditampilkan selama "sistem penulisan dan penyimpanan" "definisi dan tidak fleksibel, sangat dokumen yang sama mungkin memerlukan banyak halaman, jika ukuran halaman" sistem "sangat besar dan ukuran dokumen kecil maka banyak kertas berpotensi terbuang dengan memiliki kosong dan pas file kecil dalam satu halaman. Jika ukuran halaman besar - ada lebih sedikit halaman yang perlu digunakan untuk dokumen tetapi mungkin ada banyak "ruang kosong terbuang" di halaman terakhir yang digunakan. Jadi itu semua tergantung ... pada ukuran file yang akan digunakan dan berapa jumlahnya. Pertimbangan lainnya adalah kecepatan menemukan dan membawa dokumen dari banyak halaman.

Semoga masuk akal (itu bagi saya) dan silakan berkomentar jika saya telah secara serius menyalahgunakan bagian desain ext atau opsi mkfs.

predmod
sumber