Dlaczego wszystkie katalogi / home, / usr, / var itp. Mają ten sam numer i-węzła (2)?

31

Uważam, że w moim katalogu głównym jest kilka katalogów, które mają ten sam numer i-węzła:

$ ls -aid */ .*/

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

Wiem tylko, że nazwy katalogów są przechowywane w katalogu nadrzędnym, a ich dane są przechowywane w węźle samych katalogów.

Jestem tu zmieszany.

Tak myślę, gdy śledzę ścieżkę / home / user1.

  • Najpierw wchodzę do i-węzła 2, który jest katalogiem głównym zawierającym listy katalogów.
  • Potem znajduję nazwę domu połączoną z inode 2.
  • Więc wracam na dysk, żeby znaleźć i-węzeł 2?
  • Dostaję tutaj nazwę user1?
youxiao
źródło
2
Zobacz także: grymoire.com/Unix/Inodes.html
Richard Neumann

Odpowiedzi:

39

Są na różnych urządzeniach.

Jeśli spojrzymy na wynik stat, możemy również zobaczyć urządzenie, na którym znajduje się plik:

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

Więc te dwa są na osobnych urządzeniach / systemach plików. Numery i-węzłów są unikalne tylko w systemie plików, więc nie ma w tym nic niezwykłego. Na ext2 / 3/4 i-węzeł 2 jest również zawsze katalogiem głównym , więc wiemy, że są to katalogi główne odpowiednich systemów plików.

Kombinacja numeru urządzenia + i-węzła prawdopodobnie będzie unikalna w całym systemie. (Istnieją systemy plików, które nie mają i-węzłów w tradycyjnym znaczeniu, ale myślę, że i tak muszą sfałszować jakiś unikalny identyfikator na swoim miejscu).

Numery urządzeń wydają się być takie same, jak te pokazane w węzłach urządzenia, więc /dev/sda1utrzymuje system plików, w którym /jest włączony:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1
ilkkachu
źródło
Dziękuję, teraz dostaję stat, przydatny dla mnie, nauczę się go używać.
youxiao,
1
Dla przypomnienia, wszystkie systemy plików mają pewien ekwiwalent, nawet jeśli dynamicznie przydzielają i-węzły. Na przykład w BTRFS (który dokonuje dynamicznej alokacji i-węzłów, w przeciwieństwie do statycznych tabel i-węzłów ext2 / 3/4), konkretna używana w ten sposób wartość i-węzła wynosi 256 (ponieważ wszystko niższe jest zarezerwowane dla specjalnych wpisów w drzewach metadanych) .
Austin Hemmelgarn,
1
@AustinHemmelgarn, niektóre systemy plików, takie jak FAT lub ISO9660, nie mają i-węzłów w znaczącym znaczeniu tego słowa. Sterownik systemu plików robi coś, by spojrzeć na resztę systemu.
Mark
@ Mark: Jedynym „znaczącym sensem tego słowa” według standardu, który go definiuje, jest „numer seryjny pliku [unikalny w urządzeniu]”. Naleganie na myślenie o igłach jako szczególnej strukturze danych na dysku jest tak samo zacofane jak myślenie o ttys jak o mechanicznych teletypach.
R ..
1
@R .., przypuszczam, że zgodnie z tą definicją system plików FAT ma i-węzły, ale „numer seryjny pliku” dla danego pliku w systemie plików FAT nie jest stabilny w trakcie montowań, a nawet w czasie na jednym montowaniu: jeśli presja pamięci powoduje eksmisję zsyntetyzowanej struktury i-węzła z pamięci podręcznej, plik otrzymuje nowy numer, gdy następnym razem coś zażąda danych i-węzła.
Mark
24

Numer i-węzła dowolnego pliku jest unikalny dla systemu plików, ale niekoniecznie jest unikalny dla wszystkich systemów plików zamontowanych na danym hoście. Jeśli masz wiele systemów plików, zobaczysz zdublowane numery i-węzłów między systemami plików, jest to normalne.

Jan
źródło