42
Geraldo Braz Junior Unix: Sistema de Arquivos

Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

  • Upload
    dokhue

  • View
    217

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Geraldo Braz Junior

Unix: Sistema de Arquivos

Page 2: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Arquivos Um arquivo é visto pelo SO apenas

como uma seqüência de bytes: nenhuma distinção é feita entre arquivos ASCII, binários, etc.;

Muitos programas esperam que nomes de arquivo sejam constituídos por um nome básico seguido de um ponto e uma extensão;

A extensão informa o tipo do arquivo;

Um arquivo pode ter várias extensões: prog.java.Z;

As extensões não são exigidas pelo SO.2

Page 3: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Diretórios Arquivos podem ser agrupados em

diretórios;

O sistema de arquivos é hierárquico e o diretório raiz é chamado /;

Caminho absoluto e relativo (diretório de trabalho);

Quando um diretório é criado duas entradas são inseridas automaticamente: . e ..

3

Page 4: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Diretórios Importantes

4

Page 5: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Ligação(link) de Arquivos e Diretórios

5

Page 6: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Referência a Múltiplos Discos

Uma solução é usar um sistema de arquivos independente em cada um devendo o usuário especificar tanto o dispositivo quando o arquivo quando necessário:

Exemplo: cp a:/x /a/d/x

Estratégia adotada pelo MS-DOS, Windows e VMS;

Outra solução é permitir que um disco seja montado em uma árvore de arquivos de outro disco (adotado pelo Unix).

6

Page 7: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Referência a Múltiplos Discos

7

Page 8: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Impedimento (locking)

A utilização de um arquivo por dois ou mais processos pode gerar situações de disputa;

Uma solução é programar a aplicação com regiões críticas;

É possível associar um semáforo a cada diretório ou arquivo e implementar a exclusão mútua;

No entanto, o arquivo ou diretório todo fica impedido, mesmo que somente um arquivo deva ser acessado;

8

Page 9: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Impedimento (locking) POSIX oferece um mecanismo flexível e de

granularidade fina;

O programador deve especificar o arquivo, byte inicial e o número de bytes seguintes que ficarão impedidos de serem acessados por outros processos;

Tipos de impedimento: Compartilhado

Exclusivo

9

Page 10: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Impedimento (locking)

10

(a) Arquivo com um lock

(b) Adição de um segundo lock

(c) Um terceiro lock

Page 11: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Chamadas ao SistemaGerenciamento de Arquivos

11

• s : código de erro

• fd : descritor do arquivo

• position : offset no arquivo

Page 12: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Chamada stat

12

Campos retornados pela chamada stat

Page 13: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Chamadas ao SistemaGerenciamento de Diretórios

13

• s : código de erro

• dir : identificador do diretório

• dirent : uma entrada no diretório

Page 14: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

ImplementaçãoEsquema do Disco

14

Esquema de uma partição de disco no Unix clássico

Page 15: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

ImplementaçãoEsquema do Disco

Bloco 0 (boot): não utilizado pelo Unix

Bloco 1 (superbloco): Nº de i-nodes

Nº de blocos do disco

Ponteiro para lista de blocos livres

I-nodes Possui 64 bytes

Cada i-node descreve um arquivo

Blocos de dados Armazenam arquivos e diretórios

15

Page 16: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Estrutura do i-node

16

Estrutura de um i-node no System V

Page 17: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Diretórios e Abertura de Arquivos

O diretório consiste em um conjunto desordenado de entradas de 16 bytes: Nome do arquivo: 14 caracteres

Nº do i-node do arquivo

Abrindo arquivos: No diretório corrente

Utilizando um caminho absoluto: /usr/ast/file (i-node 2 aponta para o diretório raíz. O i-node 0 é utilizado para tratamento de blocos danificados)

I-node de arquivos abertos são mantidos na tabela de i-nodes do kernel.17

Page 18: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Leitura de Arquivon = read(fd, buffer, nbytes)

