Inodes e Diretórios: Entendendo um Pouco Mais sobre Sistema de Arquivos

Em um dos artigos anteriores falamos sobre File System ou sistemas de arquivos. Hoje abordaremos mais um pouco o assunto. Incluiremos aqui uma breve explanação sobre inodes e diretórios.

Já sabemos pelo artigo anterior que o sistema de arquivos ext4 é o mais estável e mais utilizado atualmente no mundo Linux e que o BrtFS tem tudo para ser seu sucessor;

 

Inodes

 

Para cada arquivo existe um inode(lê-se ainôde), um número que armazena informações sobre o arquivo relacionado. Essas informações, também conhecidas como Metadatas, são importantes para administração do arquivo. O inode  guarda informações como permissões, tempo, grupo e proprietário do arquivo.

Na verdade das verdades verdadeiras, :), o número do inode é na verdade verdadeira o nome real do arquivo. Por exemplo, com o comando ls vejo que dentro do diretório /work tenho um arquivo com  o nome texto.txt e outro como o nome doc.txt;

[elder@centos work]$ ls -l
total 8
-rw-rw-r-- 1 elder elder 25 Jun 28 13:55 doc.txt
-rw-rw-r-- 1 elder elder  9 Jun 28 13:54 texto.txt

esse nome texto.txt e doc.txt são apenas para facilitar o entendimento nosso, meros mortais.

O nome que realmente o sistema usa para se comunicar é o do inode. Agora, acrescentando o “i” de inode ao “ls -l” podemos ver o bendito número marcado em vermelho.

[elder@centos work]$ ls -li
total 8
70339532 -rw-rw-r-- 1 elder elder 25 Jun 28 13:55 doc.txt
70339527 -rw-rw-r-- 1 elder elder  9 Jun 28 13:54 texto.txt

Uma coisa extremamente interessante é que o espaço disponível em disco não significa realmente o espaço disponível para armazenar arquivos. Confuso? só um pouco não é mesmo?

vejamos, vamos listar as partições do nosso HD com o comando df -h

[elder@centos work]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   46G  4.2G   42G  10% /
devtmpfs                 362M     0  362M   0% /dev
tmpfs                    371M   12K  371M   1% /dev/shm
tmpfs                    371M   15M  357M   4% /run
tmpfs                    371M     0  371M   0% /sys/fs/cgroup
/dev/sda1                497M  120M  378M  25% /boot
tmpfs                     75M     0   75M   0% /run/user/1000
/dev/sdb1                477M  2.3M  474M   1% /media/

Tomando como exemplo a linha marcada de vermelho, com nossos poderes de entendimento, lemos:

a partição sda1 tem um tamanho de 497 Mega Bytes, desses 497 MB foi já foi usado 120 MB e tem somente disponível 378MB  ou 25% de uso, grave esse 25%, ok? 🙂

Vamos lá, partimos para o i de inode no comando df.

[elder@centos work]$ df -i
Filesystem                Inodes  IUsed    IFree IUse% Mounted on
/dev/mapper/centos-root 48197632 142519 48055113    1% /
devtmpfs                   92529    360    92169    1% /dev
tmpfs                      94889      4    94885    1% /dev/shm
tmpfs                      94889    420    94469    1% /run
tmpfs                      94889     13    94876    1% /sys/fs/cgroup
/dev/sda1                 512000    330   511670    1% /boot
tmpfs                      94889      1    94888    1% /run/user/1000
/dev/sdb1                 128016     11   128005    1% /media/disco02

A mesma linha que antes está com 25% de uso agora está apenas com 1%. Mas agora referente aos inodes. Isso significa que se você tiver um disco com 90% livre para uso mas constando 100% já ocupados  de inodes seu HD não gravará mais nada, nadica de nada! Quando você cria uma partição no HD já é criada uma certa quantidade de inodes a serem relacionados com os arquivos a serem criados no futuro.

