sistema de arquivos

Download Report

Transcript sistema de arquivos

Sistemas Operacionais
Sistema Operacionais
Sistemas de Arquivos
Sistemas Operacionais
Sistema de Arquivos
• Não é possível gravar dados
disco (HD, memory card, pen
drive, CD) sem um sistema de
arquivos, que é, basicamente,
uma estrutura que indica como os
arquivos devem ser gravados e
guardados em mídias.
Sistemas Operacionais
Sistema de Arquivos
• Através do sistema de arquivos, é
que se determina o espaço
utilizado no disco, além de ser o
método que permite gerenciar
como partes de um arquivo
podem ficar "espalhadas" no
dispositivo de armazenamento.
Sistemas Operacionais
Sistema de Arquivos
• Um outro detalhe importante: é
o sistema de arquivos que
determina como arquivos
podem ser gravados,
copiados, alterados,
nomeados e até apagados.
Sistemas Operacionais
Sistema de Arquivos
• Ou seja, resumindo, toda e
qualquer manipulação de dados
numa mídia necessita de um
sistema de arquivos para que
essas ações sejam possíveis. Se
não houver estrutura de
armazenamento e manipulação é
impossível gravar dados.
Sistemas Operacionais
Introdução
• O sistema de arquivos é a parte
mais visível do sistema operacional.
• Cria um recurso lógico a partir de
recursos físicos através de uma
interface coerente e simples, fácil de
usar
• Mecanismo para armazenamento e
acesso a dados e a programas
• Duas partes básicas:
Sistemas Operacionais
– Arquivos - armazenamento de dados e de
programas
– Diretórios - organização e informações sobre
arquivos
• Partição
– permite - a partir do disco físico - criar discos
lógicos
Objetivos do sistema de arquivos
• Fornecer mecanismos para usuários
manipular arquivos e diretórios
• Garantir a validade e coerência de dados
Sistemas Operacionais
– Minimizar ou eliminar o risco de
perda/alteração de dados
• Otimizar o acesso
Objetivos do sistema de arquivos
• Fornecer suporte a operações de E/S a
diferentes dispositivos
Sistemas Operacionais
– Interface única para interface usuário de
funções de E/S
• Suporte a vários usuários
(multiprogramação)
– Uso compartilhado (proteção e acesso
concorrente)
Requisitos mínimos:
Ponto de Vista do Usuário
Sistemas Operacionais
Cada usuário deve ser capaz de:
• Criar, apagar, ler e alterar arquivos
• Controlar as permissões de acesso a seus
arquivos
– Estruturar o sistema de arquivos de forma a
adequá-lo a suas necessidades específicas
Sistemas Operacionais
Requisitos mínimos:
Ponto de Vista do Usuário
Cada usuário deve ser capaz de:
• Transferir dados entre arquivos
• Realizar backup’s e recuperar arquivos
em caso de problemas
• Nomear os arquivos de forma simbólica
Requisitos mínimos:
Ponto de Vista do Sistema
• Identificar e localizar um determinado
arquivo
– Empregar diretório para descrever a localização de
todos os arquivos e de seus atributos
Sistemas Operacionais
• Gerenciar espaço físico do disco
– Alocar blocos livres a arquivos em criação/expansão
– Liberar blocos de arquivos removidos
– Mecanismos para localizar eficientemente blocos
(setores) que compõem arquivos
Conceito de arquivo
• Menor unidade do sistema de arquivos
• Espaço lógico de endereçamento contíguo
Sistemas Operacionais
– Seqüência de bytes, de linhas, ou de registros
• Possui uma estrutura interna cuja
interpretação depende do sistema
operacional e do programa que o
manipula
– Arquivos de dados - numérico, caractere,
binário
– Programa - fonte, objeto, executável
Atributos de um arquivo
Sistemas Operacionais
• Informações sobre arquivos
– Nome: informação simbólica empregada pelo
usuário para referenciar o arquivo
– Tipo: binário, texto, executável, caracter,
bloco
– Localização: posição do arquivo em um
determinado dispositivo E/S
– Tamanho: número de bytes que compõem o
arquivo
Sistemas Operacionais
– Proteção: controla acesso de leitura, escrita e
execução ao arquivo
– Hora e data de criação e identificação do
usuário: informações destinadas a proteção,
segurança e monitoração
• Atributos são mantidos em uma estrutura
a parte
• Diretório
Operações básicas sobre arquivos
Sistemas Operacionais
• Arquivo é um tipo abstrato de dados sobre o
qual se pode efetuar uma série de operações
– Criação (create)
– Escrita (write) e leitura (read)
– Reposicionamento em um ponto qualquer do arquivo
(file seek)
– Remoção (delete)
– Abertura (open) e encerramento (close)
– Adicionalmente: renomeação (rename); appending,
etc
• Geralmente correspondem a chamadas de
sistema
Sistemas Operacionais
Controle de acesso
• Importante controlar o acesso aos
arquivos devido a questões de segurança
e de confidencialidade
• Objetivo é evitar acessos indevidos a
arquivos
• Baseado na identificação dos usuários
– Sistema de autenticação padrão (login name
+ senha)
– Usuários possuem direitos de acessos
• Solução típica:
Sistemas Operacionais
– Lista de acesso e grupo
Sistemas Operacionais
Listas de acesso
• Consiste em associar a cada arquivo e/ou
diretório uma lista de acesso que determina que
tipos de acessos são permitidos para cada
usuário
• Maior inconveniente é o tamanho da lista
• Uma solução consiste em:
– Criar classes de usuários - e.g.: proprietário, grupo,
universo
– Tipos de acessos - e.g: read, write, modify, execute
Exemplo: SISTEMAS UNIX
Sistemas Operacionais
• Cada objeto oferece 3 bits (rwx) para três
domínios diferentes: owner, group e others
• Problema de flexibilidade
– Quando um usuário pertence a vários grupos ele é
identificado por um grupo primário e o arquivo
(/etc/groups) mantém todos os grupos a que ele
pertence
• Exemplo:
– r w x r- - r - - 1 paulo professor 214056 Mai 30 22:19
windbind.pdf
Sistemas Operacionais
Estrutura interna dos arquivos
• Forma como os dados são dispostos em
um arquivo
• Cada tipo de arquivo possui uma estrutura
interna apropriada a sua finalidade
• Em geral a estrutura interna é
transparente ao sistema operacional.
• Executáveis são organizados em
segmentos de código e dados
Sistemas Operacionais
• Arquivos de imagens são organizados em
termos de pixels
• Alguns sistemas operacionais suportam
nomes de arquivos onde o tipo é indicado
– e.g.: Windows (arquivos .doc, .pdf, .xls, .ppt,
etc)
Métodos de acesso
Sistemas Operacionais
• Forma pela qual o conteúdo de um
arquivo é acessado
• Estrutura lógica de um arquivo em função
da forma de acesso
– Conceito de registro: coleção de campos que
mantém uma relação entre si
• Métodos elementares de acesso:
– Acesso seqüencial
– Acesso relativo
Sistemas Operacionais
Acesso seqüencial
• Acesso a um arquivo é feito através de
primitivas (chamadas de sistema) do tipo
read e write
• Cada chamada de sistema read retorna
ao processo os dados seguintes àqueles
que foram lidos na chamada anterior
• Método não adequado a todas aplicações
– e.g.: acesso e atualização a cadastros de
funcionários
Acesso relativo
Sistemas Operacionais
• Provê uma chamada de sistema
específica para indicar o ponto em que um
arquivo deve ser lido/escrito
• Implementado através da abstração de
posição corrente no arquivo
Outros tipos de acesso
• Os métodos seqüênciais e relativos não
resolvem todos os tipos de acesso
Sistemas Operacionais
– e.g.: localizar um registro a partir do contéudo
• Necessidades de métodos de acesso mais
sofisticados, tais como seqüencial indexado,
indexado, direto, hash, etc
– Normalmente implementados por programas
específicos
– Baseados nos métodos de acesso seqüêncial e
relativo
Implementação de arquivos
Sistemas Operacionais
• Arquivos são implementados através da
criação, para cada arquivo no sistema, de
uma estrutura de dados
• Descritor de arquivo é um registro que
mantém Informações sobre o arquivo
Sistemas Operacionais
• Informações típicas (atributos):
– Nome do arquivo
– Tamanho em bytes
– Data e hora da criação, do último acesso, da
última modificação
– Identificação do usuário que criou o arquivo
– Listas de controle de acesso
– Local do disco físico onde o contéudo do
arquivo foi colocado
Alocação espaço em disco
Sistemas Operacionais
• Como alocar espaço em disco de forma
que os arquivos sejam armazenados de
forma eficiente e que permita acesso
rápido
• Três métodos:
– Contigüo
– Encadeado
– Indexado
Sistemas Operacionais
Alocação contígua
Sistemas Operacionais
• Arquivo é uma seqüência de blocos contíguos
alocados no momento da criação
• Endereços no disco são lineares
– bloco lógico i e i+1 são armazenados fisicamente em
seqüência
– Reduz a necessidade de seek já que blocos estão na
mesma trilha
– No pior caso necessita apenas a troca de cilindro
• Arquivo é descrito através de uma entrada na
forma:
– Bloco físico inicial
– Tamanho do arquivo em bloco
Sistemas Operacionais
Alocação contígua
Problemas com alocação contígua
• Problema 1: encontrar espaço para um
novo arquivo
Sistemas Operacionais
– Gera fragmentação externa
– Necessidade de compactação
Sistemas Operacionais
• Problema 2: determinar o espaço
necessário a um arquivo
– Arquivos tendem a crescer, e se não há
espaço contíguo disponível?
– Aborta execução do programa com erro
– Recopia o programa para uma zona maior
– Pré-alocar um espaço máximo para o arquivo
– Fragmentação interna
Alocação encadeada
• Soluciona problemas da alocação contígua
• Alocação é baseada em uma unidade de
tamanho fixo (bloco)
• Arquivo é uma lista encadeada de blocos
Sistemas Operacionais
– Cada bloco contém um ponteiro para o próximo bloco
• Arquivo é descrito em uma entrada na forma:
– Bloco inicial do arquivo
– Bloco final do arquivo ou tamanho do arquivo em
blocos
Sistemas Operacionais
Alocação encadeada
Sistemas Operacionais
Prós e contras da alocação
encadeada
• Elimina a fragmentação externa porém gera
fragmentação interna
• Arquivos podem crescer indefinidamente já que
não há uma relação física entre blocos físicos e
lógicos
• O acesso a um bloco i implica em percorrer a
lista encadeada - afeta o desempenho
• Adequado para acesso seqüencial a arquivos
• Espaço necessário no bloco para
armazenamento de ponteiros
– e.g.: Para acessar 4 Gbytes necessita 232 ponteiros
(4 bytes), ou seja, 0.78% de um setor de 512 bytes
FAT: variação de alocação
encadeada
• File Alocation Table (FAT) - esquema adotado
pelo DOS
• Unidade de alocação é o cluster (conjunto de
setores)
– Arquivo é formado por um conjunto de cluster
Sistemas Operacionais
• FAT é uma tabela de encadeamento de clusters
– Uma entrada na FAT para cada cluster do disco
(sistema de arquivos)
– Composta por um ponteiro (end. de um cluster)
– Arquivo é descrito por uma seqüência de entradas na
FAT, cada entrada
– apontando para a próxima entrada
Sistemas Operacionais
Alocação indexada
• Busca resolver o problema de ponteiros
espalhados pelo disco que a alocação
encadeada provoca
• Mantém, por arquivo, um índice de blocos
que o compõe
• O índice é mantido em um bloco
• Diretório possui um ponteiro para o bloco
onde está o índice
• associado a um determinado arquivo
Sistemas Operacionais
Alocação indexada
Sistemas Operacionais
Prós e contras da alocação
indexada
• Permite o acesso randômico a blocos
independentes de sua posição relativa no
arquivo
• Tamanho máximo do arquivo é limitado
pela quantidade de entradas suportadas
pelo bloco
Sistemas Operacionais
Organização da cache de disco
• Objetivo é manter na memória principal
uma certa quantidade de blocos do disco
• Não adiciona nem elimina funcionalidades
ao sistema de arquivos - melhora o
desempenho do sistema de arquivos
• Normalmente a cache de disco é mantida
em uma área da memória principal e é
controlada pelo sistema operacional
Funcionamento da cache de disco
• Em uma requisição de E/S verifica se o bloco
está na cache
Sistemas Operacionais
– Sim: realiza o acesso a partir dessa cópia em
memória
– Não: realiza o acesso a partir do disco e carrega o
bloco para a cache
• A modificação de valores é feito em blocos na
cache
• Problema da perda de informações e da
consistência do sistema de arquivos em caso de
pane do sistema (falta de energia)
Sistemas Operacionais
Gerência de espaço livre
• Necessidade de alocar espaço livre do
disco a arquivos
• Muitos sistemas operacionais vêm o disco
como uma seqüência de blocos e não de
setores
• A unidade de gerência do espaço físico
passa a ser o bloco
Mapa de bits
Sistemas Operacionais
• Forma simples de gerenciar o espaço em
disco
• A cada bloco do disco está associado um
bit indicando se o bloco está livre ou
ocupado
Lista de blocos livres
Sistemas Operacionais
• Os blocos livres são organizados em uma
lista
• A lista é mantida no próprio disco
– Problema é o tamanho da lista
– Paliativo: A medida que o espaço em disco é
ocupado a lista diminui de tamanho liberando
espaço do disco
O conceito de diretório
• Estrutura de dados que contém informações sobre
arquivos
– Atributos
– Localização
– Propriedades
Sistemas Operacionais
• Diretório é um arquivo do sistema operacional
– Fornece um mapeamento entre o nome de um arquivo e o
arquivo propriamente dito
• Existem duas formas básicas para se organizar um
diretório
• Linear
• Em árvore
Diretório linear
Sistemas Operacionais
• Mais simples, o diretório corresponde a
uma lista de todos os arquivos do disco
• Desvantagem:
– Problema de nomeação e agrupamento
– 2 ou mais usuários não podem ter arquivos
com o mesmo nome
Diretório linear a dois níveis
Sistemas Operacionais
• Existência de um diretório principal que
contém uma entrada para cada usuário
cadastrado no sistema
• Entrada corresponde a um subdiretório
Diretório em árvore
Sistemas Operacionais
• Generealização do conceito de
subdiretórios permitindo aos usuários criar
livremente os seus próprios subdiretórios
Sistemas Operacionais
Sistema de Arquivos FAT16
• FAT é a sigla para File Allocation Table (ou
tabela de alocação de arquivos).
• Quando um arquivo é salvo num HD por
exemplo, o FAT divide a área do disco em
pequenos blocos. Assim, um arquivo pode (e
ocupa) vários blocos, mas eles não precisam
estar numa seqüência.
• Os blocos de determinados arquivos podem
estar em várias posições diferentes. Daí a
necessidade de uma tabela para indicar cada
bloco.
Sistemas Operacionais
Sistema de Arquivos FAT16
• Ao trabalharmos com HDs (e outros
discos) é necessário prepará-los, fazendo
uma formatação física. Este processo,
divide os discos em trilhas (uma espécie
de caminho circular) e setores
(subdivisões de cada trilha, com
geralmente 512 bytes). Um conjunto de
trilhas recebe o nome de cilindro.
Sistemas Operacionais
• A formatação física já vem de fábrica e
pode ser alterada se o usuário quiser
dividir o disco em partições. Depois devese fazer uma formatação lógica, que nada
mais é do que "instalar" o sistema de
arquivos no dispositivo de
armazenamento.
Sistemas Operacionais
• O sistema de arquivos FAT não trabalha
diretamente com cada setor, mas sim com
um grupo de setores. Esse grupo é
chamado de cluster (ou unidade de
alocação). Se por exemplo, um disco com
setor de 512 bytes, tiver 5 KB de tamanho,
ele terá 10 setores e 5 clusters, se cada
cluster ocupar dois setores.
Sistemas Operacionais
• Sendo assim, quando o FAT precisar
acessar um determinado setor, primeiro
ele descobre em qual cluster ele se
encontra. É válido citar que tanto o FAT
quanto o FAT32 trabalham de acordo com
este princípio.
Sistemas Operacionais
• O sistema FAT exige que cada cluster do
disco seja usado somente para um único
arquivo, ou seja, num mesmo cluster, não
pode haver informações sobre mais de um
arquivo. Isso pode até parecer óbvio, mas
gera um problema: desperdício.
Sistemas Operacionais
Sistema de Arquivos FAT32
• FAT32 - A versão OSR-2 do Windows 95
(conhecido também como Windows "B") trouxe
um novo sistema de arquivos chamado de
FAT32.
• Uma evolução natural da antiga FAT16, ela
permite 32 bits de endereçamento de dados,
permitindo clusters de apenas 4 kbytes, mesmo
em partições maiores que 2 GB. O tamanho
máximo de uma partição com FAT32 é de 2048
Gbytes, ou 2 Terabytes.
Sistemas Operacionais
Comparação FAT16 x FAT32
Sistemas Operacionais
Sistema de Arquivos VFAT
• VFAT é a sigla para Virtual File Allocation Table.
Trata-se de um sistema introduzido no Windows
95. Ele possui as mesmas características do
sistema FAT, mas pode suportar nome de
arquivos longos. O sistema de arquivos FAT só
trabalha com nomes no estilo 8.3 (8 caracteres
para o nome e 3 para a extensão, como
"palavras.txt").Com o VFAT, é possível ter
nomes de arquivos com até 256 caracteres mais
3 para a extensão. O sistema FAT32 herdou
todas as características do VFAT.
Sistemas Operacionais
Sistemas de arquivos NTFS
• NTFS é a sigla para New Technology File
System. Desde a época do DOS, a
Microsoft vinha utilizando o sistema de
arquivos FAT
• FAT apresenta algumas limitações,
principalmente no quesito segurança.
• Microsoft lançou o sistema de arquivos
NTFS, usado inicialmente em versões do
Windows para servidores.
Sistemas Operacionais
• Este sistema de arquivos é usado pelo
Windows NT. Nele, os clusters são de
apenas 512 bytes, sendo o espaço em
disco desperdiçado quase nenhum.
Somente os Windows NT / 2000 / 2003 /
2008/ XP / Vista / 7, são capazes de
entender este formato de arquivos, e a
opção de formatar o HD em NTFS é dada
durante a instalação
Sistemas Operacionais
• New Technology File System, conhecido
pela sigla NTFS
• sistema de arquivos HPFS (High
Performance File System)
Sistemas Operacionais
• Confiança (fazendo-o ser tolerante a
falhas)
• Segurança
• Arrays RAID
• Rede
Sistemas Operacionais
Sistema de Arquivos HPFS
• O HPFS é o sistema de arquivos utilizado
pelo OS/2, com recursos que se
aproximam muito dos permitidos pelo
NTFS como nome de arquivos com até
254 caracteres incluindo espaços,
partições de até 512GB unidades de
alocação de 512 bytes.
Sistemas Operacionais
• O OS/2 foi o sistema operacional
concorrente do Windows 95 lançado pela
IBM. É pouco conhecido, porém é
tecnicamente muito superior ao Windows
95.
Embora muito eficiente este sistema de
arquivos caiu em desuso juntamente com
o OS/2, sendo suportado atualmente
somente pelo Linux.
Sistemas Operacionais
Sistemas de Arquivos no Linux
• Todo sistema operacional precisa de um
sistema de arquivos e o Linux não é
exceção à regra, pois afinal de contas um
sistema de arquivos serve para fornecer
ao sistema operacional toda a uma
estrutura para ler, gravar e executar
arquivos. Dependendo do tipo de sistema
de arquivos pode se ter determinados
recursos.
Sistemas Operacionais
• Hoje em dia, o Linux tem uma gama muito
grande de opções de sistema de arquivos:
Desde o velho EXT2 até os atuais com
suporte a Journaling, como o EXT3,
ReiserFS e XFS.
Sistemas Operacionais
História
• Os sistemas de arquivos utilizados atualmente
no Linux são avançados e tem vários recursos,
mas não foi sempre assim.
• Nas primeiras versões do kernel, o sistema de
arquivos utilizado era o EXT. Extremamente
frágil e com muitas limitações, como por
exemplo, permissão para criação de partições
de somente até 2GB e fácil desfragmentação.
• A partir do EXT2 a limitação de 2GB para
partições caiu por terra, já que ele permite
criação de partições de até 4Terabytes!
Sistema de Arquivos EXT2
Sistemas Operacionais
• Sem dúvida alguma o EXT2 foi uma
evolução e tanto em relação ao EXT
(suporte a regras de permissões bem
definidas)
• Estrutura do EXT2:
– Boot Block
– Inodes
– Diretórios
– Links
Sistemas Operacionais
• Ao contrário do Windows, que trata
dispositivos de hardware como tal, o Linux
trata tudo como arquivo.
• Os dispositivos de hardware ficam todos
no diretório /dev
• Outra característica é o recurso de
montagem
• acessar partições de diversos tipos, como
FAT, FAT32, iso9660 e outras
Sistemas Operacionais
• Um grande problema do EXT2 é a sua
baixa tolerância a falhas em caso de
quedas de energia ou desligamento
inadequado, sendo talvez até mais frágil
do que a FAT32 do Windows
• FSCK
• Journaling
Sistemas Operacionais
Journaling
• limitações do EXT2
• capacidade de acompanhar as mudanças
que serão feitas nos arquivos antes de
serem efetivadas
• Estes registros são gravados numa área
separada do sistema de arquivos,
chamada “Journal” ou “registros de LOG”
• FSCK
Sistemas Operacionais
• Nesta categoria de sistemas de arquivos
existem algumas opções como EXT3,
ReiserFS e JFS, sendo que os mais
utilizados são o EXT3 e o ReiserFS
Sistemas de Arquivos ReiserFS
Sistemas Operacionais
•
•
•
•
ReiserFS > seu desempenho
blocos dinâmicos
modo como ele armazena os registros
metadata (estrutura de controle de um arquivo,
ou seja, onde é especificado seu tamanho,
permissões, data de criação, modificação, etc..)
• recuperar o arquivo, mas os dados contidos nele
podem ficar truncados ou mesmo perdidos
Sistemas Operacionais
Sistema de Arquivos EXT3
• EXT3 é o sucessor natural do EXT2
• sistema de arquivos para Linux mais
utilizado atualmente
• suporte para tecnologia Journaling
• diferencia-se do modo de trabalho em
Journaling do ReiserFS
• uma perda de dados do arquivo é
reduzida
Sistemas Operacionais
• registro de LOG ser completo >> Journal é
acessado com muito mais freqüência
• desempenho em relação ao ReiserFS
• Journal se corromper
Sistema de Arquivos EXT4
Sistemas Operacionais
• EXT4 é o sucessor natural do EXT4
• Sistema de arquivos lançado em 2006
• Suporta sitemas de arquivos de 1 exabyte
– 1024 giga = 1 tera
– 1024 tera = 1 peta
– 1024 peta = 1 exa
• Começa a ser o sistema de arquivos
padrão de muitas distros
Sistemas Operacionais
Sistema de Arquivos EXT4
• Checagem no Journaling, garantindo
uma restauração mais rápida e a
prova de falhas.
• Desfragmentação On-Line
• Checagem rápida do file-system
• Atrasar a Alocação dos Blocos
• Pré-alocação de Nível de Arquivo
Sistemas Operacionais
Sistema de Arquivos EXT
• EXT
• EXT2
• EXT3
• EXT4
1992
1993
2001
2006
Sistemas Operacionais
Linux e NTFS
• sistemas de arquivos para Linux >>
versatilidade, segurança e compatibilidade
com outros sistemas de arquivos
• NTFS: Proprietário, fechado
• distribuições que vem com o kernel 2.6.x
e superiores
– leitura e gravação (com restrições)
– Existem projetos como o Linux-NTFS /
Captive / NTFS-3G
Sistemas Operacionais
• /
Diretório raiz do sistema de arquivos.
é abaixo dele que se situam todos os outros.
• /bin
Arquivos executáveis de comandos
essenciais.
• /boot
Arquivos estáticos necessários a
inicialização do sistema.
• /etc
Arquivos de configuração do sistema.
• /home
Lugar onde ficam os diretórios locais
dos usuários.
Sistemas Operacionais
• /lib
Arquivos de bibliotecas
essenciais ao sistema, utilizadas pelos
programas em /bin.
• /mnt
Usualmente é o ponto de
montagem de dispositivos na máquina.
• /proc
Informações do kernel e dos
processos.
• /root
Diretório local do superusuário.
Sistemas Operacionais
• /sbin
Arquivos essenciais ao sistema.
Normalmente só o superusuário tem acesso a
estes arquivos.
• /tmp
Diretório de arquivos temporários.
• /usr
Arquivos pertencentes aos usuários.
(é a segunda maior hierarquia de diretórios
presente no Linux, só perdendo para o diretório
raiz).
• /var
Diretório onde são guardadas
informações variáveis sobre o sistema