Sistemas de Arquivos Sistemas de arquivos: – Mecanismos para armazenamento on-line e acesso de dados e programas. Sistemas de Arquivos Um sistema de arquivos implica: – Conceituação de arquivos e diretórios – Estrutura de armazenamento das informações em midia – Desempenho – Integridade das informações armazenadas Sistemas de Arquivos Existem inúmeros tipos de sistemas de arquivos hoje em dia: Sistema Operacional Sistema de Arquivos Nativo Linux Ext2FS, Ext3FS Windows 9x/ME FAT32, FAT16 Windows NT/2000/XP NTFS FreeBSD UFS Solaris UFS Sistemas de Arquivos - Conceito de arquivo Arquivo: – – – unidade lógica de armazenamento Um conjunto de dados relacionados que são gravados em memória secundária. Sistema operacional os mapeia nos dispositivos físicos. Definidos por estrutura interna, atributos e operações. Sistemas de Arquivos - Conceito de arquivo Estrutura – interna Múltiplas possíveis estruturas podem existir, tais como: Organização em registros sequenciais Formato de programa (arquivos executáveis) Organizado para acesso rápido (ex: árvore balanceada) Simples coleções de bytes sequenciais Sistemas de Arquivos - Conceito de arquivo Possíveis – estruturas internas Conjuntos de registros variáveis ou fixos Sistemas de Arquivos - Conceito de arquivo Possíveis – estruturas internas Conjuntos de dados indexados para rápida localização Sistemas de Arquivos - Conceito de arquivo Estrutura interna – Porém ... desvantajoso o sistema operacional suportar diferentes estruturas. – Melhor deixar a cargo de bibliotecas em nível de usuário. Assim, abordagem usual é ... arquivos sem estrutura interna, parecendo apenas um conjunto de bytes empacotados – Sistemas de Arquivos - Conceito de arquivo Atributos – – Arquivos são referenciados por seus nomes. Alguns atributos típicos: Atributo Significado Nome Identificação do arquivo Tipo Para determinar como manipulá-lo Localização Onde se localiza em midia Tamanho Quanto espaço ocupa Proteção Informação para controle de acesso Datas Datas para determinadas operações efetuadas sobre o arquivo Proprietário Usuário e grupo donos do arquivo Sistemas de Arquivos - Conceito de arquivo Arquivos Arquivos no Linux (e Unix em geral) são repositórios de dados, e possuem um número de atributos. Alguns atributos são visíveis ao se executar o programa “ ls -l ”: -rw-r--r-- 1 sobral users permissões 780 2009-02-22 23:47 ip.c usuário grupo tamanho dono dono ligações data última modificação nome Sistemas de Arquivos - Conceito de arquivo Arquivos Visualização dos atributos de um arquivo com o programa stat: Sistemas de Arquivos - Conceito de arquivo Arquivos Vendo as escritas no disco com vmstat, ao se criar um arquivo grande: Repare também nisto ... Sistemas de Arquivos - Conceito de arquivo Arquivos Vendo as leituras do disco com vmstat, ao se ler um arquivo grande: Repare também nisto ... Sistemas de Arquivos - Conceito de arquivo Operações Operação Significado Criação Procedimentos necessários para a criação de arquivo Remoção Procedimentos necessários para a remoção de arquivo Escrita Gravação sequencial de informação no arquivo Leitura Leitura sequencial de informação no arquivo Posicionamento Posicionamento do ponteiro interno do arquivo, para próxima operação de leitura ou escrita Truncamento Remoção de um pedaço do arquivo Acesso a atributos Leitura ou alteração de atributos Bloqueio Bloqueio e desbloqueio de todo um arquivo ou parte dele Sistemas de Arquivos - Conceito de arquivo Operações – (cont.) Algumas informações importantes são mantidas para suporte às operações. Informação Significado Ponteiro interno do arquivo Indica em que byte, dentro da sequência lógica interna do arquivo, se dará a próxima operação de leitura ou escrita. Associado a arquivos abertos (cada arquivo aberto possui um ponteiro interno). Contagem de arquivos abertos Para liberação de recursos em memória mantidos pelo sistema operacional, os quais descrevem os arquivos em uso. Localização do arquivo em memória secundária Mantida em RAM para acelerar a localização do arquivo em midia. Está associada a cada arquivo aberto. Sistemas de Arquivos - Conceito de diretório Diretórios: listas de arquivos, para organização destes em midia – – – Contêm registros que descrevem os arquivos em disco. Podem ser implementados com diferentes estruturas. Comumente são também arquivos (porém ditos "especiais") Sistemas de Arquivos - Conceito de diretório Exemplo de diretório em árvore Sistemas de Arquivos - Conceito de diretório Estrutura da árvore de diretórios do Linux Sistemas de Arquivos - Conceito de diretório Uma pequena parte da estrutura de diretórios do Linux ... Sistemas de Arquivos - Conceito de diretório Estrutura – A estrutura de diretório tem como objetivos: Eficiência: localização rápida de arquivos Nomeação: para conveniência de usuários – Dois usuários podem usar mesmo nome para arquivos diferentes – Um arquivo pode ter diferentes nomes Agrupamento: separar arquivos de acordo com uma organização lógica (ex: programas, documentos, ...) Sistemas de Arquivos - Conceito de diretório Estrutura: – – – – em árvore A estrutura mais comum para diretórios Permite a organização de arquivos de forma hierárquica A árvore possui uma raiz, e cada arquivo ou subdiretório é endereçado por um caminho único (pathname) Usualmente implementados como arquivos especiais. Sistemas de Arquivos - Conceito de diretório Exemplo de diretório em árvore: Sistemas de Arquivos - Alocação de blocos a arquivos A midia (discos pricipalmente) possui uma divisão intrínseca de sua área de armazenamento: Disco-rígido (HD): Pratos divididos em trilhas Trilhas divididas em setores Setor típico: 512 bytes Sistemas de Arquivos - Alocação de blocos a arquivos Todas transferências entre computador e midia feitas em blocos: – Bloco = um ou mais setores agrupados Os conteúdos dos arquivos são armazenados em sequências de blocos – As sequências lógicas de blocos podem ser diferentes das sequências físicas dos blocos. Sistemas de Arquivos - Alocação de blocos a arquivos Alocação – contígua Cada arquivo ocupa uma sequência de blocos contíguos em disco. A sequência física de blocos é a mesma que a sequência lógica, a não ser pelo primeiro bloco. – – Para identificar a sequência de blocos, basta conhecer o primeiro bloco e o tamanho do arquivo Provê um bom desempenho nas operações de E/S sobre o arquivo. Minimiza-se o número de posicionamentos em disco. Sistemas de Arquivos - Alocação de blocos a arquivos Alocação contígua Sistemas de Arquivos - Alocação de blocos a arquivos Estrutura simplificada do sistema de arquivos ISO9660 em disco: Volume descriptor Path Table Diretório raiz Blocos de dados (arquivos e diretórios) Sistemas de Arquivos - Alocação de blocos a arquivos Alocação – contígua Problemas: Dificuldade – para aumentar tamanho de arquivos Se não houver espaço livre contíguo ao final do arquivo, deve-se removê-lo e recriá-lo em outro lugar. Fragmentação – – externa Exige compactação periódica do sistema de arquivos Eficiente para sistemas de arquivos somente leitura: Ex: ISO 9660 (CD e DVD) Sistemas de Arquivos - Alocação de blocos a arquivos Alocação – – – – com lista encadeada A sequência lógica de blocos pode ser totalmente diferente da sequência física Cada bloco contém o número do próximo bloco da sequência. Deve-se conhecer o primeiro bloco e o tamanho do arquivo ou o último bloco Não há fragmentação externa Um arquivo pode crescer enquanto houver blocos livres Não é necessário fazer compactação peíódica do sistema de arquivos Sistemas de Arquivos - Alocação de blocos a arquivos Alocação com lista encadeada – Problema: funciona bem somente para acesso sequencial, pois para posicionar num bloco N, deve ler os blocos anteriores. Sistemas de Arquivos - Alocação de blocos a arquivos Alocação – – indexada Um aperfeiçoamento da lista encadeada Resolve o problema de precisar ler os blocos anteriores para posicionar em um bloco N. Os números dos blocos que compõem as sequências de blocos ficam armazenados numa estrutura em separado. A estrutura mapeia os número de blocos lógicos para os correspondentes blocos físicos. Basicamente existem dois tipos de estrutura para indexação de blocos: FAT (File Allocation Table): Tabela de alocação de arquivos – I-Nodes (Index-Nodes): nó de indexação – Sistemas de Arquivos - Alocação de blocos a arquivos FAT – – – Uma tabela que possui uma entrada para cada possível bloco de dados do sistema de arquivos Cada entrada na FAT fornece o número do próximo bloco físico da sequência. Nos diretórios, para cada arquivo ali contido há o número do primeiro bloco físico da sequência, e o tamanho do arquivo, além de outros atributos do arquivo. Sistemas de Arquivos - Alocação de blocos a arquivos Sistema de arquivos FAT em disco: Sistemas de Arquivos - Alocação de blocos a arquivos FAT Sistemas de Arquivos - Alocação de blocos a arquivos Inodes – – – Estrutura em disco que contém atributos de um arquivo, e informação sobre a localização de seus blocos de dados. Inodes são armazenados em uma tabela em disco, e referenciados por suas posícões nesta tabela Uma pequena tabela, parte do inode, indexa os blocos físicos que compõem o arquivo. Para arquivos grandes, usam-se blocos de indexação indiretos, que são usados para guardar mais ponteiros para blocos. Sistemas de Arquivos - Alocação de blocos a arquivos Estrutura em disco de um sistema de arquivos com Inodes: Superbloco Bitmaps Tabela de inodes (milhares deles ...) Blocos de dados (arquivos e diretórios) Sistemas de Arquivos - Alocação de blocos a arquivos Um inode Sistemas de Arquivos - Alocação de blocos a arquivos Inodes – – – Diretórios são implementados como listas de associações nome:no inode Cada associação é chamada de link (hard link). Pode haver mais um link para um mesmo inode Inodes – possuem um atributo contador de links. O diretório em si também é um arquivo, e portanto é descrito por um inode. O diretório raiz é descrito por um inode predeterminado (ex: em Ext2FS, o inode 2 corresponde ao diretório raiz) Sistemas de Arquivos - Alocação de blocos a arquivos Inodes – Exemplo de diretório Sistemas de Arquivos – Eficiência e Desempenho Tamanho de bloco – Existe uma relação da velocidade de acesso e aproveitamento de espaço em função do tamanho de bloco Sistemas de Arquivos – Eficiência e Desempenho Cache – – – Existe localidade nas referências aos blocos em midia. Uma cache poderia acelerar enormemente as operações, mantendo cópias de blocos. Memória RAM livre é usada normalmente como cache de disco. A capacidade da cache varia, então, em função da memória livre. Sistemas de Arquivos – Eficiência e Desempenho Cache – – Quando enche a cache, faz-se necessário dela retirar blocos Devem-se retirar blocos de forma a minimizar o impacto no desempenho Blocos muito acessados devem permanecer em cache Devem-se descartar prioritariamente blocos que não foram modificados, para evitar a operação de escrita em disco – O algoritmo LRU (Least Recently Used) é apropriado para a manutenção da cache. Sistemas de Arquivos – Eficiência e Desempenho Cache – Para padrões de acesso sequenciais, outros algoritmos são mais eficientes. Read-ahead: lê blocos em adiantamento ao solicitado, mantendo-os em cache. Write-behind (lazy-write): retarda a escrita de blocos. Sistemas de Arquivos – Integridade Inconsistências – Existe informação redundante no sistema de arquivos Ex: inodes indicam os blocos alocados a cada arquivo, e o bitmap indica que blocos estão livres – Há também relacionamentos entre as estruturas em disco Ex: Na FAT informam-se as sequências de blocos que compõem os arquivos, e nos diretórios relacionam-se os arquivos com as sequências descritas na FAT. – Sob certas circunstâncias, as informações em uma estrutura podem não estar em acordo com aquelas contidas em outra estrutura. Sistemas de Arquivos – Integridade Inconsistências – As inconsistências podem ser causadas por desligamento súbito da máquina. Operações em andamento ficam incompletas O uso de cache incrementa o problema, pois muitas operações ficam armazenadas em RAM, e são perdidas se esta for desenergizada antes que a midia seja sincronizada com a cache. – O estado do sistema de arquivos deve sempre ser verificado ao se iniciar a utilização deste. Sistemas de Arquivos – Integridade Inconsistências – Possíveis inconsistências podem ser detectadas através de uma flag no sistema de arquivos Ao se tentar iniciar o uso (montar) do sistema de arquivos, a flag deve ter o valor 1 Se neste momento tiver valor 0, o sistema de arquivos deve ser verificado à procura de inconsistências A flag tem seu valor colocado em 0 assim que o sistema de arquivos inicia o seu uso A flag somente volta para 1 quando se encerra normalmente o uso (desmonta-se) do sistema de arquivos Sistemas de Arquivos – Integridade Inconsistências – Ocupação do espaço Inodes podem estar inconsistentes com bitmap Inodes Bitmap Consequência Correção Bloco em uso Bloco livre Destruição de informação do arquivo que usa o bloco O bitmap deve indicar que o bloco está em uso Bloco livre Bloco em uso Desperdício de espaço O bitmap deve indicar que o bloco está livre Arquivos envolvidos têm informações destruídas Copiar o conteúdo do bloco para outro bloco livre, e fazer com que um dos inodes aponte a cópia Bloco em uso por mais de um inode - Sistemas de Arquivos – Integridade Inconsistências – Ocupação do espaço Sistemas de Arquivos – Integridade Inconsistências – Diretórios Diretórios podem estar inconsistentes com inodes Inodes Diretórios Consequência Correção Há N links Há < N links Arquivo nunca será removido O contador de links do inode deve ser corrigido Há N links Há > N links Arquivo pode ser removido prematuramente O contador de links do inode deve ser corrigido Há pelo menos um link Não há links Arquivo perdido, ou desperdício de espaço Cria-se uma entrada em diretório que aponte o inode (diretório lost+found) Sistemas de Arquivos – Integridade Inconsistências – Diretórios A FAT e os diretórios podem estar inconsistentes FAT Diretórios Consequência Correção Há uma determinada sequência de blocos Nenhuma entrada aponta a sequência Espaço desperdiçado, ou arquivo perdido Cria-se um arquivo que aponte a sequência (ex: arquivos .CHK) Sequência de N blocos O tamanho do arquivo é maior que N blocos Erro em acessos ao arquivo. O tamanho do arquivo deve ser corrigido Arquivos envolvidos podem ser corrompidos Fazer cópias dos blocos das sequências, e desvinculá-las. Duas sequências se misturam - Sistemas de Arquivos – Integridade Inconsistências – Programas especiais fazem a verificação das inconsistências Cada tipo de sistema de arquivo possui seu verificador Ex: fsck (File System Checker) para sistemas de arquivos em sistemas operacionais tipo Unix Ex: chkdsk para sistemas de arquivo em sistemas operacionais Windows NT e sucessores