Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas de Arquivos
1 Introdução
• Problemas da memória virtual:
– Capacidade limitada
– Volátil
– Espaço de endereçamento (em geral) restrito a um processo
• Operações:
– Ler o bloco k
– Escrever o bloco k
Um HD é apenas um grande conjunto de blocos. Não existem arquivos ou pastas.
Vamos começar com uma visão dos arquivos do ponto de vista do usuário, depois disso,
veremos formas de implementar.
2 Arquivos
• Abstração para um conjunto de dados no disco
1
• Cada arquivo possui um nome que o identifica. Cada Sistema Operacional tem suas
regras de nomeação de arquivos
Usamos um nome em vez de uma posição no disco
Cada sistema operacional tem suas regras para nomear arquivos. No MS-DOS,
até 8 caracteres. Em sistemas mais modernos, até 255. Alguns distinguem entre
maiúsculas e minúsculas. Alguns suportam caracteres especiais, outros não.
• O Sistema Operacional pode armazenar outras informações sobre cada arquivo: data
de criação/modificação, dono do arquivo, permissões, etc
Outras: arquivo oculto (no Linux usa-se um ponto no nome), última data de
acesso, tamanho do arquivo
3 Diretórios
• Permitem criar uma organização hierárquica dos arquivos
2
• Qualquer arquivo pode ser encontrado através de:
• Operações em diretórios: criar, apagar, abrir, fechar, ler, renomear, criar link,
apagar link
Os links aqui são hard links. Também existem os links simbólicos.
4 Implementação
4.1 Organização do sistema de arquivos
• O setor zero do disco é chamado de Master Boot Record (MBR)
• Ao final da MBR fica a tabela de partições, que contém o inı́cio e fim de cada
partição
• No boot, a BIOS lê e executa a MBR, que localiza a partição ativa e lê seu primeiro
bloco: o bloco de boot
3
A estrutura da partição pode variar muito dependendo do tipo de sistema de arquivos
que ela contém.
• Vantagens:
– Simples de implementar
Basta saber o inı́cio e o tamanho de cada arquivo.
• Desvantagens:
4
– Fragmentação
• A primeira palavra de cada bloco é usada como um ponteiro para o próximo bloco
daquele arquivo
• Vantagens:
• Desvantagens:
5
• Armazena os ponteiros em uma tabela na memória em vez de usar espaço dos blocos
• Vantagens:
• Desvantagens:
– A FAT precisa sempre estar em memória (ex.: disco de 1TB com blocos de 1KB,
FAT ocupa até 3GB)
• Cada i-node representa um arquivo e contém os endereços dos blocos ocupados por ele
• Se o arquivo for maior que o número de blocos no inode, usamos um bloco do disco
contendo apenas endereços de outros blocos
6
• Vantagens:
7
∗ Cada entrada do diretório tem tamanho diferente
∗ Quando um arquivo é removido do diretório, ficamos com um buraco de
tamanho variável na tabela
∗ Compactar a tabela não é muito custoso (a tabela fica em memória)
– Tamanho variável com nomes em um heap:
8
∗ As entradas têm tamanho fixo
∗ Quando um arquivo é removido, o buraco pode ser posteriormente ocupado
por outra entrada
• Link simbólico: um arquivo especial contém o caminho do arquivo a que ele se refere
9
Aqui cada inode é referenciado por apenas um diretório. Ao excluir o arquivo real,
o link simbólico não é alterado, mas deixa de funcionar.
4.5 Journaling
• Objetivo: tornar o sistema mais resistente a falhas
• Ideia: manter um registro do que o sistema de arquivos vai fazer, antes que as ações
sejam feitas
• Usado em sistemas como NTFS e ext4
O primeiro sistema com journaling no Linux foi o ReiserFS. Posteriormente, o ext3
também ganhou suporte. O ReiserFS foi descontinuado após seu criador ser conde-
nado por homicı́dio de sua esposa.
• Um sistema com journaling cria um registro com a lista de operações a serem realizadas
e escreve o registro no disco.
• Após a escrita, o sistema começa a realizar as operações. Ao final das operações, o
registro é apagado.
• Se ocorre uma falha, o sistema verifica no registro se existem operações pendentes. Se
houver, todas elas são executadas.
• Operações devem ser idempotentes, isto é, podemos repetı́-las quantas vezes for
necessário.
10
– Marque o i-node k como livre: idempotente
– Remova o arquivo x de um diretório: idempotente
– Adicione os blocos do i-node K ao fim da lista de blocos livres: não-idempotente
– Busque na lista de blocos livres e adicione o bloco n caso ele não esteja presente:
idempotente
Processo sshfs
– Em geral, usa-se blocos de 1KB a 4KB, mas com o aumento do tamanho dos discos,
o desperdı́cio gerado por blocos maiores (ex.: 64KB) se torna menos significativo
11
• Controle dos blocos livres:
– Mapa de bits:
∗ Armazenado no disco, utiliza um bit para indicar a situação de cada bloco
do disco
∗ Ocupa menos espaço que a lista de blocos livres
∗ Requer parte do disco reservada para o mapa
12
– Em ambas as técnicas, apenas um bloco de informação precisa ficar em memória.
O restante fica no disco.
• Cotas:
• Backups:
– Pode ser incremental, copiando apenas os arquivos que foram alterados desde o
último backup
Exemplo: um backup completo por semana, um backup incremental por dia
13
– Os dados podem ser comprimidos, mas isso pode tornar os dados mais sensı́veis
a falhas na mı́dia de backup
– Se o sistema não pode parar durante o backup, pode-se utilizar técnicas para
obter um snapshot do estado atual do sistema de arquivos
Estruturas crı́ticas são copiadas e, durante o backup, todas as operações acon-
tecem em cópias dos blocos.
5.2 Consistência
• Se ocorre uma falha durante a escrita de um bloco, o sistema de arquivos pode ficar
inconsistente
• Consistência de blocos:
14
– Sistema de arquivos consistente: todos os blocos devem possuir o valor 1 em
apenas um dos contadores
– Bloco perdido: bloco não aparece em nenhuma das tabelas. Não causa prob-
lemas, mas desperdiça espaço. O bloco perdido é adicionado à lista de blocos
livres.
Bloco 2 perdido
– Bloco livre duplicado: o bloco aparece duas vezes na lista de blocos livres.
Basta reconstruir a lista de blocos livres.
Bloco 4 duplicado.
15
Bloco 5 duplicado.
• Consistência de diretórios:
• Outras verificações também são realizadas para garantir que o sistema está
consistente
Número de i-node maior que o número de i-nodes do disco, permissão maior de
acesso para outros que para o dono do arquivo, diretórios com muitos arquivos,
etc...
5.3 Performance
• Acesso ao disco é lento. Sistemas de arquivos podem usar otimizações para melhorar
a performance
• Cache:
16
– Mudanças no bloco são feitas em memória e só escritas no disco quando o bloco
sai do cache
– Para alguns blocos isso não é desejável (ex.: blocos contendo i-nodes). Esses
blocos podem ser escritos no disco com mais prioridade que os demais
Queremos que esses blocos sejam escritos o mais rápido possivel, pois se hou-
ver uma falha os dados são perdidos
17
∗ Pode-se colocar os i-nodes na metade do disco, diminuindo pela metade o
deslocamento médio do braço
∗ Também pode-se dividir o disco em grupos de cilindros, cada qual com seus
próprios blocos de i-nodes e lista de blocos livres
Criar um novo arquivo, tenta-se selecionar um bloco livre no mesmo
grupo onde ficará o i-node ou em um grupo próximo.
• SSDs:
– Em discos de estado sólido (SSDs), acessos aleatórios são tão rápidos quanto os
sequenciais, eliminando os problemas acima
– A limitação dos SSDs está no limite de vezes que cada bloco pode ser escrito
18
– Os dados são distribuı́dos de maneira a tentar distribuir igualmente o desgaste
dos blocos
5.4 Desfragmentação
• Com a criação e exclusão de arquivos, o disco se torna fragmentado com o tempo
• Linux sofre menos fragmentação, pois os arquivos são espalhados por todo o disco,
deixando grandes regiões de espaço livre entre eles
5.5 RAID
• Baseia-se na ideia de que combinar vários discos baratos pode fornecer mais capacidade,
performance e confiabilidade que um único disco mais caro.
• RAID 0:
RAID 0
A1 A2
A3 A4
A5 A6
A7 A8
A9 A10
19
– Multiplica a velocidade das operações de leitura e escrita pelo número de discos,
já que as operações podem ser realizadas em paralelo.
• RAID 1:
RAID 1
A1 A1
A2 A2
A3 A3
A4 A4
A5 A5
• RAID 2:
RAID 2
20
– 3 outros discos armazenam bits de paridade.
– Utiliza código de Hamming, capaz de detectar erros em até dois bits e recuperar
erros de um bit.
– Todos os discos precisam estar sincronizados.
– Suporta a falha de um disco.
– Não é mais utilizado devido ao baixo custo-benefı́cio.
• RAID 3:
RAID 3
A1 A2 A3 A4 Ap1-4
B1 B2 B3 B4 Bp1-4
C1 C2 C3 C4 Cp1-4
D1 D2 D3 D4 Dp1-4
E1 E2 E3 E4 Ep1-4
• RAID 4:
21
RAID 4
A1 A2 A3 A4 Ap1-4
B1 B2 B3 B4 Bp1-4
C1 C2 C3 C4 Cp1-4
D1 D2 D3 D4 Dp1-4
E1 E2 E3 E4 Ep1-4
• RAID 5:
RAID 5
A1 A2 A3 A4 Ap
B1 B2 B3 Bp B4
C1 C2 Cp C3 C4
D1 Dp D2 D3 D4
Ep E1 E2 E3 E4
• RAID 6:
22
RAID 6
A1 A2 A3 Ap Aq
B1 B2 Bp Bq B3
C1 Cp Cq C2 C3
Dp Dq D1 D2 D3
Eq E1 E2 E3 Ep
RAID 0
RAID 1 RAID 1
A1 A1 A2 A2
A3 A3 A4 A4
A5 A5 A6 A6
A7 A7 A8 A8
A9 A9 A10 A10
23