50
MC504 - Sistemas Operacionais Sistemas de Arquivos Islene Calciolari Garcia Instituto de Computac ¸˜ ao - Unicamp Primeiro Semestre de 2017

Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Embed Size (px)

Citation preview

Page 1: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

MC504 - Sistemas Operacionais

Sistemas de Arquivos

Islene Calciolari GarciaInstituto de Computacao - UnicampPrimeiro Semestre de 2017

Page 2: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Sumario

Introducao

Arquivos

Diretorios

Armazenamento de Arquivos

Diretorios

Arquivos compartilhados

Gerencia espaco livre

Consistencia

Page 3: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Sistemas de Arquivos

I Grande quantidade de informacaoI Dados persistentes (nao-volateis)I Acesso concorrente

Page 4: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Nomes e extensoes

Tanenbaum: Figura 6.1

Arquivos podem ter mais de uma extensao: file.ps.gzComando file verifica o tipo dos arquivos

Page 5: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Estruturas de arquivos

Tanenbaum: Figura 6.2

Page 6: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Tipos de arquivos

I regularI diretorioI caracter

I terminais, impressoras e redeI bloco

I discos

Use o comando stat:

$ stat arquivos.pdf

$ stat .

$ stat /dev/tty0

Page 7: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Exemplos: executavel e archive

Tanenbaum: Figura 6.2

Page 8: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Acesso a arquivos

I SequencialI Le todos os bytes a partir do inıcioI Fitas magneticas

I AleatorioI Bytes podem ser lidos em qualquer ordemI Bancos de dados

Page 9: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Atributos de arquivos

Tanenbaum: Figura 6.4Veja os comandos stat e make

Page 10: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Operacoes sobre arquivos

I createI deleteI openI closeI readI write

I appendI seekI get attributesI set attributesI rename

Veja struct file operations emlinux-4.X.Y/include/linux/fs.h

Page 11: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Programa copy

#define BUF_SIZE 4096

#define OUTPUT_MODE 0700

int main(int argc, char *argv[]) {int in_fd, out_fd, rd_count, wt_count;

char buffer[BUF_SIZE];

if (argc!=3) exit(1);

in_fd = open(argv[1], O_RDONLY);

if (in_fd < 0) exit(2);

out_fd = creat(argv[2], OUTPUT_MODE);

if (out_fd < 0) exit(3);

Page 12: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Programa copy

while((rd_count = read(in_fd, buffer, BUF_SIZE)) > 0) {wt_count = write(out_fd, buffer, rd_count);

if (wt_count <= 0) exit(4);

}

close(in_fd);

close(out_fd);

if (rd_count == 0) exit(0);

else exit(5);

}

Page 13: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Streams and File Descriptors

File descriptors provide a primitive, low-level interfaceto input and output operations. [...]The main advantage of using the stream interface isthat the set of functions for performing actual input andoutput operations (as opposed to control operations)on streams is much richer and more powerful than thecorresponding facilities for file descriptors. The filedescriptor interface provides only simple functions fortransferring blocks of characters, but the streaminterface also provides powerful formatted input andoutput functions (printf and scanf) as well as functionsfor character- and line-oriented input and output.

Fonte: http://www.gnu.org/software/libc/manual/html node/Streams-and-File-Descriptors.html

Page 14: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Streams

int fprintf(FILE *stream, const char *format, ...);

int fscanf(FILE *stream, const char *format, ...);

FILE *fopen(const char *path, const char *mode);

int fclose(FILE *stream);

Veja os exemplos fscanf.c e fscanf2.c

Page 15: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

DiretoriosNıvel unico e dois nıveis

cat

files

directory bo a test data mail cont hex records

cat bo a test x data aa

user 1 user 2 user 3 user 4

data a testuser filedirectory

master filedirectory

Silberschatz: Figuras 11.09 e 11.10

Page 16: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

DiretoriosArvore

list obj spell

find count hex reorderstat mail dist

root spell bin programs

p e mail

reorder list findprog copy prt exp

last first

hex count

all

Silberschatz: Figura 11.11

Page 17: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

DiretoriosGrafo acıclico

list all w count words list

list rade w7

count

root dict spell

Silberschatz: Figura 11.12

Page 18: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

DiretoriosGrafo geral

text mail

avi count unhex hex

count book book mail unhex hyp

root avi tc jim

Silberschatz: Figura 11.13

Page 19: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Caminhos

Tanenbaum: Figura 6.10

I Absolutos ou relativos?

Page 20: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Operacoes sobre diretorios

I createI deleteI

opendirI

closedir

I readdirI renameI linkI unlink

Veja struct inode operations emlinux-4.X.Y/include/linux/fs.h Veja o codigo dir.c

Page 21: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Links

Tanenbaum: Figura 10.25

I links simbolicos ou hard links?I caminhos absolutos ou relativos?I como copiar?

Page 22: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Exercıcio com links e copia

I Crie um diretorio contendoI um arquivo regularI um hardlink para este arquivoI um link com caminho relativo para este arquivoI um link com caminho absoluto para este relativo

I Copie este diretorio com cp -r

I Como ficou o resultado? Voce concorda com as opcoespadrao do sistema?

Page 23: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Mount

Tanenbaum: Figura 10.26

Page 24: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Mount

$ dd if=/dev/zero of=hd.dmp bs=4k count=256

$ mkfs.ext2 hd.dmp

$ mkdir -p mnt

$ sudo mount -t ext2 -o loop hd.dmp mnt

[sudo] password for islene:

Page 25: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Questoes de Implementacao

I Como os arquivos sao armazenadosI Como o espaco livre e gerenciadoI EficienciaI Confiabilidade

Page 26: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Layout

Tanenbaum: Figura 6.11

I MBR (Master Boot Record)I Tabela de particoesI Boot block

Page 27: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Alocacao contınua

Tanenbaum: Figura 6.12

Page 28: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Alocacao contınuaFragmentacao externa

directory

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

count

f

tr

mail

list

start

0 14 19 28

6

length

2 3 6 4 2

file

count tr mail list f

Silberschatz: Figura 12.05

Page 29: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Compactacao do disco

A

—B—C

A

BC——

Quais sao as desvantagens de se utilizar este metodo?

Page 30: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Lista ligada de blocos

Tanenbaum: Figura 6.13

0 1 2 3

4 5 7

8 9 10 11

12 13 14

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

15

6

filejeep

start9

directory

end25

1

1

-1

2

Silberschatz: Figura12.06

Page 31: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

File Allocation Table (FAT)

Tanenbaum: Figura 6.14

• • •

directory entry

test 217

start blockname0

217 618

339

618 339

number of disk blocks –1

FAT

Silberschatz: Figura 12.07

Page 32: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Index blocks

directory

0 1 2 3

4 5 7

8 9 10 11

12 13 14

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

15

6

9 161

10 25 –1 –1–1

filejeep

index block19

19

Silberschatz: Figura 12.08

Quais sao as vantagens e desvantagens deste esquema emcomparacao a FAT?

Page 33: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

I-node

Tanenbaum: Figura 6.15

direct blocks

data

data

data

data

data

data

data

data

data

data

• • ••

• •

• • •

• • •

• • •

• • •

mode

owners (2)

timestamps (3)

size block count

single indirect

double indirect

triple indirect

Silberschatz: Figura 12.09

Page 34: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Implementacao de diretorios

Tanenbaum: Figura 6.16

Page 35: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Nomes de tamanho variavel

Tanenbaum: Figura 6.17

Execute man readdir

Page 36: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Arquivos compartilhados

Tanenbaum: Figura 6.18

Page 37: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Arquivos compartilhados

Tanenbaum: Figura 6.19

Page 38: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Lista de livres e bitmaps

Tanenbaum: Figura 6.21

Page 39: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Bitmaps e lista de livresRelembrando gerencia de memoria...

Tanenbaum: Figura 4.7

Page 40: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Lista de livres em memoria

Tanenbaum: Figura 6.22

Page 41: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Gerencia de quotas

Tanenbaum: Figura 6.23

Page 42: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Consistencia do sistema de arquivos

Tanenbaum: Figura 6.26(a) consistente (b) bloco faltando(c) duplicacao na (d) duplicacao nos

lista de livres dados

Page 43: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Consistencia do sistema de arquivos

Tanenbaum: Figura 6.19

Verificar se todos os contadores estao corretos

Page 44: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Estrutura do Ext2

I Super block: numero de blocos no disco, tamanho dosblocos, ...

I Group descriptors: localizacao dos bitmaps inodes/blocose da tabela de i-nodes, ..

Page 45: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Diretorios no Ext2

I inodeI name lengthI name

Page 46: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Ext2 e crashes

I Operacoes como criacao e remocao envolvem variasescritas em disco

I Um crash pode ocorrer durante o processo eI um bloco foi incluıdo no inode, mas nao esta marcado

como em uso no bitmapI um bloco foi removido do inode, mas nao esta marcado

como livre no bitmapI um bloco foi reutilizado, mas o inode original ainda aponta

para ele.I um inode foi marcado como em uso, mas nao ha entrada

em diretorio apontando para ele.I ...

Page 47: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

fsck e recuperacaoTestando com debugfs

I Crie um sistema de arquivos ext2 com mkfs.ext2

I Utilize o debugfs para corromper este sistemaI Verifique se o fsck encontra os erros

Page 48: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Criando e fazendo verificacao inicial

$ dd if=/dev/zero of=ext2.dmp bs=1k count=256

$ mkfs.ext2 ext2.dmp

$ fsck ext2.dmp

e2fsck 1.42.13 (17-May-2015)

ext2.dmp: clean, 11/32 files, 23/256 blocks

$ fsck -f ext2.dmp

e2fsck 1.42.13 (17-May-2015)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

ext2.dmp: 11/32 files (0.0% non-contiguous), 23/256 blocks

Page 49: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

Alterando bitmap dos inodes

$ debugfs -w ext2.dmp

debugfs: write a.txt a.txt

debugfs: ls

2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) a.txt

debugfs: freei <12>

Como o fsck consegue corrigir o erro?

Page 50: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/arquivos.pdfExt2 e crashes I Operac¸oes como criac¸˜ ao e remoc¸˜ ao envolvem v˜ arias´ escritas

lost+found

debugfs: write a.txt a.txt

debugfs: modify_inode <12>

Link count [1] 2

debugfs: ls

2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) a.txt

debugfs: rm a.txt

debugfs: quit

$ fsck.ext2 -f ext2.dmp

I Por que o inode <12> seria colocado no diretorio de“achados e perdidos”?