Mengapa direktori / home, / usr, / var, dll. Semua memiliki nomor inode yang sama (2)?

31

Saya menemukan bahwa di bawah direktori root saya, ada beberapa direktori yang memiliki nomor inode yang sama:

$ ls -aid */ .*/

2 home/ 2 tmp/ 2 usr/ 2 var/ 2 ./ 2 ../ 1 sys/ 1 proc/

Saya hanya tahu bahwa nama direktori disimpan di direktori induk, dan datanya disimpan di inode direktori itu sendiri.

Saya bingung di sini.

Inilah yang saya pikirkan ketika saya melacak pathname / home / user1.

  • Pertama saya masuk ke inode 2 yang merupakan direktori root yang berisi daftar direktori.
  • Kemudian saya menemukan nama home paired dengan inode 2.
  • Jadi saya kembali ke disk untuk menemukan inode 2?
  • Dan saya mendapatkan nama user1 di sini?
youxiao
sumber
2
Lihat juga: grymoire.com/Unix/Inodes.html
Richard Neumann

Jawaban:

39

Mereka ada di perangkat yang berbeda.

Jika kita melihat output dari stat, kita juga dapat melihat perangkat di mana file itu aktif:

# stat / | grep Inode
Device: 801h/2049d      Inode: 2           Links: 24
# stat /opt | grep Inode
Device: 803h/2051d      Inode: 2           Links: 5

Jadi keduanya berada di perangkat / sistem file yang terpisah. Nomor inode hanya unik dalam sistem file sehingga tidak ada yang aneh di sini. Pada ext2 / 3/4 inode 2 juga selalu direktori root , jadi kita tahu mereka adalah root dari sistem file masing-masing.

Kombinasi nomor perangkat + inode cenderung unik di seluruh sistem. (Ada filesystem yang tidak memiliki inode dalam pengertian tradisional, tapi saya pikir mereka masih harus memalsukan semacam pengidentifikasi unik di tempat mereka.)

Nomor perangkat di sana tampaknya sama dengan yang ditunjukkan pada node perangkat, jadi /dev/sda1tahan sistem file di mana /:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1
ilkkachu
sumber
Terima kasih, sekarang saya dapat stat, berguna untuk saya, saya akan belajar menggunakannya.
youxiao
1
Sebagai catatan, semua sistem file memiliki beberapa yang setara, bahkan ketika mereka secara dinamis mengalokasikan inode. Misalnya, pada BTRFS (yang melakukan alokasi inode dinamis, berbeda dengan tabel inode statis ext2 / 3/4), nilai inode tertentu yang digunakan seperti ini adalah 256 (karena semuanya lebih rendah disediakan untuk entri khusus di pohon metadata) .
Austin Hemmelgarn
1
@AustinHemmelgarn, beberapa sistem file seperti FAT atau ISO9660 tidak memiliki inode dalam arti kata yang berarti. Driver filesystem melakukan sedikit-tangan untuk membuatnya melihat ke seluruh sistem yang mereka lakukan.
Markus
@ Mark: Satu-satunya "arti kata yang bermakna" per standar yang mendefinisikannya adalah "mengajukan nomor seri [unik di dalam perangkat]". Bersikeras memikirkan inode sebagai struktur data on-disk tertentu adalah tentang mundur seperti memikirkan ttys sebagai teletype mekanis.
R ..
1
@R .., saya kira dengan definisi itu filesystem FAT memiliki inode, tetapi "nomor seri file" untuk file yang diberikan pada filesystem FAT tidak stabil di seluruh mount, atau bahkan dari waktu ke waktu pada mount tunggal: jika tekanan memori menyebabkan struktur inode yang disintesis untuk diusir dari cache, file mendapatkan nomor baru saat berikutnya sesuatu meminta data inode-nya.
Markus
24

Nomor inode dari setiap file yang diberikan adalah unik untuk sistem file, tetapi tidak harus unik untuk semua sistem file yang dipasang pada host yang diberikan. Ketika Anda memiliki banyak filesystem, Anda akan melihat nomor inode duplikat antara filesystem, ini normal.

John
sumber