Sistema de arquivos distribuídos
Um sistema de arquivos é a estrutura que permite organizar, acessar e gerenciar dados em formato de arquivos em sistemas computacionais. Em um Sistema de Arquivos Distribuídos (SAD), essa função é compartilhada por múltiplos servidores, que oferecem o serviço de armazenamento e acesso a arquivos para diversos clientes em diferentes máquinas, criando uma rede de compartilhamento de dados.
Pontos-chave
- SADs permitem que múltiplos servidores gerenciem arquivos para diversos clientes em rede.
- Requisitos essenciais incluem segurança, desempenho, transparência e tolerância a falhas.
- Serviços de arquivo e diretório são fundamentais para a manipulação e organização dos dados.
- A resolução de nomes e o uso de cache são cruciais para a eficiência e a localização de arquivos.
- Exemplos como NFS e AFS demonstram diferentes abordagens na implementação de SADs.
Para entender os Sistemas de Arquivos Distribuídos (SAD), é preciso definir alguns termos chave. Um 'serviço' é um conjunto de facilidades oferecidas por um software em rede. O 'servidor' é o software ou a máquina que oferece esse serviço. O 'cliente' é o software ou a máquina que utiliza o serviço. Um Sistema de Arquivos gerencia o armazenamento de dados de longa duração. Um SAD, especificamente, é um Sistema de Arquivos onde vários servidores colaboram para fornecer o serviço de arquivos a múltiplos clientes em diferentes máquinas.
Um SAD deve garantir a segurança através de permissão (quem pode acessar?), autenticação (quem é o usuário?) e privacidade (dados secretos). A integridade dos dados (se foram danificados no transporte) também é crucial. Além disso, o desempenho do SAD deve ser comparável ou superior a um sistema centralizado, mesmo com variações na carga de trabalho dos servidores, para não prejudicar as aplicações clientes. Os serviços de arquivo e diretório são os pilares para atender a esses requisitos.
Transparência
A transparência permite que o usuário acesse recursos distribuídos como se fossem parte de um único sistema local, ocultando a complexidade da distribuição. Em SADs, existem diferentes tipos de transparência, como a de acesso (ocultar diferenças na representação e acesso), de localização (ocultar onde o recurso está), de replicação (ocultar se um recurso está replicado), de concorrência (ocultar que um recurso pode estar sendo usado por outros), de falha (ocultar falhas e recuperações) e de mobilidade (ocultar a movimentação de recursos).
Modificações Concorrentes
É fundamental que as alterações feitas por um cliente em um arquivo não interfiram nas operações de outros clientes, mesmo que estejam acessando o mesmo arquivo. O sistema deve garantir que processos acessando os mesmos dados simultaneamente recebam informações corretas e que a consistência do sistema de arquivos seja mantida.
Replicação de Arquivos
Manter cópias atualizadas de arquivos em diferentes locais melhora o balanceamento de carga, a escalabilidade e a tolerância a falhas. Se um arquivo falhar em um servidor, ele pode ser acessado de outro, garantindo a consistência sem que o cliente perceba a falha.
Heterogeneidade
SADs devem ser projetados para funcionar em diferentes plataformas (sistemas operacionais, arquiteturas de processador), tanto no lado dos servidores quanto dos clientes. Redes heterogêneas, com nós de diversos tipos, podem ser vantajosas, permitindo que cada tarefa seja executada na máquina mais adequada.
Tolerância a Falhas
O serviço deve continuar operando mesmo diante de falhas parciais em clientes ou servidores. O sistema deve minimizar a degradação do tempo de resposta e evitar a interrupção do serviço quando ocorrem quedas de comunicação, que podem variar de segundos a horas.
Consistência
Garantir que exista apenas uma versão válida de cada arquivo é essencial. Se um cliente lê um arquivo em um momento e outro cliente lê o mesmo arquivo posteriormente (ou em outro local), e o arquivo não foi modificado, ambos devem visualizar exatamente o mesmo conteúdo.
O serviço de arquivo expõe a interface para manipulação de arquivos, definindo operações como leitura, escrita e alteração de conteúdo e atributos (dono, tamanho, data, permissões). As operações podem ser realizadas com o arquivo totalmente copiado localmente ou diretamente pela rede. A cópia remota é conhecida como 'cache' e será tratada posteriormente. A manipulação remota direta simplifica o gerenciamento de versões, pois as alterações ocorrem no arquivo original.
Este serviço define as operações para manipulação de diretórios, como criação, remoção, movimentação de arquivos e renomeação. Ele mantém uma lista de diretórios ativos e seus arquivos, e gerencia a remoção de arquivos filhos de diretórios apagados (com permissão). O serviço de diretório também auxilia o serviço de arquivo em tarefas como listar arquivos e realizar buscas. Para encontrar arquivos em um SAD, onde arquivos de um mesmo diretório podem estar em máquinas diferentes, utiliza-se o serviço de resolução de nomes.
É uma parte complexa do SAD, responsável por localizar arquivos solicitados em tempo hábil. Cada arquivo deve ter seu nome mapeado para o servidor que o armazena, permitindo a identificação única. Existem três técnicas principais de nomeação: as duas primeiras são úteis para distribuir sistemas de arquivos preexistentes, enquanto a terceira é ideal para SADs, pois oferece maior transparência, simulando um sistema de arquivos local. O uso de cache pode reduzir o tráfego de rede e melhorar a eficiência.
Para reduzir o tráfego excessivo em redes locais e diminuir a quantidade de acessos diretos aos arquivos no SAD, utiliza-se o mecanismo de cache. Isso aumenta o desempenho ao reduzir as requisições pela rede. É possível manter o arquivo inteiro em cache (mais simples, menos eficiente) ou apenas um trecho em edição (mais eficiente, porém complexo). Existem modelos de atualização de cache para o SAD:
Write Through
Qualquer modificação em um arquivo (ou trecho) em cache é imediatamente refletida nos servidores.
Delayed Write
As escritas não ocorrem a cada modificação. As alterações são enviadas ao SAD após um certo intervalo de tempo ou quando o arquivo é aberto novamente. Antes de abrir um arquivo em cache, verifica-se se ele está atualizado com a versão no SAD; se não estiver, é atualizado antes de ser aberto.
Write on Close
Todas as alterações feitas em um arquivo são enviadas ao SAD somente no momento em que o arquivo é fechado.
Centralized Control
O controle de acesso aos arquivos é centralizado no servidor, que enfileira as requisições de leitura e escrita. Se um arquivo é aberto apenas para leitura, não há restrições. No entanto, se um arquivo é aberto para escrita, o servidor impede que outros clientes o abram para escrita simultaneamente.
A seguir, apresentamos exemplos notáveis de Sistemas de Arquivos Distribuídos que implementam os conceitos discutidos.
SUN Network File System (NFS)
Criado em 1984, o NFS permite que clientes acessem arquivos armazenados em um único servidor. Tornou-se público em 1985 e possui implementações para a maioria dos sistemas operacionais. Por ser 'stateless' (não mantém estado de requisições), evita perda de dados em caso de queda do servidor. Contudo, essa característica o impede de gerenciar acesso concorrente de forma eficiente, entregando cópias do mesmo arquivo a cada cliente. Os objetivos de desenvolvimento do NFS incluíam simplicidade, escalabilidade e independência de plataforma.
Andrew File System (AFS)
Desenvolvido na Universidade Carnegie Mellon, o AFS visava compartilhar arquivos entre milhares de usuários e avançar a computação distribuída. Foi projetado para ser totalmente compatível com o UNIX no nível de chamadas de sistema. Uma característica marcante e controversa do AFS é que a unidade básica de tráfego do sistema é o arquivo inteiro.