Dado o descritor de arquivos o sistema deve localizar o i-node correspondente;

Cada processo possui sua tabela de descritores de arquivos abertos;

Como vimos anteriormente, quando um processo abre o arquivo, o Unix inclui seu i-node na tabela de i-nodes do kernel;

A solução parece simples...

18

Page 19: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Leitura de Arquivo Onde deve ser mantido o ponteiro para

próxima leitura/escrita no arquivo?1. Na tabela de i-nodes

• Se dois ou mais processos não relacionados abrirem o arquivo eles devem ter ponteiros independentes

2. Na tabela de descritores• Problemas com o compartilhamento de

arquivos: considere um shell script constituído de 2 comandos p1 e p2, executados em ordem e que o script foi executado assim: s>x

Solução: tabela de descrição de arquivos abertos

19

Page 20: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Leitura de Arquivo

20

Page 21: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Sistema de Arquivos de Berkeley O limite do nome de arquivos passou a ser

de 255 caracteres; As chamadas opendir, closedir, readdir e rewinddir foram introduzidas;

Cache de nome: agiliza a localização de entradas em diretórios;

Divisão do disco em grupos de cilindros, cada um com seu próprio suberbloco, i-nodes e blocos de dados;

A idéia é manter próximos os blocos de dados e o i-node de um arquivo a fim de evitar longos posicionamentos.

21

Page 22: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Sistema de Arquivos de Berkeley Introdução de dois tamanhos de bloco:

Para armazenar arquivos grandes é mais eficiente ter um número pequeno de blocos grandes;

Por outro lado, muitos arquivos do Unix são pequenos e blocos grandes gerariam desperdício de espaço.

22

Page 23: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Sistema de Arquivos de Berkeley

23

• Um diretório BSD com três arquivos

• O mesmo diretório depois da remoção do arquivo voluminous

Page 24: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

NFS: Sistema de Arquivos de Rede

Desenvolvido pela Sun Microsystems;

Permite que um conjunto de clientes e servidores compartilhe um sistema de arquivo comum;

Cada servidor exporta um ou mais diretórios para serem acessados pelos clientes remotos;

A lista de diretórios exportados é mantida em /etc/exports;

Cada máquina pode ser cliente e servidor ao mesmo tempo.

24

Page 25: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

NFS: Sistema de Arquivos de Rede

25

Page 26: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Protocolos NFS Dois protocolos são utilizados:

1. Para a montagem de diretórios

2. Para o acesso a arquivos e diretórios

26

Page 27: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

NFS: Protocolo de Montagem Cliente envia um nome de caminho para

um servidor solicitando permissão para montar o diretório localmente;

O local da montagem não é fornecido; Se o caminho for válido, o servidor retorna

um controle de arquivo (file handler) contendo:◦ Tipo do sistema de arquivos;◦ Disco;◦ Número do i-node do diretório;◦ Informações de segurança.

O controle de arquivo deve ser utilizado nas requisições de acesso a arquivos e diretórios.

27

Page 28: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

NFS: Protocolo de Acesso Clientes podem enviar mensagens para

manipular diretórios, ler e escrever em arquivos;

Muitas chamadas do Unix são suportadas, menos open e close;

Não é necessário abrir ou fechar arquivos: ◦ Operação lookup retorna um controle para o

arquivo. Essa operação não copia qualquer informação para tabelas internas do servidor;

◦ O controle do arquivo contêm o identificador do arquivo e o número do i-node;

◦ A chamada read contêm o controle do arquivo, o deslocamento e número de bytes desejados;

◦ O servidor, portanto, não armazena estado !

28

Page 29: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

NFS: Protocolo de Acesso Como o servidor não armazena estado, seu

processo de recuperação em caso de falha é simplificado;

No entanto, o NFS requer um mecanismo adicional para tratar impedimentos (locking).

29

Page 30: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Implementação do NFS Dividido em três camadas:

