550 likes | 659 Views
Capítulo 11: Implementação do sistema de arquivos. Capítulo 11: Implementação do sistema de arquivos. Estrutura do sistema de arquivos Implementação do sistema de arquivos Implementação de diretório Métodos de alocação Gerenciamento do espaço livre Eficiência e desempenho Recuperação
E N D
Capítulo 11: Implementação do sistema de arquivos • Estrutura do sistema de arquivos • Implementação do sistema de arquivos • Implementação de diretório • Métodos de alocação • Gerenciamento do espaço livre • Eficiência e desempenho • Recuperação • Sistemas de arquivo estruturados em log • NFS • Exemplo: Sistema de arquivos WAFL
Objetivos • Descrever os detalhes da implementação de sistemas de arquivos e estruturas de diretório locais • Descrever a implementação de sistemas de arquivo remotos • Discutir algoritmos e opções de a alocação em bloco e bloco livre
Estrutura do sistema de arquivos • Estrutura de arquivo • Unidade de armazenamento lógico • Coleta de informações relacionadas • Sistema de arquivos reside no armazenamento secundário (discos) • Sistema de arquivos organizado em camadas • Bloco de controle de arquivo – estrutura de armazenamento consistindo em informações sobre um arquivo
Estruturas de sistema de arquivos na memória • A figura a seguir ilustra as estruturas necessárias do sistema de arquivos fornecidas pelos sistemas operacionais. • Figura 12.3(a) refere-se à abertura de um arquivo. • Figura 12.3(b) refere-se à leitura de um arquivo.
Sistemas de arquivo virtuais • Virtual File Systems (VFS) oferecem um modo orientado a objeto para implementar sistemas de arquivos. • VFS permite que a mesma interface de chamada do sistema (a API) seja usada para diferentes tipos de sistemas de arquivos. • A API é para a interface VFS, e não qualquer tipo específico de sistema de arquivos.
Implementação do diretório • Lista linear dos nomes com ponteiro para os blocos de dados. • simples de programar • demorado para executar • Tabela de hash –lista linear com estrutura de dados em hash. • diminui tempo de busca de diretório • colisões – situações onde dois nomes de arquivos referem-se ao mesmo local • tamanho fixo
Métodos de alocação • Um método de alocação refere-se a como os blocos de disco são alocados para arquivos: • Alocação contígua • Alocação vinculada • Alocação indexada
Alocação contígua • Cada arquivo ocupa um conjunto de blocos contíguos no disco • Simples – requer somente local inicial (# bloco) e tamanho (número de blocos) • Acesso aleatório • Desperdício de espaço (problema de alocação dinâmica de armazenamento ) • Arquivos não podem crescer
Alocação contígua • Mapeamento de lógico para físico Q LA/512 R • Bloco a ser acessado = ! + endereço inicial • Deslocamento no bloco = R
Sistemas baseados em extensão • Muitos sistemas de arquivos mais novos (p.e., Veritas File System) usam um esquema de alocação contígua modificado • Sistemas de arquivos baseados em extensão alocam blocos de disco em extensões • Uma extensão é um bloco contíguo de discos • Extensões são alocadas para alocação de arquivo • Um arquivo consiste em uma ou mais extensões.
ponteiro bloco = Alocação vinculada • Cada arquivo é uma lista vinculada de blocos de disco: blocos podem estar espalhados por todo o disco
Alocação vinculada (cont.) • Simples – só precisa do endereço inicial • Sistema de gerenciamento do espaço livre– sem desperdício de espaço • Sem acesso aleatório • Mapeamento Q LA/511 R Bloco a ser acessado é o Q° bloco na cadeia vinculada de blocos representando o arquivo. Deslocamento no bloco = R + 1 Tabela de alocação de arquivos (FAT) – alocação de espaço em disco usada pelo MS-DOS e OS/2.
Alocação indexada • Reúne todos os ponteiros no bloco de índice. • Visão lógica. Tabela de índice
Alocação indexada (cont.) • Precisa tabela de índice • Acesso aleatório • Acesso dinâmico sem fragmentação externa, mas tem overhead de bloco de índice. • Mapeamento de lógico para físico em um arquivo de tamanho máximo de 256K words e tamanho de bloco de 512 words. Só precisamos de 1 bloco para tabela de índice. Q LA/512 R Q = deslocamento na tabela de índice R = deslocamento no bloco
Alocação indexada – mapeamento (cont.) • Mapeamento de lógico a físico em um arquivo de tamanho não limitado (tamanho de bloco de 512 words). • Esquema vinculado – Vincula blocos da tabela de índice (sem limite no tamanho). Q1 LA / (512 x 511) R1 Q1= bloco da tabela de índice R1é usado da seguinte forma: Q2 R1 / 512 R2 Q2 = deslocamento para bloco da tabela de índice R2 = deslocamento para bloco do arquivo
Alocação indexada – mapeamento (cont.) • Índice de dois níveis (tamanho de arquivo máximo é 5123) Q1 LA / (512 x 512) R1 Q1 = deslocamento para índice externo R1 é usado da seguinte forma: Q2 R1 / 512 R2 Q2 = deslocamento para bloco da tabela de índice R2 = deslocamento para bloco do arquivo
Alocação indexada – mapeamento (cont.) índiceexterno arquivo tabela de índice
Gerenciamento de espaço livre • Vetor de bits (n blocos) 0 1 2 n-1 … 0 bloco[i] livre 1 bloco[i] ocupado bit[i] = Cálculo do número de bloco (número de bits por word) * (número de words de valor 0) + deslocamento do primeiro bit 1
Gerenciamento de espaço livre (cont.) • Mapa de bits requer espaço extra • Exemplo: tamanho do bloco = 212 bytes tamanho do disco = 230 bytes (1 gigabyte) n = 230/212 = 218 bits (ou 32K bytes) • Fácil de obter arquivos contíguos • Lista vinculada (lista livre) • Não pode obter espaço contíguo facilmente • Sem desperdício de espaço • Agrupamento • Contagem
Gerenciamento de espaço livre (cont.) • Precisa proteger: • Ponteiro para lista livre • Mapa de bits • Deve ser mantido em disco • Cópias na memória e disco podem diferir • Não pode permitir que bloco[i] tenha situação onde bit[i] = 1 na memória e bit[i] = 0 em disco • Solução: • Defina bit[i] = 1 no disco • Aloque bloco[i] • Defina bit[i] = 1 na memória
Implementação de diretório • Lista linear dos nomes de arquivo com ponteiro para blocos de dados • simples de programar • demorado para executar • Tabela de hash – lista linear com estrutura de dados da tabela de hash • diminui tempo de busca de diretório • colisões – situações onde dois nomes de arquivo têm hash para o mesmo local • tamanho fixo
Eficiência e desempenho • Eficiência dependente de: • alocação de disco e algoritmos de diretório • tipos de dados mantidos na entrada de diretório do arquivo • Desempenho • cache de disco – seção separada da memória principal para blocos usados freqüentemente • free-behind e read-ahead – técnicas para otimizar acesso seqüencial • melhora desempenho do PC dedicando seção da memória como disco virtual, ou disco de RAM
Cache de página • Um cache de página guarda páginas ao invés de blocos de disco, usando técnicas de memória virtual • E/S mapeada na memória usa um cache de página • E/S de rotina pelo sistema de arquivos usa o cache de buffer • Isso leva à figura a seguir
Cache de buffer unificado • Um cache de buffer unificado usa o mesmo cache de página para guardar páginas mapeadas na memória e E/S normal do sistema de arquivos
Recuperação • Verificação de consistência – compara dados na estrutura de diretórios com blocos de dados no disco, e tenta consertar inconsistências • Usa programas do sistema para o backup de dados do disco para outro dispositivo de armazenamento (disquete, fita magnética, outro meio magnético ou óptico) • Recupera arquivo ou disco perdido, restaurando dados do backup
Sistemas de arquivos estruturados em log • Sistemas de arquivos estruturados em log (ou journaling) registram cada atualização no sistema de arquivos como uma transação • Todas as transações são gravadas em um log • Uma transação é considerada confirmada depois de gravada no log • Porém, o sistema de arquivos pode ainda não estar atualizado • As transações no log são gravada assincronamente no sistema de arquivos • Quando o sistema de arquivos é modificado, a transação é removida do log • Se o sistema de arquivos falhar, todas as transações restantes no log ainda precisam ser realizadas
O Network File System (NFS) da Sun • Uma implementação e uma especificação de um sistema de softeware para acessar arquivos remotos pelas LANs (ou WANs) • A implementação faz parte dos sistemas operacionais Solaris e SunOS rodando em estações de trabalho Sun usando um protocolo de datagrama não confiável (protocolo UDP/IP e Ethernet)
NFS (cont.) • Estações de trabalho interconectadas vistas como um conjunto de máquinas independentes com sistemas de arquivos independentes, permitindo o compartilhando entre esses sistemas de arquivos de modo transparente • Um diretório remoto é montado sobre um diretório do sistema de arquivos local • O diretório montado se parece com uma sub-árvore integral do sistema de arquivos local, substituindo a sub-árvore descendo do diretório local • Especificação do diretório remoto para a operação mount não é transparente; o nome de host do diretório remoto precisa ser fornecido • Arquivos no diretório remoto podem então ser acessados de modo transparente • Sujeito a verificação de direitos de acesso, potencialmente qualquer sistema de arquivos (ou diretório dentro de um sistema de arquivos) pode ser montado remotamente em cima de qualquer diretório local
NFS (cont.) • NFS foi criado para operar em ambiente heterogêneo de diferentes máquinas, sistemas operacionais e arquiteturas de rede; especificações NFS independentes desses meios • Essa independência é alcançada por meio dos primitivos RPC em cima de um protocolo External Data Representation (XDR) usado entre duas interfaces independentes de implementação • A especificação NFS distingue entre os serviços fornecidos por um mecanismo de montagem e os serviços reais de acesso a arquivo remoto
Montagem no NFS Montagens em cascata Montagens
Protocolo de montagem do NFS • Estabelece conexão lógica inicial entre servidor e cliente • Operação mount inclui nome do diretório remoto a ser montado e nome da máquina servidora que o armazena • Requisição de mount é mapeada na RPC correspondente e encaminhada para servidor de mount executando na máquina servidora • Lista de exportação – especifica sistemas de arquivos locais que o servidor exporta para montagem, junto com os nomes das máquinas que têm permissão para montá-los • Seguindo uma requisição de mount de acordo com sua lista de exportação, o servidor retorna um handle de arquivo – uma chave para outros acessos • Handle de arquivo – um identificador do sistema de arquivos e um número de inode para identificar o diretório montado dentro do sistema de arquivo exportado • A operação mount muda apenas a visão do usuário e não afeta o lado do servidor
Protocolo NFS • Oferece um conjunto de chamadas de procedimento remoto para operações de arquivo remoto. Os procedimentos admitem as seguintes operações: • procurar um arquivo dentro de um diretório • ler um conjunto de entradas de diretório • manipular links e diretórios • acessar atributos do arquivo • ler e gravar arquivos • Servidores NFS são sem estado; cada requisição precisa fornecer um conjunto completo de argumentos(NFS V4 está aparecendo agora – muito diferente, com estado) • Dados modificados precisam ser confirmados no disco do servidor antes que resultados sejam retornados ao cliente (perde vantagens do caching) • O protocolo NFS não oferece mecanismos de controle de concorrência
Três principais camadas da arquitetura NFS • Interface de sistema de arquivos do UNIX (baseada nas chamadas open, read, write e close, e descritores de arquivo) • Camada do Virtual File System (VFS) – distingue arquivos locais dos remotos, e arquivos locais são diferenciados também de acordo com seus tipos do sistema de arquivos • O VFS ativa operações específicas ao sistema de arquivos para lidar com requisições locais, de acordo com seus tipos • Chama as procedures do protocolo NFS para requisições remotas • Camada de serviço do NFS – camada inferior da arquitetura • Implementa o protocolo NFS
Tradução de nome de caminho do NFS • Realizada dividindo-se o caminho em nomes componentes e realizando-se uma chamada de pesquisa do NFS separada para cada par de nome de componente e vnode de diretório • Para tornar a pesquisa mais rápida, um cache de pesquisa do nome de diretório no cliente mantém os vnodes para nomes de diretório remotos
Operações remotas do NFS • Correspondência quase um-para-um entre chamadas de sistema regulares do UNIX e as RPCs do protocolo NFS (exceto abrir e fechar arquivos) • NFS adere ao paradigma de serviço remoto, mas emprega técnicas de buffering e caching por questão de desempenho • Cache de blocos de arquivo – quando um arquivo é aberto, o kernel verifica com o servidor remoto se deve apanhar ou revalidar os atributos em cache • Blocos de arquivo em cache são usados apenas se os atributos em cache correspondentes estiverem atualizados • Cache de atributo de arquivo – o cache de atributo é atualizado sempre que novos atributos chegam do servidor • Clientes não liberam blocos de escrita adiada até que o servidor confirme que os dados forma gravados em disco