Sistemas Operacionais
SISTEMA DE ARQUIVOS
Prof. D.Sc. Eduardo Barrére
DCC026
Pontifícia
Universidade
Católica
PUC - Minas Poços de Caldas
Sistemas Operacionais #1
Sistema de Arquivos
Definição: “O sistema de arquivos de um SO é
o módulo (ou conjunto de rotinas) do SO que
associado à um protocolo de execução
organiza, manipula e protege os arquivos”Boca
Existem 3 requisitos básicos para resolver o problema de
armazenamento de informações a longo prazo:
Possibilidade de armazenar grande quantidade de
informação;
A informação deve sobreviver ao término do processo;
Vários processos podem manipular, concorrentemente, a
mesma informação.
Sistemas Operacionais #2
Sistemas de Arquivos
Diversidade de sistema de arquivos
O Linux (por exemplo) suporta diversos tipos de sistemas de arquivos. Dentre esses
pode-se destacar:
Minix O mais antigo e presumivelmente o mais confiável, mas bastante limitado em
características (algumas datas não aparecem , máximo de 30 caracteres para nome de
arquivos, etc...) e restrito em armazenamento (no máximo 64 Mb por sistema de arquivos).
xia Uma versão modificada do sistema de arquivos minix, o qual aumenta os limites de
nomes de arquivos e de sistemas de arquivos, mas não introduz novas facilidades. Não é
muito popular, mas comenta-se seu bom funcionamento.
ext2 O mais poderoso e popular sistema de arquivos nativo do Linux. Desenhado para ser
facilmente compatível com os avanços das novas versões, sem a necessidade de criar
novamente os sistemas de arquivos já existentes.
ext Uma versão antiga do ext2 que não é mais compatível com versões atuais. É raro vê-la
instalada em sistemas novos e mesmo os mais antigos têm sido convertidos para ext2.
ext3 Apresentada no final do tópico.
Sistemas Operacionais #3
Sistemas de Arquivos
Diversidade de sistema de arquivos
msdos
Compatibilidade com MS-DOS (OS/2 e Windows NT) através de sistemas de
arquivos FAT/FAT32.
umsdos
Sistemas de arquivos MS-DOS estendidos para suportar nomes longos, donos,
permissões, links e arquivos de dispositivos do Linux. Isso permite que um sistema
de arquivos msdos possa ser usado como se fosse um sistema Linux, removendo a
necessidade de uma partição distinta para o Linux.
iso9660
O sistema de arquivos padrão do CD-ROM. A extensão Rock Ridge que permite
nomes longos também é suportada automaticamente.
nfs
Sistemas de arquivos em redes que permitem o compartilhamento e o fácil acesso
aos arquivos entre diversos computadores da rede.
hpfs
O sistema de arquivos do OS/2.
sysv
Sistema de arquivos do System V/386, Coherent e Xenix.
Sistemas Operacionais #4
Sistemas de Arquivos
Diversidade de sistema de arquivos
fat12 Usado em disquetes no DOS
fat16 Usado no DOS e oferece suporte até discos de 2GB
fat32 Também usado no DOS e oferece suporte a discos de até 2 Terabytes
Vfat
Extensão para FAT para suportar nomes longos (além dos 8.3)
Qual sistema de arquivos deve ser usado?
Faz pouco sentido utilizar muitos sistemas de arquivos diferentes. Atualmente o
ext2fs é o mais popular. Dependendo da necessidade de recursos adicionais na
manutenção das estruturas, velocidade, segurança, estabilidade, compatibilidade e
diversas outras razões, pode ser desejável utilizar outro tipo de sistema de
arquivos. Isto deve ser decidido caso a caso.
A opção do sistema de arquivos
a ser usado depende da situação
Sistemas Operacionais #5
Armazenamento em Disco
Um disco é formado por: faces, trilhas e setores.
Exemplo: Num disco com: 2 faces
80 trilhas
18 setores
512 bytes por setor.
Cluster = conjunto de setores
Tem-se : 512 x 18 x 80 x 2=1,44 Mb
onde um bloco de dados pode ser de 512b, 1k,
1.5k, ....
Sistemas Operacionais #6
Armazenamento em Disco
• Tempo de acesso
Sistemas Operacionais #7
Sistemas de Arquivos
Partições
São divisões existentes no disco rígido que marcam onde começa
onde termina um sistema de arquivos. Por causa destas divisões,
nós podemos usar mais de um sistema operacional no mesmo
computador (como o GNU/Linux, Windows e DOS), ou dividir o
disco rígido em uma ou mais partes para ser usado por um único
sistema operacional.
Uma partição de disco não interfere em outras
partições existentes, por este motivo é possível
usar o Windows, GNU/Linux e qualquer outro
sistema operacional no mesmo disco
Sistemas Operacionais #8
MBR
O arranque de um sistema PC segue os seguintes passos:
1) POST (Power On Self Test).
2) Aquisição dos dados do BIOS e reprogramação do suporte I/O.
3) Leitura do primeiro setor do disco (MBR) de boot. Exemplo: IDE 0/Master).
O MBR contém 512 bytes de informação da estrutura organizacional do disco
(partições, código de carga do SO, e assinatura desse código):
Estrutura do Master Boot Record
Código de arranque do SO
446 bytes
Master Partition Table (MPT)
16 bytes
16 bytes
16 bytes
16 bytes
Assinatura
2 bytes
A MPT contém códigos identificativos do tipo da partição e alguns dados sobre a
mesma (se é a partição ativa (carga do SO) posição no disco, tamanho, etc.).
Problema: só podem existir 4 partições primárias!
Solução: Partições estendidas (criação de partições lógicas).
Sistemas Operacionais #9
Arquivos
Um arquivo é identificado por um nome e uma
extensão. Ex: teste.txt (mera convenção p/ usuário)
As Formas de Estrutura do Arquivo:
byte
Fornece flexibilidade, o usuário
armazena qualquer tipo de dado nos
arquivos. SO não ajuda, nem
atrapalha
Sistemas Operacionais #10
Arquivos
registro
Seqüência de registros de tamanho fixo
para poder fazer operações de leitura e
gravação de uma só vez;
Pré-história dos cartões: cada registro
era constituído por 80 caracteres.
Último SO que utilizou essa forma:
CP/M-86, pai do MS- DOS ( eu utilizei  )
Sistemas Operacionais #11
Arquivos
Ana
Beatriz
Camila
Teresa
Cláudia
Daniele
Isabela
Patrícia
Um Arquivo pode ser
constituído por uma
árvore de registros
Tina
Vanessa
Maria
A árvore é ordenada
por uma chave para
permitir buscas
rápidas
Registro
Objetivo não era determinar o próximo registro mas um
entre vários.
Alguns mainframes ainda utilizam.
Sistemas Operacionais #12
Tipos de Arquivo
Entre os tipos de arquivo suportados pelo SO
temos:
Arquivos de Diretório: manutenção do sistema de
arquivo (contém a hierarquia); Apontam para arquivos;
Arquivos Especiais de Caracteres:
modelagem de dispositivos de I/O
conversões); No Linux residem em /dev;
permite a
(tabela de
Arquivos Regulares: Informações do usuário. ASCII
ou binários, executáveis.
Sistemas Operacionais #13
Arquivos de Dispositivo
Nome
Tipo
Maior
Menor
Descrição
/dev/fd0
Bloco
2
0
Unidade de disquete 0 (driver A)
/dev/hda
Bloco
3
0
Disco IDE primário
/dev/hda1
Bloco
3
1
Primeira partição do disco IDE primário
/dev/hda2
Bloco
3
2
Segunda partição do disco IDE primário
/dev/tty0
Caractere
3
0
Terminal
/dev/lp1
Caractere
4
1
Impressora paralela
/dev/console Caractere
1
1
Teclado
Sistemas Operacionais #14
Acesso a Arquivos
Os arquivos podem ser acessados de dois
modos:
Seqüencial: um processo não pode ler um byte
ou registro sem antes ter lido todos os outros
anteriores a ele;
Aleatório ou Randômico: permite o acesso a um
byte independente da sua posição dentro do
arquivo (operação SEEK). É o modo padrão do SO.
Sistemas Operacionais #15
Atributos dos Arquivos
Além do nome e de um conjunto de
informações, o arquivo também deve conter
vários atributos que são importantes para o
seu gerenciamento.
Exemplos:
Proteção (diz quem tem acesso), Proprietário
(identifica o proprietário), Leitura (readonly),
Ocultação (não aparece em dir.),
Sistema
(identifica se é do SO), Backup (identifica se foi
feito backup),
ASCII/Binário,
Data,
Hora,
Tamanho do Arquivo, etc.
Sistemas Operacionais #16
Atributos dos Arquivos
d rwx rwx rwx
Tipo de Arquivo
Proprietário
'd‘=diretório
'l‘ = link
'c' e 'b' = dispositivos (/dev).
Grupo
Sistema
‘r‘ = leitura
‘w‘ = escrita
‘x' = execução
Exemplos:
drwxr-xr-x bin
-rw-rw-r-- teste.txt
crw-rw---- audio 14, 4 Dec 2 1999 audio
brw-rw---- cdrom 22, 64 May 5 1998 hdd
lrwxrwxrwx 1 ze users 29 Aug 18 12:33 efr -> /www/ns-home/docs/
Sistemas Operacionais #17
Atributos dos Arquivos
$ chmod 664 arquivo.txt
Número
Significado
0
Nenhuma permissão
1
Permissão para executar
2
Permissão para gravar
3
Permissão para gravar e executar
4
Permissão para ler
5
Permissão para ler e executar
6
Permissão para ler e gravar
7
Permissão para ler, gravar e executar
Sistemas Operacionais #18
Cabeçalho de um Arquivo exe
Os executáveis (ou binários) também recebem a denominação de PE
(“Portable Executable”). É um padrão estabelecido pela Microsoft nos
primórdios do Windows, onde decidiram criar um formato de binário
capaz de rodar em qualquer outra versão do Windows. Um executável
no formato PE possui uma estrutura um tanto quanto complexa, mas ao
mesmo tempo muito organizada e versátil.
Uma característica interessante sobre os arquivos PE é que eles são
armazenados na memória da mesma forma que eles ficam em disco,
mantendo a estrutura no arquivo praticamente idêntica nos dois casos.
Quando o usuário requisita a execução de um aplicativo, o Windows Loader
analisa o cabeçalho do PE. Feito isso, ele possui as informações
necessárias para poder copiar o executável do disco rígido para a RAM. No
entanto, ele não é carregado para a RAM exatamente da mesma forma que
ele se encontra no Windows. O Loader precisa fazer alguns ajustes.
Esses ajustes são necessários devido à forma com que o S.O. da Microsoft
gerencia a memória, utilizando uma memória virtual paginada. Quando as
seções são carregadas para a memória, o Windows alinha cada uma delas
para caber em páginas de 4KB.
Sistemas Operacionais #19
Cabeçalho de um Arquivo exe
O arquivo é organizado basicamente desta maneira:
• Cabeçalho DOS: DOS não tem utilidade prática dentro do sistema
Windows, ele serve apenas para apresentar uma mensagem avisando o
usuário que o aplicativo em questão não pode ser utilizado em modo texto
• Cabeçalho Windows: estão todas as informações básicas necessárias
para que o aplicativo funcione, como o número de seções, tamanho de cada
seção e início das mesmas, onde iniciar a execução do código, dentro
dezenas de outras configurações.
• Tabela de Seções: i nformações referentes a cada uma das seções:
• Seção de código - Code Section ( .text ou .code )
• Seção de recursos – Resource Section ( .rsrc )
• Seção de dados – Data Section ( .data )
• Seção de exportação – Export data section ( .edata )
• Seção de importação - Import data section ( .idata )
• Informações de debug - Debug information ( .debug )
• Seção 1 a N;
Sistemas Operacionais #20
Cabeçalho de um Arquivo exe
Sistemas Operacionais #21
Operações sobre Arquivos
O SO fornece um conjunto de operações
básicas:
Create;
Append;
Delete;
Seek;
Open;
Get Attributes;
Close;
Set Attributes;
Read;
Rename;
Write;
Sistemas Operacionais #22
Diretório
O SO utiliza um sistema hierárquico
para manipular os arquivos,
chamado diretório.
Arquivo
1
Diretório
1
Arquivo
2
Um diretório contém um
conjunto de entradas,
uma para cada arquivo
Usuário
1
Usuário
2
Diretório
2
Arquivo
1
Arquivo
1
ou diretório
filho (subdiretório).
Usuário
3
Arquivo
1
Diretório
1
Usuário
n
Arquivo
1
Arquivo
1
Arquivo
2
Diretório Raiz
Arquivo
2
Sistemas Operacionais #23
Nomes de Arquivo
Regras para formar o nome de um arquivo:
Nome de caminho absoluto;
Nome de arquivo relativo.
ect
lib
usr
tmp
ect
lib
usr
edu
ze
edu
tmp
ze
Sistemas Operacionais #24
Diretório Linux
A estrutura de diretórios de um linux típico é mostrada nesta tabela:
bin
Arquivos executáveis(binários) de comandos essenciais pertencentes ao sistema e que são
usados com freqüencia.
boot
Arquivos estáticos de boot de inicialização(boot-loader)
dev
Arquivos de dispositivos de entrada/saída
etc
Configuração do sistema da máquina local com arquivos diversos para a administração de
sistema.
home
Diretórios local(home) dos usuários
lib
Arquivos da biblilotecas compartilhadas usados com freqüencia
mnt
Ponto de montagem de partição temporários
root
Diretório local do superusuário (root)
sbin
Arquivos essenciais do SO
tmp
Arquivos temporários gerados por alguns utilitários
usr
Todos os arquivos de usuários devem estar aqui (segunda maior hierárquia)
var
Informação variável
Sistemas Operacionais #25
Sist. de Arquivo: Implementação
Um ponto importante no desempenho do SO é
a maneira como é implementado o Sistema de
Arquivos, ou seja, como os arquivos são
associados aos blocos do disco. As
implementações mais usuais são:
• Alocação Contígua;
• Alocação Encadeada;
• Alocação com Índices;
• I - nodes;
Sistemas Operacionais #26
Alocação Contígua
É o esquema mais simples de alocação.
12K
Arq1
10K
Arq2
5K
Arq3
3K
Bloco
Problema:
É necessário sabermos o tamanho do arquivo
no momento da sua criação;
Sistemas Operacionais #27
Alocação Contígua
0
3
1
4
2
5
6
7
8
9
10
11
12
13
14
Arquivo
Bloco
Extensão
A. TXT
4
3
B. TXT
10
1
C. TXT
13
2
• Não exige o índice do próximo.
Sistemas Operacionais #28
Alocação Encadeada
Consiste em manter o espaço alocado ao arquivo através
de uma lista ligada de blocos, atenuando o problema da
fragmentação.
Bloco
Bloco 0
do
Arq1
Bloco 1
do
Arq1
5
8
Bloco 2
do
Arq1
12
0
Bloco 3
do
Arq1
Bloco 0
do
Arq2
10
4
Bloco 1
do
Arq2
7
0
Bloco 2
do
Arq2
9
Problemas:
O acesso randômico ao disco é extremamente lento e
mais difícil de ser implementado do que o seqüencial;
O tamanho do bloco não é totalmente utilizado para o
armazenamento dos dados (2 bytes para o ponteiro).
Sistemas Operacionais #29
Alocação Encadeada
Início
0
3
6
9
12
1
4
7
10
13
2
5
8
Arquivo
Bloco
A.TXT
6
...
...
...
...
...
...
...
...
11
14
• Cada bloco, em disco, deve armazenar o índice do próximo.
• A tabela só mantém o primeiro bloco do arquivo.
Sistemas Operacionais #30
Alocação: Lista usando Índice
Este método resolve os problemas da Lista
Ligada, mantendo os ponteiros em uma tabela.
Problema:
A tabela deve estar
na memória principal
durante
todo
o
tempo (é utilizado
pelo
MS-DOS,
chama-se FAT).
Sistemas Operacionais #31
Alocação: Lista usando Índice
3
10
11
7
0
1
Bloco de
Índices (FAT)
2
3
4
5
6
7
8
9
10
11
12
13
14
Vai para a
memória RAM
•A tabela mantém todos os blocos do arquivo.
Sistemas Operacionais #32
Nós-i (nós - índice, i-node)
• Não existe fragmentação: Todo arquivo é mantido a partir
de um “ramo” da árvore. Qualquer acesso ao arquivo ficará
limitado a este ramo.
• A combinação dos blocos, originalmente composto por
512K, pode ser alocado em conjunto a outros blocos
formando espaços de endereçamento com diferentes
tamanhos.
• Na exclusão de arquivos desliga-se apenas os ponteiros
para o bloco inicial.
Sistemas Operacionais #33
Nós-i (nós - índice, i-node)
Utiliza uma estrutura hierárquica maleável para endereçar os blocos do
arquivo (é utilizado pelos like - UNIX).
Bloco de dados
I-node
Atributos
Endereço bloco 0
Endereço bloco 1
Endereço bloco 2
Endereço bloco 3
Endereço bloco 4
Endereços adicionais
Endereços adicionais
Endereços adicionais
Redir ecionam ento tri plo
Sistemas Operacionais #34
Arquivos Compartilhados
Alguns arquivos devem compartilhados por vários
usuários como: arquivos de configuração, bases de
dados e arquivos de projetos, entre outros.
Diretório
Arquivo
A
A
B
B
Dois diretórios (B e C)
mantém entradas iguais.
C
B
C
B
?
C
C
C
Sistemas Operacionais #35
Controle de Blocos Livres
Existem três modos para controlar os blocos livres
de um disco: lista de blocos, mapa de bits e tabela
de blocos livres
Início
Lista de Blocos
Cada bloco livre aponta para
outro bloco livre.
O primeiro da lista será o
próximo a ser utilizado.
Lista encadeada
Sistemas Operacionais #36
Controle de Blocos Livres
Mapa de bits
11001101
Cada bloco do disco tem um
bit correspondente, sendo
que zero indica bloco livre e
um indica bloco ocupado.
Independente da quantidade
de blocos livres temos o
mesmo espaço ocupado pelo
mapa de bits.
10000111
01110100
.
.
.
11100000
(a) Mapa de bits
Sistemas Operacionais #37
Controle de Blocos Livres
Tabela de Blocos Livres
O sistema operacional mantém
em
disco
uma
tabela
(constantemente
atualizada)
que identifica o endereço dos
blocos livres
Bloco
Endereço
4
2
10
1
13
7
25
20
50
5
Tabela de blocos livres
Sistemas Operacionais #38
Sistema de Arquivos
FAT
FAT (File Alocation Table)
Disco
Rígido
A
P1
B
P2
C
P3
....
...
A. Setor de Boot Primário: contém informação para boot
inicial, é lida pela ROM, altamente dependente de máquina,
contém tamanho dos setores, tamanho do diretório raiz,qual
partição está ativa, etc.
B. C. Partições do disco: cada uma delas pode conter um
sistema operacional diferente e independente.
Sistemas Operacionais #39
Sistema de Arquivos
FAT
FAT (File Alocation Table)
Disco
Rígido
A
P1
BS
P2
C
P1
B
FAT1
FAT2
Root
P3
....
...
Dados
BS. Boot Secundário: contém endereços e info. sobre o SO que
será carregado (end. do dir. raiz)
FAT: alguns casos ela é duplicada, contém entradas para cada bloco
de dados.
Root: diretório raiz.
Dados: dados do usuário.
Sistemas Operacionais #40
Sistema de Arquivos
FAT
0
1
2
3
4
5
6
7
8
9
X
X
eof
13
2
9
8
free
4
12
10
11
12
13
3
free
eof
eof
14
15
...
eof
eof
FAT
} Informações a respeito do tamanho do disco
Arquivo A: 6  8  4  2
Arquivo B: 5  9  12
Arquivo C: 10  3  13
A entrada de cada diretório
contém apenas o bloco inicial
para cada arquivo. A FAT
cuida do resto!
Sistemas Operacionais #41
Sistema de Arquivos
NFS
NFS (Network File System): Primeiro passo
para se ter um sistema distribuído.
Filosofia que engloba os sistemas de arquivos para SO´s
like-Unix, i. e., não representa um sistema de arquivos
propriamente dito.
NFS pode ser dividido em:
1. Arquitetura
2. Protocolos
3. Implementação
Sistemas Operacionais #42
Sistema de Arquivos
NFS
Arquitetura NFS
Idéia básica: compartilhar os arquivos comuns
Cada servidor exporta (automaticamente, no
Boot) seus arquivos que estão no diretório
/etc/exports
Muitas estações SUN são diskless, neste caso
cada cliente monta (mount) seu próprio diretório
no servidor
Sistemas Operacionais #43
Sistema de Arquivos
NFS
Protocolos NFS
É a “conversa” que existe entre servidor e clientes para
negociar o compartilhamento e acesso aos arquivos
(tamanho dos nomes, atributos de segurança,
propriedade, etc.)
Cada requisição pode exigir uma resposta
Não é necessário que o servidor conheça algo sobre seus
clientes (idem ao contrário)
Consulte o Tanembaum. Lá são descritas
as possibilidades de ocorrência de erro
na comunicação entre servidor/cliente e
quais os procedimentos possíveis.
Sistemas Operacionais #44
Sistema de Arquivos
NFS
Implementação do NFS
A implementação dos códigos dos clientes e dos
servidores são independentes.
Cliente
Read, close, etc
Chamada de sistema
Sistema de arquivos
virtual
SO Local
C:\
local
Cliente
NFS
Identifica se o
arquivo é local
Contém R-node
Servidor
Sistema de arquivos
virtual
Servidor
NFS
MSG do
cliente
SO Local
H:\
MSG para
servidor
Sistemas Operacionais #45
Sistema de Arquivos
NTFS
2000/XP
Projeto
No inicio: FAT para MS-DOS e Windows / e o HPFS para OS/2.
Hoje: Protect Mode FAT File System (FAT16 e FAT32) – Windows 95/98/me
NTFS: Windows 2000/NT/XP
Esses dois sistemas de arquivos tinham várias limitações, levando a
Microsoft a desenvolver um novo sistema de arquivos denominado
NTFS (Windows NT File System).
NTFS oferece a recuperação do sistema com base em um
modelo de processamento de transação. Processamento de
transação é um modelo usado por bancos de dados para manter
a integridade dos dados caso haja uma falha na alteração dos
dados. O princípio básico desta técnica é que as transações
(escrita ou leitura dos dados no disco) são executadas
atomicamente
Sistemas Operacionais #46
Sistema de Arquivos
NTFS
Segurança
Os arquivos são implementados como objetos de arquivo, estes
objetos possuem um descritor de segurança que fica armazenado no
disco.
Quando um processo requisita determinado arquivo o sistema de
segurança verifica se este processo possui autorização para tal
operação (execução, leitura ou escrita).
O sistema compara o descritor de segurança do arquivo com as
características do usuário e as permissões dadas a esse usuário, se
o usuário tiver permissão para tal operação o sistema libera o
processo para realizá-la, caso contrario o sistema informa ao usuário
que a operação falhou por que o usuário não possui permissão para a
operação
Sistemas Operacionais #47
Sistema de Arquivos
NTFS
Capacidade de armazenamento:
NTFS aloca clusters e usa 64 bits para endereçá-los, cada um com
até 64Kb. Cada arquivo pode ter até 18446744073709551616 bytes
de extensão. (“hexa” qualquer coisa bytes, segundo Cláudio:
Porabytes ).
O tamanho do cluster é ajustável, com um tamanho mínimo de 512
bytes para discos menores e máximo de 64Kb para discos grandes.
Embora o NTFS use 64bits (8 bytes) para representar cada alocação
de disco, ele codifica os endereços de modo que ocupem apenas de 3
a 5 bytes (meu Deus...)
Sistemas Operacionais #48
Sistema de Arquivos
NTFS
Unicode
O que é Unicode?
Unicode fornece um número único para cada caractere,
não importa a plataforma,
não importa o programa,
não importa a língua.
Qual o ascii
desta letra
grega ?! Җ
O NTFS armazena os nomes de arquivos, diretórios e volumes usando
Unicode. Foi usado o Unicode para tornar o sistema utilizável sem
mudanças para qualquer tipo de idioma, tornando o sistema o mais
universal possível.
Antes de o Unicode ser inventado, havia centenas de sistemas diferentes de
codificação . Nenhum destes sistemas de codificação, no entanto, poderia conter
caracteres suficientes: por exemplo, a União Européia por si só requer vários
sistemas de codificação diferentes para cobrir todas a línguas. Mesmo para uma
única língua como o inglês não havia sistema de codificação adequado para todas
as letras, pontuação e símbolos técnicos em uso corrente.
Sistemas Operacionais #49
Sistema de Arquivos
NTFS
POSIX
O sistema NTFS suporta POSIX (Portable Operating System Interface)
totalmente. O padrão POSIX exige: nomes de diretórios e arquivos se
diferenciem pela caixa alta e caixa baixa, uma marca de "hora de
mudança do arquivo" e atalhos (links)
Posix define características como proteção entre
processos (crash protection), carregamento por
demanda, redes TCP/IP, alem de nomes de arquivos
com até 255 caracteres, suporte a UNICODE, shared
libraries, memória virtual, etc.
Sistemas Operacionais #50
Sistema de Arquivos
NTFS
Estrutura no disco
Volumes
O volume corresponde a uma partição lógica no disco, estes volumes podem ou
não ser tolerantes a falhas. Um disco pode conter vários volumes que são
independentes uns dos outros.
Clusters
O cluster é a unidade fundamental de alocação do NTFS, o tamanho do cluster é
estabelecido quando o usuário formata o disco. O tamanho do cluster dependendo do
tamanho da partição formatada.
O NTFS refere-se aos locais físicos no disco através de números de cluster lógicos
(LCN - logical cluster numbers), que são simplesmente a numeração de todos os
clusters do início até o final do disco. Os dados do arquivo são referenciados através
de números de cluster virtuais (VCN - virtual cluster number), que são valores
seqüenciais de 0 a m. Para poder acessar os dados no disco, o sistema NTFS
transforma os endereços VCN em LCN assim localizando em que região do disco está
o dado.
O arquivo teste.txt possui VCN 5 (como se fosse endereço FAT), o VCN 5
está relacionado ao LCN 1302 que por sua vez corresponde ao endereço
físico AF4415512. Coisas da Microsoft...
Sistemas Operacionais #51
Sistema de Arquivos
NTFS
Estrutura no disco
Tabela de Arquivo Mestre (MFT – Master File Table)
Todos os dados, estruturas de busca, dados de inicialização, bootstrap do NTFS estão
contidos em arquivos, não estando restritos a uma região especifica do disco. Manter esses
dados em arquivos permite que o sistema localize e mantenha os dados com facilidade, além
do mais caso alguma parte do disco se torne defeituosa é possível modificar a localização
destes arquivos para que o sistema não se torne inacessível.
A MFT é a principal estrutura localizada no disco. A MFT é uma matriz de registro de arquivo
de 1Kb cada, logicamente a MFT contém uma linha para cada arquivo no volume. Além da
MFT cada volume contém uma série de arquivo de metadados (arquivo de log, arquivo de
cluster defeituosos, além de outros usados pelo sistema), o restante dos arquivos são
arquivos e diretórios de usuários.
Ou seja, pegaram a FAT e deram um trato
nela. Fizeram escova, passaram um
batonzinho...
Sistemas Operacionais #52
Sistema de Arquivos
NTFS
Compactação de dados
O NTFS suporta a compactação dos dados do disco automaticamente, apenas é
necessário especificar quais locais do volume serão compactados. Escolher esta
opção de compactação dos dados denigre o desempenho do sistema para escrita e
leitura dos dados, muitas vezes não sendo indicados para usuários que necessitem
de desempenho, já que hoje em dia espaço em disco não é um custo tão alto
A compactação no NTFS pode ser realizada em arquivo,
diretório ou volume, além disso apenas arquivos do usuário
são compactados, não compactando os arquivos de
metadados (bitmaps, bootstrap, MFT,etc).
Sistemas Operacionais #53
Sistema de Arquivos
NTFS
Tolerância a Falhas
Conjunto de espelhos: No conjunto de espelho, o conteúdo de
uma partição em disco é duplicado em uma partição do mesmo
tamanho em outro disco. Quando um programa grava em C:,
FtDisk grava os mesmos dados no mesmo local na partição
espelho. Além disso, o conjunto espelho pode ajudar na
atividade de I/O, em sistemas muito sobrecarregados,
equilibrando suas operações de leitura entre as duas partições.
As operações de leitura podem ser feitas normalmente, mas
quando um arquivo é modificado as duas partições devem ser
gravadas, mas as gravações são feitas assincronamente, de
modo que o desempenho geralmente não é afetado pela
atualização extra do disco.
Sistemas Operacionais #54
Sistema de Arquivos
NTFS
Tolerância a Falhas
Recuperação de cluster defeituoso do NTFS
Os erros de setor defeituoso são indesejáveis, mas quando ocorrem, a
combinação do NTFS e do FtDisk oferece a melhor solução possível. Se o
setor defeituoso estiver em um volume redundante, FtDisk recupera os dados
e substitui o setor, se puder. Se ele não puder substituir o setor, retornará uma
advertência para o NTFS, que substituirá o setor defeituoso.
Se o FtDisk descobrir um setor defeituoso durante a leitura ele substituirá o setor
defeituoso e recuperará os dados de uma cópia redundante, se não possuir uma
cópia redundante ele não poderá recuperar os dados mas enviará uma
mensagem ao NTFS (do tipo: FOD...-SE). Se descobrir o setor defeituoso
durante a gravação ele substituirá o setor e como o dado que se encontrava no
setor defeituoso seria sobrescrito mesmo nenhum dado será perdido.
Sistemas Operacionais #55
Adendo – ext3
• No Linux -> Sistema de Arquivos são disponibilizados através do comando
"mount“.
• Lista de sistemas de arquivos disponíveis no arquivo /etc/fstab
• Lista de sistemas de arquivos que estão efetivamente em uso, no arquivo
/etc/mtab (tabela mount).
• Para cada sistema de arquivos montado no startup, um bit no cabeçalho
do sistema de arquivos é zerado para indica que o sistema de arquivos está
em uso a partir daquele momento e que as estruturas de dados usadas para
o alocação e organização de arquivos/diretórios podem sofrer mudanças
(atualizações).
• Quando o usuário decide desligar o computador e usa comandos para
encerrar o Linux, os sistemas de arquivos são desmontados, fazendo com
que o bit citado acima seja modificado para indicar que o sistema de
arquivos está consistente, ou seja, não pode mais sofrer mudanças.
Sistemas Operacionais #56
Adendo – ext3
Erros e corrompimento do sistema de arquivos
Os sistemas de arquivos para Linux já sofreram muitos tipos de
tratamentos e reescrita de código para eliminar o corrompimento causado
por aplicações ou pelo próprio kernel.
No entanto, eliminar o corrompimento de dados em arquivos causados, por
exemplo, pela queda de energia ou pelo desligamento incorreto por parte
do usuário, sempre foi uma tarefa praticamente impossível. Quando o
sistema é desligado incorretamente o bit do cabeçalho do sistema de
arquivos não é ajustado. A solução foi fazer com que, no próximo processo
de carregamento do Linux, seja verificado se o cabeçalho está com o bit de
cabeçalho setado para indicar que o sistema de arquivos está consistente
e não manipulável. Caso não esteja, a ferrramenta "fsck" verifica o sistema
na busca de erros.
Sistemas Operacionais #57
Adendo – ext3
Journaling
O fsck consegue prover resultados satisfatórios, mas a correção de erros
pode levar muito tempo, algo inaceitável em aplicações críticas. Além
disso, se o desligamento incorreto do computador ocorreu quando dados
estavam sendo gravados no disco, o fsck não conseguirá completar esses
processos, ocasionando a perda das informações que estavam sendo
gravadas.
Diante desses problemas, foi apresentada uma solução viável: a utilização
de sistemas de arquivos com a tecnologia "Journaling", que possuem a
capacidade de acompanhar as mudanças que serão feitas no sistema de
arquivos (por exemplo, gravações/atualizações de dados) antes que
realmente sejam feitas. Essas informações que o Journaling captura são
então armazenadas em uma parte separada do sistema de arquivos,
denominada "Journal" (mas também conhecida por "registros de log").
Quando as informações são armazenadas no Journal, o sistema de
arquivos aplica as mudanças registradas nele e então, remove as
informações do Journal.
Sistemas Operacionais #58
Adendo – ext3
Os registros de log são escritos antes que as mudanças efetivamente
ocorram no sistema de arquivos e esses registros somente são
eliminados quando as mudanças são feitas. Assim, se o computador é
indevidamente desligado, o processo de montagem no próximo
startup verificará se há mudanças gravadas no Journal "marcadas"
como não feitas. Se houver, tais mudanças são então aplicadas ao
sistema de arquivos. Isso faz com que os riscos de perda de dados
sejam reduzidos drasticamente.
Sistemas Operacionais #59
Adendo – ext3
Existem vários sistemas de arquivos disponíveis com a tecnologia
Journaling, como o XFS, desenvolvido originalmente pela Silicon Graphics e
posteriormente disponibilizado com código aberto, o ReiserFS,
desenvolvido especialmente para Linux, JFS, desenvolvido originalmente
pela IBM mas também liberado com código aberto, e o mais conhecido
deles: o ext3, desenvolvido pelo Dr. Stephen Tweedie juntamente com
outros colaboradores, na Red Hat.
O sistema de arquivos ext3 é basicamente o sistema de arquivos ext2 com
recursos de Journaling. Talvez, essa seja a razão de seu uso amplo: ele é
totalmente compatível com ext2 (que foi um sistema de arquivos muito
usado), o que nenhum outro sistema de arquivos baseado em Journaling é.
O ext3 passou a ser efetivamente suportado pelo kernel do Linux a partir da
versão 2.4. Conseqüentemente, todas as distribuições Linux lançadas com
esse kernel ou superior, tem suporte padrão para ext3.
Sistemas Operacionais #60
Adendo – ext3
No ext3, o código de Journaling usa uma camada chamada "Journaling
Block Device" (JBD). A JBD foi criada com o propósito de implementar
Journal em qualquer tipo de dispositivo com base em blocos de dados. Por
exemplo, o código ext3 informa e "pede autorização" à JDB para efetuar as
mudanças, antes de modificar/adicionar qualquer dado no disco.
O ext3 suporta três diferentes modos de trabalho do Journaling. São eles:
• Journal: grava todas as mudanças em sistema de arquivos. É o mais
lento dos três modos, mas é o que possui maior capacidade de evitar perda
de dados;
• Ordered: grava somente mudanças em arquivos metadata, mas guarda
as atualizações no arquivo de dados antes de fazer as mudanças
associadas ao sistema de arquivos. É o padrão no ext3;
•Writeback: também só grava mudanças para o sistema de arquivo em
metadata, mas utiliza o processo de escrita do sistema de arquivos em uso
para gravação. É o mais rápido Journaling ext3, mas o menos confiável.
Sistemas Operacionais #61
Download

04_SistemaArquivos