Perché le directory / home, / usr, / var, ecc. Hanno tutte lo stesso numero di inode (2)?


31

Trovo che nella mia directory principale ci siano alcune directory che hanno lo stesso numero di inode:

$ ls -aid */ .*/

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

So solo che i nomi delle directory sono conservati nella directory principale e i loro dati sono conservati nell'inode delle directory stesse.

Sono confuso qui.

Questo è quello che penso quando seguo il percorso / home / user1.

  • Per prima cosa arrivo all'inode 2 che è la directory principale che contiene gli elenchi di directory.
  • Quindi trovo il nome home associato a inode 2.
  • Quindi torno sul disco per trovare l'inode 2?
  • E ottengo il nome user1 qui?

Risposte:


39

Sono su dispositivi diversi.

Se guardiamo l'output di stat, possiamo anche vedere il dispositivo su cui si trova il file:

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

Quindi quei due sono su dispositivi / filesystem separati. I numeri di Inode sono univoci all'interno di un filesystem, quindi qui non c'è nulla di insolito. In ext2 / 3/4, l'inode 2 è sempre anche la directory principale , quindi sappiamo che sono le radici dei rispettivi file system.

È probabile che la combinazione di numero dispositivo + inode sia unica su tutto il sistema. (Ci sono filesystem che non hanno inode nel senso tradizionale, ma penso che debbano comunque falsificare una sorta di identificatore univoco al loro posto.)

I numeri dei dispositivi lì sembrano essere gli stessi mostrati sui nodi del dispositivo, quindi /dev/sda1contiene il filesystem in cui si /trova:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1

Grazie, ora ottengo stat, utile per me, imparerò ad usarlo.
Youxiao,

1
Per la cronaca, tutti i filesystem hanno degli equivalenti, anche quando allocano dinamicamente gli inode. Ad esempio, su BTRFS (che esegue l'allocazione dinamica degli inode, a differenza delle tabelle di inode statiche di ext2 / 3/4), il particolare valore di inode utilizzato in questo modo è 256 (perché tutto ciò che è inferiore è riservato per voci speciali negli alberi dei metadati) .
Austin Hemmelgarn,

1
@AustinHemmelgarn, alcuni filesystem come FAT o ISO9660 non hanno inode in alcun senso significativo della parola. Il driver del filesystem fa un po 'di mano per farlo sembrare al resto del sistema che fanno.
Segna il

@Mark: l'unico "significato significativo della parola" per lo standard che lo definisce è "numero di serie del file [univoco nel dispositivo]". Insistere sul pensare agli inode come una particolare struttura di dati su disco equivale a pensare ai tty come ai teletipi meccanici.
R ..

1
@ R. fa sottrarre una struttura di inode sintetizzata dalla cache, il file ottiene un nuovo numero la prossima volta che qualcosa richiede i suoi dati di inode.
Segna il

24

Il numero di inode di un determinato file è univoco per il filesystem, ma non necessariamente univoco per tutti i filesystem montati su un determinato host. Quando hai più filesystem, vedrai numeri di inode duplicati tra i filesystem, questo è normale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.