Você sabe o que é INODE?

Creio que você já deve ter se perguntado porque o pendrive de 1.5G mostra disponível apenas 1.38G, ou mais, o recém adquirido HD de 80G me disponibiliza um pouco menos, por volta de 78G, ou mesmo um disquete de 1.44M que só dispõe 1.36M. Afinal, pra onde foram esses bytes que na hora da venda anunciam, mas quando vou usar, não estão disponíveis?

[ Hits: 192.240 ]

Por: Carlos Vinícius Braga dos Santos em 02/07/2007 | Blog: http://slaypher.wordpress.com


Links simbólicos e hard links



Vamos começar então executando o seguinte comando e temos o resultado:

$ ls -i
231362 exerc.txt
274305 guardar.log

Aqui nós temos 2 arquivos e os números antes do nome é o inode de cada um. Vamos aproveitar o embalo e entender os conceitos de link simbólico e hard link que são comentários ao usar o comando ln para a criação de links.

Quando usamos o comando "ln -s" estamos criando um link simbólico para um determinado arquivo. Esse tipo de link segue os padrões Windows, que é criado um tipo de arquivo especial que contém somente o caminho ou o nome do arquivo original. Veja o exemplo.

$ ls -lhi
231362 -rw-r--r-- 1 slaypher slaypher 293 2007-06-11 19:58 exerc.txt
274305 -rw-r--r-- 1 root root 1.1K 2007-05-04 02:23 guardar.log

Com isso temos uma listagem mais detalhada dos nossos arquivos. O que vamos fazer é criar um link simbólico para o arquivo exerc.txt que chamaremos de exercicio1, para isso basta usando o seguinte comando:

$ ln -s exerc.txt exercicio1
$ ls -lhi

231362 -rw-r--r-- 1 slaypher slaypher 293 2007-06-11 19:58 exerc.txt
257637 lrwxrwxrwx 1 slaypher slaypher 9 2007-06-19 00:28 exercicio1 -> exerc.txt
274305 -rw-r--r-- 1 root root 1.1K 2007-05-04 02:23 guardar.log

Temos o seguinte resultado, de início vemos que a letra "l" está definida no nosso exercício1, indicando que ele é um link. Mas agora vem o que já não é surpresa pra você, o tamanho desse link são 9 bytes, ou seja, o tamanho do nome do arquivo que criamos o link.

Outro detalhe importante é que esse link possui um inode diferente do arquivo original, ou seja, trata-se oficialmente de um arquivo diferente, mas que serve como "apontador" para aquele que contém descrito dentro dele. Agora vamos criar um hard link usando o seguinte comando:

$ ln exerc.txt exercicio2
$ ls -lhi

282450 -rw-r--r-- 2 slaypher slaypher 293 2007-06-19 00:35 exerc.txt
257637 lrwxrwxrwx 1 slaypher slaypher 9 2007-06-19 00:28 exercicio1 -> exerc.txt
282450 -rw-r--r-- 2 slaypher slaypher 293 2007-06-19 00:35 exercicio2
274305 -rw-r--r-- 1 root root 1.1K 2007-05-04 02:23 guardar.log

Bingo! Observe agora que o link exercicio2 e o nosso arquivo original exerc.txt possuem o mesmo inode, então trata-se exatamente do mesmo arquivo.

Com isso podemos criar em diretórios distintos hard links para um mesmo arquivo, mas que tenham permissões diferentes para cada usuário, definindo políticas bem específicas sobre um determinado arquivo sem ter que ficar enviando cópias para cada usuário após uma mudança, por exemplo.

Você pode brincar e entender melhor o funcionamento do inode copiando, movendo e renomeando arquivos, tenho certeza que entenderá melhor o funcionamento do seu sistema de arquivos.

Página anterior     Próxima página

Páginas do artigo
   1. Definição de INODE
   2. Links simbólicos e hard links
   3. Considerações finais
Outros artigos deste autor

Backup automatizado e seguro usando SSH / SCP / SFTP

Traduzir dicas e mensagens do login

Utilizando atributos em partições ReiserFS

Leitura recomendada

Gravando com cdrecord

Tunando sistemas de arquivos para GNU/Linux

Osiris - Integridade do sistema de arquivos

Adicionando Novo Disco - RHEL e CentOS

Entendendo as permissões de arquivos (chmod)

  
Comentários
[1] Comentário enviado por engos em 02/07/2007 - 07:27h

Olá slaypher.

Há muito desisti de comentar ou dar notas em artigos, pois a maioria são cópias de artigos de outros sites, ou simplesmente cópias de outros artigos desse site, e quando não o são, é puro lixo que nem vale a pena terminar de ler ou opnar.

Fico contente em ver um artigo com um assunto novo e muito bem feito.

Parabéns, espero que continue compartilhando conosco artigos desse n
ivel!

Abraços.

[2] Comentário enviado por jeanleonino em 02/07/2007 - 07:41h

Esse eu achei massa!

É de sua autoria?

[3] Comentário enviado por linuxalexsandro em 02/07/2007 - 07:46h

Parabéns pelo artigo. Com ele pude aprender mais sobre link simbólico e, principalmente, sobre hard link.

[4] Comentário enviado por slaypher em 02/07/2007 - 08:47h

Olá,

Agradeço a todos pelo Feedback, e espero sempre trazer artigos com assuntos interessantes e pouco abordados, por isso não tenho uma freqüência muita alta de publicações.

A idéia do artigo surgiu em uma conversa com um colega do trabalho, enquanto conversávamos sobre as provas da LPI.

[]'s

[5] Comentário enviado por thiagop em 02/07/2007 - 08:47h

Essa diferença dos Soft Link e dos Hard Link fizeram meu dia! heauhuaehae

Mto bom cara, parabéns!

[6] Comentário enviado por removido em 02/07/2007 - 12:56h

Simples e objetivo. Um ótimo artigo.

[]'s

[7] Comentário enviado por vhprice em 02/07/2007 - 14:33h

Parabéns!

Muito explicativo. Aos que já sabiam, mais uma clareada e aos que não sabiam uma aula rápida.

Mto bom msm.

[8] Comentário enviado por falconi em 02/07/2007 - 15:41h

Apenas uma informacao adicional.

O INODE é implementado pelo file system utilizado pelo sistema operacional. Ele consome espaço para guardar os atributos dos arquivos, isto e' um fato.

Porem, o fato de voce comprar um HD de 160GB e na verdade ter 149GB de espaço se deve ao fato de o fabricante produzir um HD de 160.000.000.000 bytes, mas na hora de converter para GB ele divide por 1000 3 vezes (provavelmente por orientação do departamento de marketing). O certo e' dividir por 1024 bytes 3 vezes, pois 1GB é 1024MB que é 1024KB que é 1024 bytes.

O meu sistema operacional avisa que meu HD de supostamente 160GB tem 152587MB, ou seja, 149GB (152587/1024). O INODE está gastando espaço dos 149GB e não dos "160GB".

Para informações mais detalhadas sobre INODE acesse:

http://en.wikipedia.org/wiki/Inode

[ ]'s
Falconi

[9] Comentário enviado por y2h4ck em 02/07/2007 - 17:39h

então quer dizer que meu hd de 80 gb mostra 78 gb pq o Inode comeu 2 Gb ? é isso ?

Muito interessante ! o_o

Vou remover os inodes do meu disco pq estão ocupando muito espaço viu ... :P

rsrsrs

[10] Comentário enviado por maykonhammer em 02/07/2007 - 18:39h

Parabéns pelo artigo, simples e direto...

[11] Comentário enviado por slaypher em 02/07/2007 - 18:46h

Falconi,

Se você reparar bem, ao usar algum utilitário que detalhe o tamanho exato do disco rígido, o tamanho não é exato como diz, mas de fato ao arredondar, alguns bytes são perdidos nessa conta.

[]'s

[12] Comentário enviado por eyglys em 02/07/2007 - 22:17h

O artigo está bom, mas me sinto na obrigação de corrigir a seguinte informação:
"Bingo! Observe agora que o link exercicio2 e o nosso arquivo original exerc.txt possuem o mesmo inode, então trata-se exatamente do mesmo arquivo.

Com isso podemos criar em diretórios distintos hard links para um mesmo arquivo, mas que tenham permissões diferentes para cada usuário, definindo políticas bem específicas sobre um determinado arquivo sem ter que ficar enviando cópias para cada usuário após uma mudança, por exemplo. "

Como o nosso amigo disse, os arquivos possuem o mesmo inode, isso significa que os arquivos irão apontar para a mesma região do disco, irão possuir AS MESMAS PERMISSÕES, O MESMO PROPRIETÁRIO, O MESMO GRUPO, pois essas informação são guardadas no INODE.

Do meu ponto de vista, esse deslize não tira o brilho do artigo, já que existem muitas outras utilidades para HARD LINK.

[13] Comentário enviado por slaypher em 02/07/2007 - 22:56h

eyglys,

Obrigado pela correção e pelo elogio ao artigo. Foi muito bem destacado da sua parte, de fato foi um belo deslize, é até contraditório pensar da forma que expliquei, peço desculpas por isso e gostaria de lhe pedir alguns bons exemplos de uso para o Hard Link para que possamos esclarecer melhor a sua utilidade.

[]'s

[14] Comentário enviado por eyglys em 02/07/2007 - 23:34h

Utilidades para o Hard Link:
1 - Criar cópias de arquivos comuns para usuários, sem revelar (diretamente) onde esse arquivo está instalado
2 - Diminuir a quantidade de INODES no disco
3 - Acelerar o acesso ao arquivo (como o link possui o mesmo INODE, o gerenciador de arquivos não necessita fazer uma consula ao INODE do link simbolico, consultar o HD para saber para onde ele aponta, para só então acessar o arquivo verdadeiro, esse acesso é feito diretamente)
4 - Backup dos ponteiros dos arquivos (Talvez essa seja uma das principais utilidades para os HARD LINKS, pois um arquivo só é perdido quando não se existe nenhum ponteiro, nenhum meio de se chegar até ele. Quando vc cria uma pasta de backup contendo apenas HARD LINK para os arquivos originais, vc terá uma "cópia do ponteiro do arquivo", o que serve como "backup de onde o arquivo está no HD", para o caso de uma remoção acidental. ESSE BACKUP NÃO COPIA O CONTEÚDO DO ARQUIVO, SOMENTE O LOCAL ONDE O ARQUIVO SE ENCONTRA NO HD)

[15] Comentário enviado por slaypher em 03/07/2007 - 00:03h

eyglys,

Obrigado pelo complemento, as únicas razões que havia conseguido pensar para o uso de HardLinks foi a primeira e a última da sua explicação, não havia pensado nessas outras utilidades.

Mas vale ressaltar que mesmo usando HardLinks para backup, caso ocorra um dano no arquivo, seja por desligamento inesperado ou algo assim, o arquivo de "backup" também sofrerá o mesmo dano, por isso deve-se tomar cuidado, afinal de conta, trata-se exatamente do mesmo arquivo.

Outro detalhe é que não podemos usar HardLinks entre partições e HD's diferentes e nem em diretórios. Mas é uma forma bem interessante de manter uma cópia de segurança, pois um HardLink ocupa apenas um inode e não mais um espaço na partição corrente como ocorreria se fizesse uma cópia.

[]'s

[16] Comentário enviado por manfilho em 03/07/2007 - 20:03h

Muito legal o artigo, com as contribuições do eyglys e falconi ficou melhor ainda
Parabéns comunidade, mais um ponto para nós! :)

[17] Comentário enviado por dailson em 10/07/2007 - 17:06h

Excelente artigo. Mas é bom considerar que os HDs são vendidos em Milhões de Bytes e não em Megabytes como citou o nosso companheiro falconi.
Parabéns!

[18] Comentário enviado por JowR em 13/07/2007 - 12:27h

Eu sempre achei que essa diferença era um "arredondamento". :$

[19] Comentário enviado por angeloshimabuko em 14/07/2007 - 17:58h

A introdução não está correta. As diferenças indicadas ocorrem pelo uso inadequado de unidades. Os fabricantes de mídias de armazenamento usam as unidades do SI, i.e., usam a base 10. Assim, 80 GB equivalem a 80 multiplicado por (10 elevado à 9), ou seja, 80.000.000.000 bytes (na verdade os valores não são exatos). Já o sistema operacional (Linux, neste caso) usa ferramentas (fdisk, ls, df), cujas unidades usam a base 2. Assim, um disco de 80 GB apareceria no fdisk como possuindo aproximadamente 74,5 GiB (gibibytes, onde um GiB equivale a 2 elevado a 30).

As considerações finais também contêm um erro: os valores indicados como sendo os tamanhos possíveis dos inodes (ou nós-i em português), na verdade são valores para os tamanhos dos blocos. Um nó-i armazenas as informações sobre um arquivo (os metadados) enquanto um bloco armazena os dados do arquivo.

[20] Comentário enviado por GilsonDeElt em 22/07/2007 - 13:30h

Muito bom!
Finalmente aprendi algo legal sobre os Hard e Soft Links.
Os "comentaristas" também tão de parabéns, pois enriquecem o artigo.
Valeu!

[21] Comentário enviado por brunnoslaypher em 23/10/2007 - 20:48h

Muito bem!!!

E ai code vc sumiu, abandonou o amigo, mas tudo bem, as coisas e assim mesmo, blz falow

[22] Comentário enviado por Nick em 01/11/2007 - 08:20h

Comprei um hd de 250G, mas depois da formatação, o rapaz caiu pra 223G. Olha o tanto de espaço que perdi...
POrem, esse artigo me tirou varias duvidas. Muito bom artigo!

[23] Comentário enviado por removido em 03/05/2008 - 19:45h

Cara, perfeito esse, eu realmente ficava me perguntando onde ficava ou pra onde ia "o resto do meu pendrive"...

[24] Comentário enviado por adrianoturbo em 27/06/2008 - 10:24h

Muito interessante o conceito sobre Inode ,muito bom.

[25] Comentário enviado por drc em 02/07/2008 - 12:13h

assumo que sempre tive curiosidade mas nunca procurei sobre o assunto.
muito bom, agora eu sei

[26] Comentário enviado por volcoov em 08/07/2008 - 11:46h

muito bom o post cara, muitas pessoas já ouviram falar mas não fazem nem ideia do que é... E isso cai na LPI em!

valeeu

[27] Comentário enviado por marcalledo em 19/09/2008 - 12:37h

Gostaria de saber se o I-node ocupa a memória principal quando os arquivos estiverem abertos e se a tabela de alocação de arquivos precisa ser carregada na memória principal

[28] Comentário enviado por removido em 29/01/2009 - 21:50h

Só mais uma informação:
Há uma diferença ente B "MAIÚSCULO" e b "minúsculo".

Ex.: GB é diferente de Gb.

GB = Giga Byte
Gb = Giga bit

--------------------
1 Bit (b) = 1 bit (b), que pode ser 1 ou 0
1 Byte (B) = 8 bits (b)
--------------------
1 Kilobite (Kb) = 1000 bits (b)
1 Kilobyte (KB) = 1024 bytes (B)
--------------------
1 Megabit (Mb) = 1000 Kilobits
1 Megabyte (MB) = 1024 Kilobyte
--------------------
1 Gigabit (Gb) = 1000 Megabits
1 Gigabyte (GB) = 1024 Megabites
--------------------

O correto então seria informar por exemplo que o HD é de 80 "Gb" e não em "GB" pois 1 Gb = 1.000 Megabits = 1.000.000 Kilobits = 1.000.000.000 Bits que é diferente de 1 GB = 1024 MegaBytes = 1.048.576 KiloBytes = 1.073.741.824 Bytes.

Se o HD é de 80 (Gb)
80 * 1000) = 80.000 Megabits (Mb)
Então:
80.000(Mb) / 1024 = ~78 GigaBytes (GB)


[29] Comentário enviado por airtonbjunior em 21/05/2009 - 20:33h

Ajudou muito! Parabéns!

[30] Comentário enviado por hstreb em 28/07/2009 - 14:32h

bah estava procurando uma coisa (inode) achei outra (diferença entre Mb e MB)...
estava numa briga ferrenha com um colega meu por isso...

