terça-feira, 19 de abril de 2011

Visão Geral da Arvore de Diretórios

Vamos descrever aqui as partes importantes da arvore de diretórios do UNIX em particular do LINUX, em matéria passada já postei sobre a estrutura do HP-UX, baseado no Sistema de Arquivos Padrão do LINUX – FSSTND. Ele descreve a forma usual de dividir a arvore de diretórios em diferentes sistemas de arquivos com diferentes propósitos, justificando a adoção de cada divisão. Algumas opções alternativas de particionamento vamos descrever também.

O Filesystem Hierarchy Standard (padrão para sistema de arquivos hierárquico), ou FHS, define os principais diretórios, e o seu conteúdo, em um sistema operacional Linux ou do tipo Unix. A versão atual é a 2.3, anunciada em 29 de janeiro de 2004.

No início do ano de 1996, surgiu um movimento, com o apoio da comunidade de desenvolvedores do BSD, que visava o desenvolvimento de versões do FSSTND para outros sistemas do tipo Unix, além do Linux. A partir desta iniciativa foi realizado um esforço para determinar os problemas comuns aos sistemas do tipo Unix. Como resultado da ampliação do escopo do problema, o nome do padrão foi alterado para Filesystem Hierarchy Standard (FHS) (padrão para sistemas de arquivo hierárquicos).

O FHS é mantido pelo Free Standards Group, uma organização sem fins lucrativos formada por importantes empresas de hardware e software, como HP, Red Hat, IBM e Dell. Ainda hoje, a grande maioria das distribuições Linux, incluindo membros da Free Standards Group, não adotam o padrão proposto. Em particular, diretórios (paths) criados pelo FHS, como o /srv/, não foram adotados em grande escala. Alguns sistemas Unix e Linux rompem com o padrão FHS, como o GoboLinux. O Mac OS X utiliza uma estrutura com nomes legíveis por seres humanos em conjunto com um sistema baseado no FHS.

A intenção dessa matéria é apresentar uma visão geral sob um ponto de vista de sistema de arquivos.

A arvore de diretórios deve ser dividida em partes menores, cada uma com o seu próprio disco ou partição, facilitando questões como limites de tamanho de disco ou a geração de cópias  de segurança. Os sistemas de arquivo mais importantes são o raiz (root), representando por uma /, /usr, /var e /home. Cada parte tem um proposito diferente.

  • O sistema de arquivos raiz é especifico de cada maquina (ele é geralmente armazenado em disco local, apesar de poder ser um disco em memoria e contem os arquivos necessários  para a inicialização do sistema e para permitir o acesso aos demais sistemas de arquivos. O conteúdo do sistema de arquivos raiz devera ser suficiente ainda para que o sistema possa ser executado em modo monousuário. ele contem ainda ferramentas para resolver eventuais problemas de disco e recuperar arquivos a partir  de copias de segurança.
  • O sistema de arquivos /usr contem os comandos, bibliotecas, paginas de manuais e outros arquivos imutáveis, necessários para a operação normal do sistema. Os arquivos no /usr não devem ser específicos para uma determinada maquina e não devem ser alterados durante o uso normal. Isso permite que estes arquivos possam ser compartilhados através da rede, o que pode ser bastante interessante pela possível economia de espaço em disco, ( o, /usr pode conter facilmente centenas de megabytes) torna a administração mais simples (uma vez que somente o /usr na maquina principal necessita ser atualizado e mantido em dia). Mesmo que este sistema de arquivos esteja no disco local, ele deve ser montado com autorização de somente leitura, para diminuir a chance de corrupção de arquivos durante um eventual acidente.
  • O sistema de arquivos /var contém arquivos mutáveis, como diretórios de arquivos temporários, spool (para correio eletrônico, news, impressões, etc), logs, paginas de manual formatadas, etc… Tradicionalmente o conteúdo do /var era montado em algum lugar sob o /usr, porem isso tornava impossível montar o /usr com permissões de somente leitura.
  • O sistema de arquivos /home contem os diretórios pessoais dos usuários, ou seja, todas as informações armazenadas por estes no sistema. Separar diretórios pessoais em sua própria arvore de diretórios ou sistema de arquivos simplifica a geração de copias de segurança, uma vez que outras partes do sistema normalmente não necessitam de copias com a mesma frequência. Um /home muito grande pode ser dividido em diversos sistemas de arquivos que requerem um nível adicional na sua denominação, por exemplo, (/home/amilcar  ou /home/funcionário).

A estrutura dos sistemas de arquivos UNIX prevê um agrupamento de acordo com o proposito. Os comandos estão todos em uma determinada área, todos os arquivos de dados em outra área, documentação em uma terceira, e assim por diante. Uma alternativa seria agrupar os arquivos de acordo com os programas a que eles pertençam, isto é, os arquivos do Emacs estariam todos em um único diretório, todos os arquivos do vim em outro, e assim por diante. O problema dessa abordagem reside no compartilhamento de arquivos (um diretório de programa contém todos os tipos de arquivos: estáticos, dinâmicos, compartilhados e não compartilhados,…) e algumas vezes em encontrar alguns desses arquivos ( por exemplo uma pagina de manual a ser pesquisada em um grande numero de diretórios é um pesadelo para a administração).

Nenhum comentário:

Postar um comentário