b'\n_START_ARTICLE_\nSistema de arquivos distribu\xc3\xaddos\n_START_PARAGRAPH_\nA abstra\xc3\xa7\xc3\xa3o usada para armazenar dados em  sistemas computacionais \xc3\xa9 o arquivo. Para que esses arquivos sejam acessados, modificados e que sejam criados outros arquivos \xc3\xa9 necess\xc3\xa1ria uma estrutura que permita tais opera\xc3\xa7\xc3\xb5es. Essa estrutura recebe o nome de sistema de arquivos._NEWLINE_A motiva\xc3\xa7\xc3\xa3o b\xc3\xa1sica dos sistemas distribu\xc3\xaddos \xc3\xa9 o compartilhamento de recursos e no \xc3\xa2mbito dos sistemas de arquivos, o recurso a ser compartilhado s\xc3\xa3o os dados sob a forma de arquivos._NEWLINE_Um Sistema de Arquivos, ou ficheiros, Distribu\xc3\xaddo (SAD), \xc3\xa9 um sistema de arquivos no qual os arquivos nele armazenados est\xc3\xa3o espalhados em  hardwares diferentes, interconectados atrav\xc3\xa9s de uma rede. Eles tem v\xc3\xa1rios aspectos semelhantes aos dos  sistemas de arquivos centralizados, al\xc3\xa9m de opera\xc3\xa7\xc3\xb5es de manipula\xc3\xa7\xc3\xa3o de arquivos, preocupa\xc3\xa7\xc3\xb5es com redund\xc3\xa2ncia, consist\xc3\xaancia, dentre outros atributos desejados de um sistema de arquivos._NEWLINE_Com fins de simplifica\xc3\xa7\xc3\xa3o, considere no artigo o cliente como qualquer pessoa ou aplica\xc3\xa7\xc3\xa3o que fa\xc3\xa7a uso dos arquivos que est\xc3\xa3o armazenados em um SAD.\n_START_SECTION_\nConceitos b\xc3\xa1sicos\n_START_PARAGRAPH_\nN\xc3\xa3o podemos iniciar nenhuma discuss\xc3\xa3o sobre sistemas de arquivos distribu\xc3\xaddos sem definir alguns conceitos fundamentais. _NEWLINE_Um servi\xc3\xa7o \xc3\xa9 um conjunto de facilidades oferecidas aos n\xc3\xb3s de uma rede por um software que opera em uma ou mais m\xc3\xa1quinas._NEWLINE_Um servidor \xc3\xa9 o software que opera em uma determinada m\xc3\xa1quina e que trata de oferecer o servi\xc3\xa7o. Chamaremos, tamb\xc3\xa9m, de servidor a m\xc3\xa1quina que executa esse software._NEWLINE_O cliente \xc3\xa9 o software que utiliza o servi\xc3\xa7o do servidor. Tamb\xc3\xa9m chamaremos de cliente a m\xc3\xa1quina que executa o software cliente._NEWLINE_Um sistema de Arquivos \xc3\xa9 uma parte de um sistema Operacional que trata de oferecer um reposit\xc3\xb3rio de dados de longa dura\xc3\xa7\xc3\xa3o._NEWLINE_Um Sistema de Arquivos Distribu\xc3\xaddo \xc3\xa9 um Sistema de Arquivos onde v\xc3\xa1rios servidores s\xc3\xa3o respons\xc3\xa1veis por oferecer o servi\xc3\xa7o de arquivos para v\xc3\xa1rios clientes instalados em diferentes m\xc3\xa1quinas.\n_START_SECTION_\nRequisitos de um SAD\n_START_PARAGRAPH_\nOs  requisitos para um SAD, s\xc3\xa3o:\n_START_SECTION_\nModifica\xc3\xa7\xc3\xb5es concorrentes de arquivos\n_START_PARAGRAPH_\nComo o nome fala por si mesmo, altera\xc3\xa7\xc3\xb5es feitas por um cliente n\xc3\xa3o devem interferir nas opera\xc3\xa7\xc3\xb5es de outros clientes, mesmo que esses clientes estejam manipulando o mesmo arquivo._NEWLINE_Quando diversos processos acessam os mesmos dados simultaneamente, \xc3\xa9 preciso tomar cuidado para que esses processos recebam informa\xc3\xa7\xc3\xb5es corretas e tamb\xc3\xa9m para que a consist\xc3\xaancia do sistema de arquivos n\xc3\xa3o seja afetada.\n_START_SECTION_\nReplica\xc3\xa7\xc3\xa3o de arquivos\n_START_PARAGRAPH_\nO SAD deve manter c\xc3\xb3pias atualizadas dos arquivos em diferentes locais. Essa medida traz algumas benesses como balanceamento de carga, pois mais  servidores podem atender a uma determinada requisi\xc3\xa7\xc3\xa3o, melhora a escalabilidade e toler\xc3\xa2ncia a falhas, pois se caso algum arquivo falhar, ele pode ser requisitado a algum outro servidor que o tenha, retornando a um estado consistente, sem que os clientes tenham conhecimento.\n_START_SECTION_\nHeterogeneidade\n_START_PARAGRAPH_\nO SAD deve ser concebido levando em conta a heterogeneidade de plataformas ( sistemas operacionais, arquiteturas de processador, dentre outros fatores), que podem ser usadas, tanto do lado dos servidores como dos clientes._NEWLINE_Umas rede Heterog\xc3\xaanea, isto \xc3\xa9, que possui n\xc3\xb3s de diferentes tipos, pode ser vantajosa na medida em que cada tipo de tarefa pode ser executada em uma m\xc3\xa1quina apropriada.\n_START_SECTION_\nToler\xc3\xa2ncia a Falhas\n_START_PARAGRAPH_\nO servi\xc3\xa7o deve continuar executando mesmo com falhas parciais.Tanto os clientes quanto os servidores de arquivos podem sofrer quedas e romperem a comunica\xc3\xa7\xc3\xa3o com os outros n\xc3\xb3s da rede por intervalos que podem variar entre segundos e at\xc3\xa9 horas. O sistema deve evitar , sempre que poss\xc3\xadvel, que falhas como esta causem uma deprecia\xc3\xa7\xc3\xa3o muito grande no tempo de resposta aos clientes ou que o servi\xc3\xa7o seja interrompido.\n_START_SECTION_\nConsist\xc3\xaancia\n_START_PARAGRAPH_\nS\xc3\xb3 deve haver uma vers\xc3\xa3o dispon\xc3\xadvel de cada arquivo no SAD, ou seja, se algum cliente ler um arquivo X em um momento, e outro cliente ler o mesmo arquivo X em outro momento e/ou outro lugar, se X n\xc3\xa3o foi modificado, ambos os clientes devem visualizar exatamente o mesmo conte\xc3\xbado.\n_START_SECTION_\nProte\xc3\xa7\xc3\xa3o\n_START_PARAGRAPH_\nO SAD deve ter preocupa\xc3\xa7\xc3\xa3o com permiss\xc3\xa3o (a pessoa que est\xc3\xa1 acessando o arquivo pode faz\xc3\xaa-lo?), autentica\xc3\xa7\xc3\xa3o (essa pessoa \xc3\xa9 realmente ela?), privacidade (dados secretos podem ser vistos por outras pessoas?) e integridade (esse dado arquivo foi danificado no transporte?).\n_START_SECTION_\nEfici\xc3\xaancia\n_START_PARAGRAPH_\nO SAD deve fazer todas as atividades listadas nos requisitos acima com um desempenho compar\xc3\xa1vel a, ou melhor que, um sistema de arquivos centralizado, de modo que, mesmo se a carga nos servidores varie constantemente, o funcionamento de aplica\xc3\xa7\xc3\xb5es clientes do SAD n\xc3\xa3o sejam muito penalizadas._NEWLINE_A provis\xc3\xa3o dos servi\xc3\xa7os oferecidos pelos sistemas de arquivos distribu\xc3\xaddos \xc3\xa9 feita pelo servi\xc3\xa7o de arquivo e pelo servi\xc3\xa7o de diret\xc3\xb3rio, que ser\xc3\xa3o abordados a seguir.\n_START_SECTION_\nServi\xc3\xa7o de arquivo\n_START_PARAGRAPH_\nO servi\xc3\xa7o de arquivo \xc3\xa9 respons\xc3\xa1vel por expor a interface de manipula\xc3\xa7\xc3\xa3o dos arquivos, em outras palavras, \xc3\xa9 a defini\xc3\xa7\xc3\xa3o dos servi\xc3\xa7os providos pelo SAD no tocante a manipula\xc3\xa7\xc3\xa3o dos arquivos como leitura, escrita e altera\xc3\xa7\xc3\xa3o do conte\xc3\xbado e alguns atributos do arquivo. Esses atributos do arquivo pode ser algo como o dono, tamanho, data de cria\xc3\xa7\xc3\xa3o, permiss\xc3\xb5es, dentre outros._NEWLINE_Quando o cliente est\xc3\xa1 manipulando um determinado arquivo, o mesmo pode estar completamente copiado e dispon\xc3\xadvel ou qualquer opera\xc3\xa7\xc3\xa3o ser\xc3\xa1 feita via rede. A essas duas abordagens de constru\xc3\xa7\xc3\xa3o do servi\xc3\xa7o de arquivo d\xc3\xa1-se o nome de c\xc3\xb3pia remota e acesso remoto respectivamente. _NEWLINE_Quando a manipula\xc3\xa7\xc3\xa3o \xc3\xa9 feita completamente remota, ou seja sem que nenhuma parte do arquivo seja copiada, o gerenciamento de vers\xc3\xb5es do arquivo \xc3\xa9 menos complexo, pois toda altera\xc3\xa7\xc3\xa3o \xc3\xa9 feita diretamente no arquivo. A c\xc3\xb3pia remota ser\xc3\xa1 tratada em uma se\xc3\xa7\xc3\xa3o posterior, sob o nome de cache.\n_START_SECTION_\nServi\xc3\xa7o de diret\xc3\xb3rio\n_START_PARAGRAPH_\nO servi\xc3\xa7o de diret\xc3\xb3rio, por sua vez, \xc3\xa9 respons\xc3\xa1vel por informar quais as opera\xc3\xa7\xc3\xb5es para manipula\xc3\xa7\xc3\xa3o de diret\xc3\xb3rios, ou seja, \xc3\xa9 a defini\xc3\xa7\xc3\xa3o dos servi\xc3\xa7os providos pelo SAD no que concerne a cria\xc3\xa7\xc3\xa3o e remo\xc3\xa7\xc3\xa3o de diret\xc3\xb3rios, movimenta\xc3\xa7\xc3\xa3o de arquivos de um diret\xc3\xb3rio para outro, nomear e renomear arquivos. Al\xc3\xa9m disso este servi\xc3\xa7o tamb\xc3\xa9m precisa manter uma lista com todos os diret\xc3\xb3rios ativos, seus respectivos arquivos e ainda dos diret\xc3\xb3rios que eventualmente forem apagados, remover os arquivos filhos deste que fora apagado, se o cliente tiver a devida permiss\xc3\xa3o._NEWLINE_Al\xc3\xa9m das opera\xc3\xa7\xc3\xb5es naturais dos diret\xc3\xb3rios, o servi\xc3\xa7o de diret\xc3\xb3rio auxilia o servi\xc3\xa7o de arquivos a desempenhar algumas de suas atividades como listar os arquivos de algum diret\xc3\xb3rio, efetuar buscas por determinados arquivos._NEWLINE_Como conseguimos encontrar um arquivo no sistema de arquivos de um computador dom\xc3\xa9stico onde o sistema de arquivos \xc3\xa9 centralizado? Cada arquivo possui um path, do ingl\xc3\xaas caminho, ou localiza\xc3\xa7\xc3\xa3o no referido sistema de arquivos. Como fazer com um sistema de arquivos distribu\xc3\xaddo se todos os arquivos de um diret\xc3\xb3rio podem n\xc3\xa3o estar no mesmo computador dele? Para esse problema existe o servi\xc3\xa7o de resolu\xc3\xa7\xc3\xa3o de nomes.\n_START_SECTION_\nCache\n_START_PARAGRAPH_\nComo o sistema est\xc3\xa1 em uma rede local, o tr\xc3\xa1fego excessivo \xc3\xa9 indesejado. Para diminuir essa quantidade de acessos, pode-se recorrer ao mecanismo de cache._NEWLINE_O cache aumenta o desempenho pois reduz a quantidade de acessos aos arquivos guardados no SAD, com isso s\xc3\xa3o feitas menos requisi\xc3\xa7\xc3\xb5es usando a rede._NEWLINE_\xc3\x89 poss\xc3\xadvel manter o arquivo inteiro em cache (mais simplicidade na implementa\xc3\xa7\xc3\xa3o e menos efici\xc3\xaancia) ou manter apenas um trecho que est\xc3\xa1 sendo editado (mais eficiente, por\xc3\xa9m de dif\xc3\xadcil implementa\xc3\xa7\xc3\xa3o). A literatura prev\xc3\xaa alguns modelos de atualiza\xc3\xa7\xc3\xa3o de arquivos da cache para o SAD, s\xc3\xa3o eles:\n_START_SECTION_\nSistema de nomes\n_START_PARAGRAPH_\nNo NFS se pode montar um peda\xc3\xa7o do sistema de arquivos distribu\xc3\xaddo em algum diret\xc3\xb3rio do sistema de arquivos local do cliente, de modo que a nomenclatura dos diret\xc3\xb3rios provenientes do NFS segue o mesmo padr\xc3\xa3o do sistema de arquivos local. Portanto o NFS prov\xc3\xaa transpar\xc3\xaancia no acesso, pois se o servidor onde os dados se encontram mudar de lugar, o cliente n\xc3\xa3o precisa saber dessa mudan\xc3\xa7a para continuar a usar o NFS.\n_START_SECTION_\nSeguran\xc3\xa7a\n_START_PARAGRAPH_\nO NFS usa o mesmo esquema de conceder e verificar permiss\xc3\xb5es do UNIX.\n_START_SECTION_\nAcesso concorrente\n_START_PARAGRAPH_\nO NFS n\xc3\xa3o d\xc3\xa1 suporte a acesso concorrente e lock de arquivos, portanto a altera\xc3\xa7\xc3\xa3o do mesmo arquivo poder\xc3\xa1 implicar em resultados indesej\xc3\xa1veis.\n_START_SECTION_\nSem\xc3\xa2ntica\n_START_PARAGRAPH_\nFoi implementada a sem\xc3\xa2ntica UNIX para o tratamento dos arquivos. Nela, por exemplo, \xc3\xa9 permitido que um arquivo possa ser exclu\xc3\xaddo enquanto alguma aplica\xc3\xa7\xc3\xa3o o utiliza. Outra particularidade dessa sem\xc3\xa2ntica \xc3\xa9 de que a permiss\xc3\xa3o de um arquivo pode ser alterada enquanto o mesmo est\xc3\xa1 aberto. Se essa altera\xc3\xa7\xc3\xa3o for feita no arquivo remoto, ela sempre ser\xc3\xa1 checada, caso contr\xc3\xa1rio n\xc3\xa3o._NEWLINE_Com todas essas funcionalidades, o NFS ainda funciona com efici\xc3\xaancia, e como ind\xc3\xadcio disso, continua sendo largamente usando ainda hoje.\n_START_SECTION_\nAndrew File System\n_START_PARAGRAPH_\nO Andrew File System ou AFS surgiu na Universidade Carnegie Mellon com o intuito de prover compartilhamento de arquivos entre os, pelo menos, 7 mil estudantes, professores e funcion\xc3\xa1rios da referida universidade, al\xc3\xa9m de tentar avan\xc3\xa7ar o estado da arte em computa\xc3\xa7\xc3\xa3o distribu\xc3\xadda._NEWLINE_Antes de tudo, como todos na universidade de Carnegie Melo usavam UNIX, a primeira decis\xc3\xa3o de projeto sobre o AFS foi que ele deveria ser completamente compat\xc3\xadvel com o UNIX, no n\xc3\xadvel das chamadas ao sistema operacional._NEWLINE_Outra decis\xc3\xa3o foi de que a unidade b\xc3\xa1sica de tr\xc3\xa1fego do sistema foi o arquivo inteiro; isso sem d\xc3\xbavida \xc3\xa9 o aspecto mais controverso e interessante do AFS._NEWLINE_A integridade do cache \xc3\xa9 implementado usando o princ\xc3\xadpio de callback. Quando um arquivo \xc3\xa9 aberto, \xc3\xa9 posto em cache no sistema de arquivos local e o servidor guarda essa informa\xc3\xa7\xc3\xa3o. Sempre que algum outro cliente alterar o mesmo arquivo, ele \xc3\xa9 avisado via callback de que o arquivo foi alterado. Toda altera\xc3\xa7\xc3\xa3o \xc3\xa9 checada atrav\xc3\xa9s desse callback._NEWLINE_Dentre as funcionalidades do AFS, podemos citar:\n_START_SECTION_\nAutentica\xc3\xa7\xc3\xa3o\n_START_PARAGRAPH_\nO cliente se autentica usando suas informa\xc3\xa7\xc3\xb5es de conta de usu\xc3\xa1rio UNIX.'