Notas de Aula - MAC 5755 - Sistemas Operacionais Distribuídos
Aula 13 - 1/10/2003
Sistemas de Arquivos Distribuídos
O sistema de arquivos é um dos subsistemas mais
importantes em SOs
Oferece uma visão abstrata de dispositivos de armazenamento
secundário (discos, fitas, etc.)
- No princípio, as estações eram isoladas e era
necessário dar um rsh para se conectar a outras máquinas
e obter acesso aos arquivos
- Insatisfeitos com isso criaram os primeiros sistemas de arquivos distribuídos
através do comando rcp maquina:caminho
- modelo de transferência completa (upload/download)
- Tanenbaum Fig. 5.1a, pag. 247
- funcionou muito bem por muito tempo (até meados/final da década
de 80)
- desvantagens
- o usuário é responsável por saber onde cada arquivo
está guardado;
- o programa continha o nome do servidor onde os arquivos estão
guardados
- pouca flexibilidade
- Depois, criou-se o modelo de acesso remoto a arquivos:
- o serviço de arquivos oferece operações (e.g.
open, read, write, close) para acesso a arquivos remotos
- Tanenbaum Fig. 5.1b, pag. 247
- os caminhos para os arquivos assumem a forma /servidor/pathname
Transparência de localização
- é necessário algum esquema para mapear o espaço
de nomes do sistema de arquivos aos diversos servidores
- normalmente se usa um espaço de nomes hierarquico e se associa
diferentes pedaços da hierarquia a diferentes servidores
- Na verdade, existem 3 modelos de nomes em um sistema de arquivos
distribuídos:
- nome da máquina + caminho (e.g., /maquina/pathname
ou maquina:pathname)
- montando sistemas de arquivos remotos na hierarquia local de sistemas
de arquivos
- um espaço de nomes global único comum a todas as máquinas
do sistema
- transparência de plataforma do cliente e do servidor
- é necessário definir um protocolo padrão de comunicação
independente da plataforma
Semântica do compartilhamento de arquivos
- o que acontece quando 2 ou mais usuários (processos) acessam
o mesmo arquivo ao mesmo tempo?
- o que acontece se temos uma seqüência rápida de
leituras e escritas em um arquivo? qual valor é lido pela leitura?
- Em um sistema centralizado UNIX, um read sempre devolve o
valor escrito pelo último write
- Em sistemas distribuídos há 4 tipos de semântica
mais comuns:
- semântica UNIX (toda operação em um arquivo é
visível imediatamente por todos nós)
- semântica de sessão
- uma sessão é aberta com open e fechada com
close
- mudanças não são visíveis a outros processos
até que a sessão seja fechada
- arquivos imutáveis
- facilita compartilhamento e replicação
- transações
- init, abort, commit transaction
- mudanças possuem a propriedade de tudo ou nada
- mudanças só são visíveis após um
commit é feito
Referências
Servidores com estado vs. servidores sem estado
- servidores com estado funcionam como um servidor de arquivos centralizado
mantendo tabelas de quais arquivos estão abertos e quais processos
(clientes) estão usando cada arquivo e em qual ponto do arquivo estão
mexendo.
- Vantagens de servidores sem estado
- tolerância a falhas
- não exige chamadas open/close
- não desperdiça espaço e processador no
servidor para manter tabelas dos clientes
- não há limite no número de arquivos abertos
e no número de clientes simultâneos
- não há problema se um cliente cai ou se desconecta
repentinamente
- Vantagens de servidores com estado
- mensagens mais curtas
- maior velocidade no tratamento das requisições
- mais fácil de obter idempotência (tratar bem o
caso no qual o cliente manda duas mensagens de APPEND porque a primeira deu
timeout)
- torna possível garantir acesso restrito a arquivos (
file locking é impossível em servidores sem estado).
Caching
- do lado do servidor
- do lado do cliente
- sem cache
- com cache dentro do processo do cliente (biblioteca)
- com cache dentro do kernel da máquina cliente
- com cache em um processo separado (broker, espécie
de agente negociador)
- políticas de consistência do cache do cliente
- controle centralizado
- semântica UNIX perfeita
- pode ser muito ineficiente dependendo do jeito que é
implementado
- write on close
- semântica de sessão
- mais eficiente, funciona bem em sistemas de grande área
quando comunicação com servidor é muito cara
- write through
- bom desempenho em redes locais
- diminui (mas não elimina) inconsistências
- para diminuir inconsistências pode-se determinar que
o cliente verifica com o servidor se o arquivo mudou toda vez que um processo
do cliente faz um open neste arquivo
- delayed write
- equivalente a cache tanto para leitura como para escrita
- melhor desempenho possível
- pior consistência possível
Replicação
- Vantagens de replicação:
- aumento da confiabilidade, se um servidor quebra, existem cópias
dos arquivos
- aumento da disponibilidade, se um servidor sai fora do ar, existem
outros servidores
- distribuição de carga entre os vários servidores
- evitar congestionamento de redes locais ou linhas de transmissão
- replicação transparente vs. replicação
não transparente
- exemplo: backup na rede IME:
- cópia é transparente (para usuário, não
para admin)
- recuperação não é transparente
- 3 modelos de replicação (Tanenbaum, Fig 5.12,
pag. 269)
- replicação explícita (a cargo do processo
(biblioteca) cliente)
- replicação preguiçosa (lazy)
- replicação usando comunicação
de grupo
- modelo de cópia primária
- diferentes parte do SA podem adotar nós diferentes
para ser a cópia primária
- se o servidor primário sai do ar, pode-se fazer uma
eleição; mas isso pode levar a inconsistências se a rede
se particiona
- modelo de votos
- assumindo N cópias em máquinas
- para ler, é necessário obter o voto de N
r nós
- para escrever, é necessário obter o voto de
Nw nós
- restrição: Nr + Nw >
N
- o voto pode ser simplesmente uma indicação do
número da versão mais recente do arquivo
- exemplos com N = 12:
- Nr = 3, Nw = 10
- Nr = 7, Nw = 6
- Nr = 1, Nw = 12
- outra abordagem comum: replicar arquivos só para leitura
(read-only files)
Padrões de utilização de sistemas de arquivos
- a grande maioria dos arquivos é pequena ( < 10K)
- leitura é muito mais freqüênte que escrita
- leituras e escritas são seqüências; acesso aleatório
é raro
- a maioria dos arquivos tem uma vida muito pequena (poucos segundos)
- compartilhamento de arquivos simultâneo é raro
- o processo médio usa só alguns arquivos
- existem diferentes classes de arquivos com propriedades diferentes
Referências
Tanenbaum, seção 5.2; Galli, seção
8.2 (incompleto); Silberschatz 5a ed. cap 17; monografia sobre SAD na
página de leituras recomendadas
.
Próxima Aula
Aula Anterior
Página de MAC 5755
Página do Fabio
Página do DCC