Sistemas de arquivos no Linux

Propaganda
Sistemas de arquivos no Linux
Carlos Eduardo Maiolino
Software Engineer
Red Hat
Agenda
●
Parte I
●
●
Parte II
●
●
Sistemas de arquivos no Linux
Parte IV
●
2
Estrutura e funcionamento básico
Parte III
●
●
Introdução a sistemas de arquivos
Comentários finais
Parte I
●
3
Introdução a sistemas de arquivos
●
O que são arquivos?
●
O que é um sistema de arquivos?
●
Para que servem?
O que são arquivos?
●
●
●
4
Contêineres de dados
Relacionado a uma determinada região ou
blocos de um disco
Tratados geralmente como uma simples
sequencia de bytes
O que é um sistema de arquivos?
●
5
Abstração utilizada pelo sistema operacional
para gerenciar arquivos
Para que serve?
●
Organizar dados
●
Controlar o espaço livre
●
Compartilhar arquivos entre usuários
●
Facilitar o acesso a informações
●
●
6
Já pensou em acessar dados tendo que apontar
quais setores do disco você quer acessar?
Controlar o acesso a estas informações
Parte II
●
7
Estrutura e funcionamento básico
●
Objetos de um sistema de arquivos
●
Organização de arquivos e diretórios
●
Estrutura de um arquivo
●
Alocação dos dados
●
Características diversas
Objetos de um sistema de arquivos
●
Arquivos regulares
●
●
●
Diretórios
●
Também é um arquivo
●
Armazena uma lista com arquivos e outros diretórios
Arquivos especiais
●
8
Dados de usuários
Bloco (discos) e Caracter (sockets, pipes, FIFOs, fitas,
etc), links simbólicos, etc
Organização de arquivos e diretórios
●
●
Organização de único nível
●
Armazena todos os arquivos em um único nível
●
Raramente utilizado hoje
Organização hierárquica
●
●
9
Possui uma organização em forma de arvore
Utilizado na maioria (se não em todos) os sistemas
de arquivos atuais
Organização hierárquica
/
/etc
passwd
group
friends.png
10
/home
/var
user
log
Pictures
messages
family.jpg
Estrutura de um arquivo
●
User data
●
●
Dados do usuário dentro do arquivo
Metadata
●
Informações utilizadas pelo sistema operacional
para gerenciar o arquivo
–
–
11
Tamanho, dono do arquivo, tempo de acesso,
modificação, localização dos dados
Em sistemas operacionais *NIX, estas informações ficam
armazenadas em uma estrutura chamada Inode.
Alocação dos dados
●
Dados são divididos em blocos
●
Alocação contígua
●
●
File allocation table (FAT)
●
●
12
Armazenamento em blocos contíguos
Armazena na memoria uma lista com ponteiros para cada
bloco formando uma lista encadeada
Inode
●
Lista de blocos diretos e indiretos
●
Arvores de extents e Arvores binarias (B+Trees)
Alocação contígua
0
1
2
3
File1
●
13
4
5
6
7
8
Free
space
9 10 11 12 13 14 15 16 17 18 19 20
File2
Utilizado principalmente em dispositivos
de escrita única como CDs e DVDs
(iso9660 e UDF)
Free
space
File allocation table (FAT)
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20
Bloco
0
1
2
3
4
5
6
7
8
9
14
Ponteiro
5
\0
8
9
3
\0
2
7
File2
File1
Lista direta/indireta de blocos
Inode
data
data
data
data
data
data
data
data
data
data
data
data
Indirect block
data
Indirect block
data
Indirect block
data
Indirect block
Indirect block
Indirect block
Double-indirect
block
Triple-indirect
block
Indirect block
Indirect block
Indirect block
Double-Indirect block
Indirect block
double-Indirect block
Indirect block
double-Indirect block
double-Indirect block
double-Indirect block
data
data
data
data
data
15
Extents
●
●
Unidade de alocação formada por um grupo de
blocos
Formado pelo endereço do primeiro bloco e a
quantidade de blocos contidas no extent, por
exemplo:
struct ext4_extent {
__le32 ee_block;
__le16 ee_len;
__le16 ee_start_hi;
__le32 ee_start_lo;
};
EXT4 Extent
16
B+Trees
17
Características diversas
●
18
Cada sistema de arquivos tem suas
particularidades
●
Forma de alocação dos dados
●
Journaling
●
Múltiplos discos
●
Snapshots
●
Mapeamento do espaço livre
●
Entre outras
Parte III
●
19
Sistemas de arquivos no Linux
●
Visão geral
●
Principais sistemas de arquivos
●
VFS
●
Como contribuir
Sistemas de arquivos no Linux
●
●
Maior quantidade de sistemas de arquivos em
um SO (cerca de 55 FS diferentes)
Diversos propósitos
●
●
●
20
Sistemas de arquivos locais, rede, compartilhados
(cluster fs), distribuidos, sistema
Grande quantidade de desenvolvedores
●
Códigos de alta qualidade
●
Variedade de funcionalidades
Excelente fonte de aprendizado
Comparativo de desenvolvimento
●
Desde a versão 2.6.18 ate o dia 21/11/2012
(v. 3.7-rc6)
Sistema de arquivos Numero de alterações Desenvolvedores Desenvolvedores ativos
●
●
21
Ext3
612
147
6
Ext4*
1921
236
12
XFS
2094
151
8
Btrfs*
2786
163
21
Parte dos desenvolvedores ativos são
funcionários Red Hat
Ext4 (2.6.19) Btrfs (2.6.29)
O que inclui cada sistema de arquivos
●
Mkfs
●
●
Fsck
●
●
Estende e diminui o sistema de arquivos
Ferramentas especificas
●
22
Verifica e repara consistência
Resize tool
●
●
Inicializa um sistema de arquivos
xfs_dump, btrfs, gfs2_edit, dumpe2fs, tune2fs
Ext3
●
●
Foi o mais comum sistemas de arquivos no
Linux
●
Muitas distribuições utilizaram como padrão
●
Aplicações especificamente desenhadas para Ext3
●
Familiar para maioria dos administradores
Desvantagens
●
●
23
Tempo de reparo (fsck) pode ser extremamente
longo
Escalabilidade limitada (max. 16TB)
Ext4
●
Principais características:
●
Sucessor do ext3
●
Uso de extents
●
Fsck mais rápido (aprox. 10x mais rápido que ext3)
●
Relativamente familiar para usuários ext3
●
Grande bandwidth
●
24
Sistemas de arquivos maiores que seu antecessor
ext3*
XFS
●
●
●
●
25
Desenvolvido para suportar quantidades massivas
de dados (suporta sistemas de arquivos de ate 9
Exabytes)
Alta performance para grandes quantidades de
dados
Muitos anos de uso em grandes ambientes
(>16TB)
Maior parte de seus metadados é organizado em
B+Trees (incluindo seus extents)
BTRFS
●
●
Suporte a grande quantidade de dados
●
Data checksum
●
Compressão de dados
●
Snapshots
●
●
26
Objetivo de ser o próximo sistema de arquivos
padrão no Linux
Suporte integrado a múltiplos discos (RAID 0 e
RAID1 por enquanto)
Ainda em fase experimental
Características genéricas
●
27
Ext4, XFS e o BTRFS suportam:
●
Delayed allocation
●
Per-file space preallocation
●
Hole punch (não implementado no btrfs ainda)
●
TRIM / Discard
●
Barriers
●
Desfragmentação
VFS
●
●
●
Virtual file system
Abstração de software responsável pelo suporte a
utilização de diversos sistemas de arquivos diferentes
no mesmo sistema operacional
Prove uma serie de estruturas genéricas a serem
compartilhadas pelos demais sistemas de arquivos
●
●
●
28
Inodes, arquivos, funções genéricas, cache, etc.
Tais estruturas são mantidas somente em memoria,
cada sistema de arquivos possui suas próprias
estruturas que são armazenadas nos discos
Utilização do conceito de POO
VFS #2
USER SPACE
VFS
XFS
EXT4
Page cache
DISKS
29
Como contribuir
●
Listas de discussão
●
●
●
30
Evite fazer perguntas que uma simples pesquisa no
Google resolva
IRC
●
●
Auxilie usuários
Participe dos canais IRC referente aos sistemas de
arquivos
Teste, reporte e corrija bugs
Parte IV
●
Comentarios finais
●
31
Participação da Red Hat no desenvolvimento do
Linux e seus sistemas de arquivos
●
Contato
●
Q&A
O que distribuímos
●
Software com alto nivel de maturidade
●
O que podemos testar e suportar
●
Local filesystems
–
●
Outros disponíveis para propósitos específicos
–
●
●
32
Ext3, ext4, XFS, Btrfs (tech-preview on el6)
Gfs2, Fat, vfat, ms-dos, udf, cramfs, squashfs
Nem todas as funcionalidades disponíveis
upstream são suportadas pela Red Hat
http://www.redhat.com/rhel/compare
Contribuição upstream
●
33
Empresas mais ativas no desenvolvimento do
Linux na versão 3.0
●
Sem afiliações – 12%
●
Red Hat – 11.1%
●
Intel – 9.3%
●
Desconhecido – 6.3%
●
Novell/Suse – 4.9%
●
IBM – 4.2%
●
Microsoft – 4.0%
Contato
●
●
●
Mailing lists
●
[email protected][email protected][email protected][email protected]
IRC (cem)
●
#xfs, #btrfs – irc.freenode.net
●
#ext4, #linuxfs – irc.oftc.net
Pessoal
●
34
[email protected] - [email protected]
Q&A
●
35
Perguntas?
Download