Acima. com o comando ls -li, vimos que o inode para o arquivo doc.txt é 70339532. Iremos acessar as informações contidas nesse inode com o comando debugfs.

Primeiro, sei que o arquivo está na partição /dev/sda1, então executo:

[elder@centos work]$ sudo debugfs /dev/sdb1

Próximo passo é executar o comando stat com o inode entre “< >”.

Digite e tecle enter:
 stat <70339532>

Resultado:

stat: Filesystem not open

Com você aconteceu o mesmo erro abaixo que ocorreu comigo, falando que o Systema de arquivos não está aberto, is not open?  é porque o systema de arquivos da partição sda1 não é ext4.

Vamos conferir. Execute df -hT:

[elder@centos ~]$ df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        46G  4.2G   42G  10% /
devtmpfs                devtmpfs  362M     0  362M   0% /dev
tmpfs                   tmpfs     371M   12K  371M   1% /dev/shm
tmpfs                   tmpfs     371M   15M  357M   4% /run
tmpfs                   tmpfs     371M     0  371M   0% /sys/fs/cgroup
/dev/sda1               xfs       497M  120M  378M  25% /boot
tmpfs                   tmpfs      75M     0   75M   0% /run/user/1000
/dev/sdb1               ext3      477M  2.3M  474M   1% /media/disco02

O sistema de arquivos do sda1 é XFS. Utilizamos outra partição ext, no caso pode ser a /dev/sdb1 que é ext3(uma versão anterior à ext4         \o/    🙂 somos espertos! )

Saia do debugfs digitando quit e teclando enter.

A partição /dev/sdb1 está montada em   /media/disco02. Conforme imagem acima. dentro de /media/disco02 existe um arquivo texto.txt com inode 11.

[elder@centos ~]$ ls -i /media/disco02/
11 texto.txt

Acesse novamente o debugfs para o sdb1

[elder@centos ~]$ sudo debugfs /dev/sdb1
debugfs 1.42.9 (28-Dec-2013)
debugfs:

Digite  stat <11> e veja informação do inode

[elder@centos ~]$ sudo debugfs /dev/sdb1
debugfs 1.42.9 (28-Dec-2013)
debugfs:  stat <11>
Inode: 11   Type: regular    Mode:  0664   Flags: 0x0
Generation: 2573227644    Version: 0x00000001
User:  1000   Group:  1000   Size: 4
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 2
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x5953ce99 -- Wed Jun 28 12:43:21 2017
atime: 0x5953ce90 -- Wed Jun 28 12:43:12 2017
mtime: 0x5953ce99 -- Wed Jun 28 12:43:21 2017
BLOCKS:
(0):1025
TOTAL: 1

Conseguiu entender alguma coisa? acho que nem eu :), mas pelo menos acho que sabemos o que é um inode, não é mesmo?

E diretórios?

 

Diretórios

 

Lembra que falamos que nomes de arquivos são para pessoas iguais à nós? que o sistema enxerga apenas números? no caso inodes? então, para gerenciar os nomes o sistema usa um arquivo especial conhecido como diretório ou directory em inglês. Na verdade estou enrolando um pouco;  pasta ou diretório é o que você já conhece, mas para o sistema é um arquivo especial que contém um número inode e uma lista de arquivos juntamente com os respectivos inodes desses.

O único diretório que tem inode fixo é o /. Isso mesmo essa barra(/) é um diretório. Não parece mais é, seu nome é raiz ou root.

Por exemplo, vamos supor que queira acessar o arquivo hosts que está dentro de etc que , por sua vez, está dentro da raiz(/etc/hosts). Osistema acessa o inode da raiz “/”, depois o do diretório “etc” e em  sequência o inode do “hosts”.

Bom, espero que tenham gostado. Inté!

Siga-nos em nossas redes:

Link Facebook: https://www.facebook.com/gnulinuxbr

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *