Sistemas de Arquivos no Linux: Tipos, Estruturas e Funcionalidades

Classificado em Computação

Escrito em em português com um tamanho de 7,15 KB.

O Linux é um sistema operacional que suporta partições, ou seja, partes de um HD que são tratadas pela máquina como unidades de disco independentes. As partições podem ser criadas segundo diversos padrões, conforme o sistema operacional utilizado, e cada um deles utiliza um tipo de sistema de arquivo. Temos, portanto, um grande número de tipos de partições diferentes.

Definição

Um sistema de arquivos é um conjunto de estruturas lógicas que permite o sistema operacional controlar o acesso a um dispositivo de armazenamento como disco rígido, pen drive, cd-room, etc. Diferentes sistemas operacionais podem usar diferentes sistemas de arquivos.

Antes de uma partição ou disco ser usado como um sistema de arquivos ele necessita ser inicializado, e a estrutura básica de dados necessita ser gravada no disco. Este processo é chamado criação de um sistema de arquivos. O Linux suporta diversos tipos de sistemas de arquivos. Um sistema de arquivos depende de estruturas de dados sobre os arquivos. Uma dessas estruturas são os metadados de dados que descrevem as informações armazenadas no dispositivo. Cada arquivo está associado com um inode, o qual é identificado por um número inteiro. Inodes armazenam informações sobre arquivos e diretórios (pastas), tais como a propriedade do arquivo, modo de acesso (ler, escrever, executar), permissões, localização, tipo de arquivo e etc.

Nas primeiras versões do kernel, o sistema de arquivos utilizado era o EXT, construído sobre o MFS (Sistema Minix). Extremamente frágil e com muitas limitações, como por exemplo, permissão para criação de partições de somente até 2GB e fácil fragmentação.

EXT2

Sem dúvida alguma o EXT2 foi uma evolução e tanto em relação ao EXT, pois neste sistema de arquivos muitas melhorias foram implantadas, fazendo deste modo com que o Linux tivesse um sistema de arquivos com recursos importantíssimos para uma boa administração de sistemas, tais como o suporte a regras de permissões bem definidas.

A estrutura do EXT2 pode ser definida assim: Boot Block – Onde são gravadas as informações necessárias para a inicialização do sistema. Inodes – Ficam armazenadas todas as informações sobre cada arquivo: Permissão de acesso, tipo de arquivo, identificação, dono do arquivo, data que foi criado e modificado, tamanho e a localização para o bloco de dados onde o arquivo está guardado. Diretórios – São tipos de arquivos especiais que armazenam uma lista de todos os arquivos e subdiretórios subordinados a ele. Links - Um recurso muito interessante no qual pode se apontar para um outro arquivo ou diretório qualquer.

Quando se fala em arquivos e diretórios no Linux, falamos em tudo, literalmente. Ao contrário do Windows, que trata dispositivos de hardware como tal, o Linux trata tudo como arquivo, ou seja, um disco rígido é um arquivo, um modem também, assim como um CD-ROM, impressora, placa de som, etc.... Os dispositivos de hardware ficam todos no diretório /dev.

EXT3

O sistema de arquivos ext3 já está entre a comunidade GNU/Linux a muito tempo e ainda é bastante utilizado. O ext3 é uma atualização do sistema de arquivos ext2. Em relação ao ext2, a principal diferença é a implementação do journaling, um recurso que consiste no armazenamento de registros para posterior restauração das informações, caso aconteça algum erro. A principal finalidade do 'journaling' é recuperar o sistema de arquivos de erros (tolerância de falhas), sejam eles causados pelo sistema, aplicações ou desligamentos incorretos de forma forçada ou inesperada. Com isso é possível localizar todas as operações que não haviam sido completadas, restaurando a consistência do sistema de arquivos e permitindo que o sistema operacional continue sendo utilizado.

A técnica consiste em uma área dedicada para registros, armazenando todas as ações que serão feitas nos arquivos, como gravação e/ou alteração de dados, por exemplo. Seja armazenamento somente de metadados, ou de metadados e dados de arquivos, permitindo restaurar o sistema de arquivos, caso aconteça algum erro inesperado.

Árvore de Diretórios

No Linux, um diretório (corresponde ao conceito de pasta do Windows) pode conter outros diretórios ou arquivos. Dizemos que um diretório é filho de outro diretório quando ele está logo abaixo do diretório em questão. O diretório que está um nível acima é chamado de diretório pai.

O diretório raiz do Linux (ou diretório /) é o diretório com maior hierarquia entre todos os diretórios do sistema. Isto significa que todos os diretórios do Linux ficam abaixo deste diretório. A seguir são apresentados alguns exemplos de diretórios que ficam abaixo do diretório raiz.

  • bin - diretório com os arquivos binários de comandos disponíveis para todos os usuários.
  • boot - diretório com os arquivos do boot de inicialização.
  • cdrom - diretório usado para montagem de cd-rom.
  • dev - diretório com as definições dos dispositivos de entrada/saída.
  • etc - diretório com os arquivos de configuração do sistema.
  • home - diretório que armazena os diretórios dos usuários do sistema.
  • lib - diretório com as bibliotecas e módulos (carregáveis) do sistema.
  • Lost+found - diretório utilizado para armazenar arquivos que apresentam falhas no sistema de arquivos.
  • media - diretório usado para montagem de dispositivos como pen drive, disquete, etc.
  • mnt - diretório usado para montagem de partições.
  • opt - diretório usado para instalar pacotes opcionais que não fazem parte da distribuição Linux.
  • proc - diretório com informações sobre os processos do sistema.
  • root - diretório home do root.
  • run - diretório usado para armazenar arquivos temporários do sistema como, por exemplo, soquetes.
  • sbin - diretório com os arquivos binários usados na administração do sistema.
  • sys - diretório com os módulos para equipamentos USB.
  • srv - diretório para dados de serviços fornecidos pelo sistema.
  • tmp - diretório com arquivos temporários.
  • usr - diretório com aplicativos e arquivos utilizados pelos usuários como, por exemplo, o sistema de janelas X, jogos, bibliotecas compartilhadas, programas de usuários e de administração, etc.
  • var - diretório com arquivos de dados variáveis (spool, logs, etc).
  • vmlinuz - é um link para o kernel do Linux utilizado na inicialização do sistema.

Convém também observar que é possível colocar os subdiretórios do diretório raiz em partições separadas. O objetivo é facilitar a manutenção do sistema e aumentar a segurança dos dados. Portanto, a distribuição do diretório raiz em várias partições é uma escolha pessoal do administrador do sistema. Normalmente, é sugerido que os seguintes diretórios possuam uma partição própria: /home, /opt, /tmp, /usr e /usr/local.

Entradas relacionadas: