Você está na página 1de 60

Tópicos em Sistemas Operacionais

Módulo 3 – Sistemas de Arquivos


Parte2

Professor: Rodrigo Albernaz Bezerra


Cuiabá/MT – Janeiro / 2018
Sumário
1. Sistema de Arquivos NTFS

2/60
Sumário
1. Sistema de Arquivos NTFS

3/60
NTFS – New Technology File System
 New Technology File System (NTFS) – criado para
substituir o sistema de arquivos FAT

 Sistema de arquivos padrão para os sistemas


operacionais Windows NT, 2000, XP e posteriores.

 Novas versões e aperfeiçoamentos foram surgindo.

 Sistema de arquivos mais comum

4/60
NTFS
1) Log das transações realizadas.

2) Permissões de arquivos e pastas.

3) Possibilidade do uso de “disk quotas”.

4) Compressão de arquivos.

5/60
NTFS
5) Criptografia de arquivos.

6) Uso do recurso “sparse files” (blocos de 0’s


não são efetivamente gravados no disco).

7) Alternate Data Streams.

6/60
NTFS
 Volume NTFS
 Inicia com a MBR e uma área reservada
 Ao final da área reservada, o sistema de
arquivos NTFS inicia
 Setor 0 é o primeiro setor no sistema de
arquivos
 Utiliza clusters (como no FAT)
 Cluster 0 inicia-se no setor 0 (diferente do
FAT, que se inicia no cluster 2 – primeiro
cluster)

7/60
NTFS
 FAT  NTFS
 Contém estruturas bem  Só contém área de dados.
definidas, seguidas por Todas as estruturas existes
uma área de dados nesta região. As estruturas
são arquivos.

8/60
Estruturas NTFS
 Cada sistema de arquivos possui certas estruturas
que ele utiliza para gerenciar o controle dos dados
 FAT possui o Boot Sector/Tabelas FAT/Root
Directory
 Com essas estruturas, consegue-se
reconstruir o sistema de arquivos
 NTFS possui muitas estruturas de sistema de
arquivos (mais complexo)

9/60
Layout NTFS

10/60
NTFS – Arquivos de metadados

11/60
NTFS – Arquivos de metadados
Ao contrário da FAT, os metadados ficam gravados em
arquivos:

12/60
$BOOT
 É o equivalente ao Boot Sector do FAT

 Armazena informações sobre geometria do disco e


onde encontrar os outros metadados do sistema
de arquivos

 $BOOT é um arquivo – entrada 7 da $MFT

 Difere das demais estruturas, pois está sempre


localizada no setor 0

13/60
$BOOT
 Extrair o setor 0 para análise do $BOOT

 Possui identificador: NTFS

 Assinatura nos últimos dois bytes do $BOOT:


0x55AA

14/60
$BOOT

15/60
$BOOT

16/60
$BOOT

17/60
$BOOT

18/60
$BOOT

19/60
$BOOT

20/60
$BOOT

21/60
Localização da $MFT

22/60
NTFS
 Arquivos e pastas são tratados como um arquivo.

 Arquivos tem atributos:


• $FILE_NAME
• $STANDARD_INFORMATION
- Data e hora de criação, alteração, último
acesso; flags: read only, hidden, system, etc.
• $DATA: o conteúdo do arquivo.

23/60
$MFT – Master File Table
- Estrutura principal do NTFS

- Grava informações de metadados e localização dos


dados de todos os arquivos do sistema de arquivos

- De certa maneira, é semelhante às entradas de


diretórios do sistema FAT

24/60
Sistema de Arquivos NTFS

25/60
$MFT – Master File Table
1) Contêm informações sobre todos os arquivos e
diretórios.

2) Cada arquivo e diretório tem pelo menos


uma entrada na tabela.

3) Cada entrada (File Record) na tabela é composta


de:
 1 Kb de metadados – 1024 bytes.
 Os primeiros 42 bytes são o cabeçalho.
 O restante dos bytes armazenam atributos.

26/60
$MFT Layout

27/60
Estrutura File Record

- Cada File Record consiste de:


 File Record Header
 Múltiplos atributos
 Final de Arquivos Trailer
 File Record Slack

28/60
File Record

29/60
File Record

30/60
Estrutura File Record

- O cabeçalho do File Record provê um ponteiro ao


primeiro atributo.
- Com esta informações identificamos o tamanho
do header.

31/60
Entrada de um MFT - Cabeçalho

32/60
Atributos
- Armazenam informações sobre um arquivo
(metadados)

- Há muitos atributos que um arquivo possa ter

- Podem ser residentes ou não residentes


- Os dados para atributos residentes são
encontrados no atributo
- Atributos não-residentes contém um
ponteiro para as informações

33/60
Atributos

34/60
Sistema de Arquivos NTFS - Atributos

35/60
Atributos

36/60
Atributos

37/60
Atributos

38/60
Atributos

39/60
Atributos

40/60
Atributos

41/60
Atributos

42/60
Atributos

43/60
Atributos

44/60
Atributos

45/60
Atributos

46/60
Atributos
- Estrutura:
- 4 bytes @ 0x00 – Tipo de atributo
- 4 bytes @ 0x04 – Tamanho do atributo

- Para processar o atributo, é necessário processar


tanto o cabeçalho do atributo geral e os
cabeçalhos dos atributos residentes/não-
residentes

47/60
Cabeçalho Atributo Geral

48/60
Cabeçalho Atributos Residentes

49/60
Atributos
- Estrutura:
- 4 bytes @ 0x00 – Tipo de atributo
- 4 bytes @ 0x04 – Tamanho do atributo

- Para processar o atributo, é necessário processar


tanto o cabeçalho do atributo geral e os
cabeçalhos dos atributos residentes/não-
residentes

50/60
Processando $File_Name

51/60
Processando $File_Name

52/60
Processando $File_Name

53/60
Processando $File_Name

54/60
Criando um arquivo em uma partição NTFS
Exemplo: dir1\file1.txt
1. Ler o setor de boot do volume para localizar MFT.

2. Ler primeira entrada da MFT para determinar layout da MFT.

3. Alocar uma entrada na MFT para o arquivo.

4. Iniciar o atributo $STANDARD_INFORMATION para o arquivo.

5. Achar cluster livres em $Bitmap, setando-o para “1”.

55/60
Criando um arquivo em uma partição NTFS
Exemplo: dir1\file1.txt
6. Escrever o conteúdo do arquivo nos clusters e atualizar o atributo
$DATA na $MFT com o endereço do cluster inicial.
7. Ler o root directory (entrada 5) da MFT para encontrar dir1.
8. Ler o atributo $INDEX_ROOT de dir1 para determinar onde file1
deve ficar.
9. Criar uma nova entrada de índice e reordenar a árvode de índices
10. Grava no $LogFile as operações.

56/60
Entrada de um arquivo em uma partição NTFS
Exemplo: dir1\file1.txt

57/60
Deletando um arquivo em uma partição NTFS
Exemplo: dir1\file1.txt
1. Ler o setor de boot do volume para localizar MFT.
2. Ler primeira entrada da MFT para determinar layout da MFT.
3. Ler diretório raiz (entrada 5 da MFT) e localizar diretório dir1.
4. Ler a entrada $INDEX_ROOT para dir 1 e encontrar file1.txt.
5. Remova o nome do arquivo da entrada o $INDEX_ROOT.
6. Setar as entradas em $BITMAP para “0”.
7. Gravar as operações em $Log_File.

58/60
Deletando um arquivo em uma partição NTFS
Exemplo: dir1\file1.txt

59/60
LABORATÓRIO

60/60

Você também pode gostar