1. A camada superior trata as chamadas ao sistema (open, read, close, etc.);

2. A segunda camada (VFS – Virtual File System) mantêm uma tabela com uma entrada para cada arquivo aberto denomida v-node (i-node virtual);

3. A terceira camada é responsável pelo acesso ao arquivo ou diretório.

30

Page 31: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Implementação do NFS

31

Page 32: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

V-nodes Informam se o arquivo é local ou remoto;

Para arquivos locais, são registrados o sistema de arquivos e o i-node;

Para arquivos remotos, o v-node aponta para um r-node (i-node remoto);

O r-node possui as informações que permitem o acesso remoto ao arquivo.

32

Page 33: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Implementação do NFSEficiência Transferências entre o servidor e o cliente

são feitas em grandes blocos (8192 bytes) mesmo que poucos bytes sejam requisitados;

Leitura antecipada: geração automática de requisição para leitura do próximo bloco;

Transferências de escrita também devem possuir pelo menos 8KB;

Escritas menores são acumuladas localmente (ou até que o arquivo seja fechado);

São utilizadas caches tanto no servidor quanto no cliente.

33

Page 34: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Implementação do NFS Consistência da Cache Cleinte

Associado a cada bloco da cache existe um temporizador. Quando ele expira, a entrada é descartada;

Para arquivos: 3s; para diretórios: 30s;

Sempre que um arquivo operado na cache é aberto, uma mensagem é enviada ao servidor para descobrir quando o arquivo foi alterado pela última vez;

A cada 30s todos os blocos sujos (modificados) são enviados para o servidor.

34

Page 35: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix Cada usuário possui um UID;

Usuários são organizados em grupos. Cada grupo possui um GID;

Um usuário pode pertencer a vários grupos;

Arquivos são marcados com o UID e GID de seu proprietário;

Cada processo carrega o UID e GID do seu proprietário (do usuário que solicitou a execução programa).

35

Page 36: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix Cada arquivo possui também um conjunto

de permissões relativas ao proprietário, grupo do proprietário e restante dos usuários em chaves de 3 bits: rwx.

36

Page 37: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix Diretórios também possuem chave de

proteção sendo que o x se refere à permissão de busca em vez de execução;

A chave rwxr-xr-w permite apenas leitura e busca de arquivos pelos outros usuários, impedindo-os de adicionar ou remover arquivos do diretório.

37

Page 38: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix O usuário com UID=0 é chamado de

superusuário ou root;

O root tem o poder de ler e escrever em todos os arquivos do sistema, independentemente de sua chave de proteção;

Processos com UID=0 também podem executar um pequeno número de chamadas ao sistema protegidas;

Arquivos especiais também utilizam chave de proteção.

38

Page 39: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix O arquivo /dev/lp poderia ser de

propriedade do root ou de um usuário especial (daemon) e ter modo de proteção rw------- para impedir que qualquer um pudesse imprimir;

De forma semelhante, o /etc/passwd não deve ser liberado para escrita;

Então, como usuários comuns podem imprimir ou alterar sua senha?

39

Page 40: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix Utiliza-se um bit a mais de proteção: o

SETUID;

Quando um programa que tem o bit SETUID ativado é executado, o UID efetivo para aquele processo se torna o UID do proprietário do arquivo executável em vez do UID do usuário que o invocou.

40

Page 41: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no UnixChamadas ao Sistema

41

As três últimas chamadas são permitidas apenas para o root

Page 42: Unix: Sistema de Arquivos - DEINF/UFMAgeraldo/soii/4.unix_04.pdf · NFS: Protocolo de Acesso Clientes podem enviar mensagens para manipular diretórios, ler e escrever em arquivos;

Segurança no Unix

Quando um usuário entra no sistema, o login (que tem SETUID de root) solicita o nome de uma conta e uma senha;

Se a conta e senha estão corretas, o login executa um shell utilizando setuid e setgid para definir o proprietário e grupo

corretos.

42