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 BtrFS tem tudo para ser seu sucessor;
Atualização(26/09/2019): O Sistema de Arquivos BtrFS parece está ficando para trás. Demorando muito para amadurecer. A própria Red Hat irá retirar o BtrFS do seu SO em novas versões.
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 já foi usado 120 MB e tem somente disponível 378MB ou 25% de uso, grave esse 25%, ok? 🙂
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/sda1
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. 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 mas é, 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). O sistema 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
Link WhatsApp: https://chat.whatsapp.com/JbxmZmLvIIGCDLjd1VFMUO
Link Telegram: https://t.me/joinchat/AAAAAD8liymcvJPhFbWjNQ
G+: https://plus.google.com/communities/112884163231229355409
YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ
2 Comments to “Inodes e Diretórios: Entendendo um Pouco Mais sobre Sistema de Arquivos”