valeu a dica gabrielsa...


[31] Comentário enviado por removido em 31/07/2009 - 15:01h

Muito bom artigo...

[32] Comentário enviado por removido em 11/08/2009 - 14:53h

Ótimo artigo. Tirou todas as dúvidas que eu tinha.

[33] Comentário enviado por brunosf em 03/02/2011 - 10:23h

Muito bom!deu uma clareada no assunto!

[34] Comentário enviado por moskadebar em 01/06/2011 - 19:51h

Muito com o artigo está de parabéns.

[35] Comentário enviado por hugo luiz em 10/06/2011 - 11:14h

Como foi boa a existência da internet

[36] Comentário enviado por gilsoncwb em 05/01/2012 - 09:59h

slaypher Muito bom seu artigo simples e direto .

[37] Comentário enviado por max_fernandes em 17/04/2012 - 10:40h

Valeu cara, parabéns pelo ótimo post, bem explicado e com excelente contexto para um bom entendimento!!! Parabéns!!

[38] Comentário enviado por guidoseverus em 12/03/2013 - 11:14h

Vlw Slay, esclareceu minhas dúvidas, brigadão.

[39] Comentário enviado por vinnysoft em 12/12/2013 - 09:36h

Excelente artigo! Já estava cansado de procurar sobre INODE, até que encontrei este. Parabéns!

[40] Comentário enviado por alexandremc em 27/02/2014 - 16:17h

Desculpe ser o advogado do diabo.

Não sei como abordar o tema sem ser dessa forma mais..

O amigo autor se equivoca em alguns pontos:

1) O Tamanho do HD é porque 1MB(MegaByte) = 1024KB (KiloBytes) porém o fabricante arredonda para 1000KB a partir da conversão de MB, ou seja de MB para GB(GigaByte) ele arredonda e de GB par TB(TeraByte).

Os meta dados (Como inode e sua estrutura) de fato consomem sim espaço, mas na partição já formatada, o sistema de arquivos e instalado em uma partição, logo não existe nenhuma relação com o tamanho do disco reconhecido.

OBS: Em GNU/Linux diretórios são arquivos.

2) Links Simbólicos não são atalhos como no Windows. Porque o Windows a partir do XP (Talvez 2000 não lembro) tem link´s simbólicos e hardlink.

São forma diferentes de referenciar um caminho, o atalho do Windows está mais para lançador, o conceito de soft link tem natureza diferente.

O Hard link pode acrescentar, é um ponteiro para o arquivo físico gravado no disco, você pode criar 2 arquivos que apontam para a mesma região de memória, hardlink só funciona na mesma partição.

Uma função muito útil é para organizar arquivos, exemplo, eu baixo por utorrent na pasta Downloads e tenho um outro disco com os arquivos organizados, Filmes, Aulas, Livros etc, eu crio hardlink para essas pastas, dessa forma o espaço ocupado em disco é o mesmo, pois não se trata de uma cópia e sim de um ponteiro para o arquivo físico.

Mais informações:
http://www.vivaolinux.com.br/dica/Link-simbolico-e-hardlink

Abraços

[41] Comentário enviado por silascardoso em 24/08/2014 - 17:19h

Pessoal, esse artigo está completamente equivocado, essa diferença entre o tamanho do disco declarado pelo fabricante e o tamanho real, não tem nada com o INODE, como bem o amigo disse em outro comentário:

"Porem, o fato de voce comprar um HD de 160GB e na verdade ter 149GB de espaço se deve ao fato de o fabricante produzir um HD de 160.000.000.000 bytes, mas na hora de converter para GB ele divide por 1000 3 vezes (provavelmente por orientação do departamento de marketing). O certo e' dividir por 1024 bytes 3 vezes, pois 1GB é 1024MB que é 1024KB que é 1024 bytes.

O meu sistema operacional avisa que meu HD de supostamente 160GB tem 152587MB, ou seja, 149GB (152587/1024). O INODE está gastando espaço dos 149GB e não dos "160GB"."

[42] Comentário enviado por vivalatequila em 09/06/2015 - 21:54h


Obrigado por compartilhar.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts