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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Estruturas de arquivos

Tanenbaum: Figura 6.2

Page 6: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Exemplos: executavel e archive

Tanenbaum: Figura 6.2

Page 8: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Atributos de arquivos

Tanenbaum: Figura 6.4Veja os comandos stat e make

Page 10: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Caminhos

Tanenbaum: Figura 6.10

I Absolutos ou relativos?

Page 20: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Mount

Tanenbaum: Figura 10.26

Page 24: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Alocacao contınua

Tanenbaum: Figura 6.12

Page 28: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Implementacao de diretorios

Tanenbaum: Figura 6.16

Page 35: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Nomes de tamanho variavel

Tanenbaum: Figura 6.17

Execute man readdir

Page 36: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Arquivos compartilhados

Tanenbaum: Figura 6.18

Page 37: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Arquivos compartilhados

Tanenbaum: Figura 6.19

Page 38: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Lista de livres e bitmaps

Tanenbaum: Figura 6.21

Page 39: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Bitmaps e lista de livresRelembrando gerencia de memoria...

Tanenbaum: Figura 4.7

Page 40: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Lista de livres em memoria

Tanenbaum: Figura 6.22

Page 41: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Gerencia de quotas

Tanenbaum: Figura 6.23

Page 42: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

Diretorios no Ext2

I inodeI name lengthI name

Page 46: Sistemas de Arquivos - Instituto de Computaçãoislene/1s2017-mc504/arquivos/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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/...Sistemas de Arquivos I Grande quantidade de informac¸ao˜ I Dados persistentes (nao-vol˜ ateis)´

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”?