Por que os diretórios / home, / usr, / var, etc. todos têm o mesmo número de inode (2)?

31

Acho que no meu diretório raiz, existem alguns diretórios que têm o mesmo número de inode:

$ ls -aid */ .*/

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

Só sei que os nomes dos diretórios são mantidos no diretório pai e seus dados são mantidos no inode dos próprios diretórios.

Estou confuso aqui.

É isso que penso quando rastreio o nome do caminho / home / user1.

  • Primeiro, entro no inode 2, que é o diretório raiz que contém as listas de diretórios.
  • Então, encontro o nome home emparelhado com o inode 2.
  • Então eu volto para o disco para encontrar o inode 2?
  • E eu recebo o nome user1 aqui?
youxiao
fonte
2
Veja também: grymoire.com/Unix/Inodes.html
Richard Neumann

Respostas:

39

Eles estão em dispositivos diferentes.

Se olharmos para a saída de stat, também podemos ver o dispositivo em que o arquivo está:

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

Portanto, esses dois estão em dispositivos / sistemas de arquivos separados. Os números de inode são únicos apenas dentro de um sistema de arquivos, portanto não há nada incomum aqui. No ext2 / 3/4, o inode 2 também é sempre o diretório raiz , então sabemos que eles são as raízes dos seus respectivos sistemas de arquivos.

A combinação do número do dispositivo + inode provavelmente será única em todo o sistema. (Existem sistemas de arquivos que não têm inodes no sentido tradicional, mas acho que eles ainda precisam falsificar algum tipo de identificador exclusivo em seu lugar.)

Os números dos dispositivos parecem os mesmos que os mostrados nos nós do dispositivo, portanto, /dev/sda1mantém o sistema de arquivos em que /está:

# ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Sep 21 10:45 /dev/sda1
ilkkachu
fonte
Obrigado, agora eu recebo stat, útil para mim, vou aprender a usá-lo.
youxiao
1
Para o registro, todos os sistemas de arquivos têm algum equivalente, mesmo quando alocam inodes dinamicamente. Por exemplo, no BTRFS (que faz alocação dinâmica de inode, em contraste com as tabelas estáticas de ext2 / 3/4), o valor específico do inode usado assim é 256 (porque tudo o mais baixo é reservado para entradas especiais nas árvores de metadados) .
Austin Hemmelgarn
1
@ AustinHemmelgarn, alguns sistemas de arquivos como FAT ou ISO9660 não têm inodes em nenhum sentido significativo da palavra. O driver do sistema de arquivos faz algumas diligências para parecer com o resto do sistema que eles fazem.
Mark
@ Mark: O único "sentido significativo da palavra", segundo o padrão que a define, é "número de série do arquivo [único dentro do dispositivo]". Insistir em pensar em inodes como uma estrutura de dados em disco específica é tão atrasado quanto pensar em ttys como em teletipos mecânicos.
R ..
1
@R .., suponho que por essa definição o sistema de arquivos FAT tenha inodes, mas o "número de série do arquivo" para um determinado arquivo em um sistema de arquivos FAT não é estável entre montagens, ou mesmo ao longo do tempo em uma única montagem: se a pressão da memória faz com que uma estrutura de inode sintetizada seja removida do cache, o arquivo obtém um novo número na próxima vez que algo solicitar seus dados de inode.
Mark
24

O número de inode de qualquer arquivo especificado é exclusivo para o sistema de arquivos, mas não necessariamente exclusivo para todos os sistemas de arquivos montados em um determinado host. Quando você possui vários sistemas de arquivos, verá números de inodes duplicados entre os sistemas de arquivos, isso é normal.

John
fonte