Sistemas Operacionais SISTEMA DE ARQUIVOS Prof. D.Sc. Eduardo Barrére DCC026 Pontifícia Universidade Católica PUC - Minas Poços de Caldas Sistemas Operacionais #1 Sistema de Arquivos Definição: “O sistema de arquivos de um SO é o módulo (ou conjunto de rotinas) do SO que associado à um protocolo de execução organiza, manipula e protege os arquivos”Boca Existem 3 requisitos básicos para resolver o problema de armazenamento de informações a longo prazo: Possibilidade de armazenar grande quantidade de informação; A informação deve sobreviver ao término do processo; Vários processos podem manipular, concorrentemente, a mesma informação. Sistemas Operacionais #2 Sistemas de Arquivos Diversidade de sistema de arquivos O Linux (por exemplo) suporta diversos tipos de sistemas de arquivos. Dentre esses pode-se destacar: Minix O mais antigo e presumivelmente o mais confiável, mas bastante limitado em características (algumas datas não aparecem , máximo de 30 caracteres para nome de arquivos, etc...) e restrito em armazenamento (no máximo 64 Mb por sistema de arquivos). xia Uma versão modificada do sistema de arquivos minix, o qual aumenta os limites de nomes de arquivos e de sistemas de arquivos, mas não introduz novas facilidades. Não é muito popular, mas comenta-se seu bom funcionamento. ext2 O mais poderoso e popular sistema de arquivos nativo do Linux. Desenhado para ser facilmente compatível com os avanços das novas versões, sem a necessidade de criar novamente os sistemas de arquivos já existentes. ext Uma versão antiga do ext2 que não é mais compatível com versões atuais. É raro vê-la instalada em sistemas novos e mesmo os mais antigos têm sido convertidos para ext2. ext3 Apresentada no final do tópico. Sistemas Operacionais #3 Sistemas de Arquivos Diversidade de sistema de arquivos msdos Compatibilidade com MS-DOS (OS/2 e Windows NT) através de sistemas de arquivos FAT/FAT32. umsdos Sistemas de arquivos MS-DOS estendidos para suportar nomes longos, donos, permissões, links e arquivos de dispositivos do Linux. Isso permite que um sistema de arquivos msdos possa ser usado como se fosse um sistema Linux, removendo a necessidade de uma partição distinta para o Linux. iso9660 O sistema de arquivos padrão do CD-ROM. A extensão Rock Ridge que permite nomes longos também é suportada automaticamente. nfs Sistemas de arquivos em redes que permitem o compartilhamento e o fácil acesso aos arquivos entre diversos computadores da rede. hpfs O sistema de arquivos do OS/2. sysv Sistema de arquivos do System V/386, Coherent e Xenix. Sistemas Operacionais #4 Sistemas de Arquivos Diversidade de sistema de arquivos fat12 Usado em disquetes no DOS fat16 Usado no DOS e oferece suporte até discos de 2GB fat32 Também usado no DOS e oferece suporte a discos de até 2 Terabytes Vfat Extensão para FAT para suportar nomes longos (além dos 8.3) Qual sistema de arquivos deve ser usado? Faz pouco sentido utilizar muitos sistemas de arquivos diferentes. Atualmente o ext2fs é o mais popular. Dependendo da necessidade de recursos adicionais na manutenção das estruturas, velocidade, segurança, estabilidade, compatibilidade e diversas outras razões, pode ser desejável utilizar outro tipo de sistema de arquivos. Isto deve ser decidido caso a caso. A opção do sistema de arquivos a ser usado depende da situação Sistemas Operacionais #5 Armazenamento em Disco Um disco é formado por: faces, trilhas e setores. Exemplo: Num disco com: 2 faces 80 trilhas 18 setores 512 bytes por setor. Cluster = conjunto de setores Tem-se : 512 x 18 x 80 x 2=1,44 Mb onde um bloco de dados pode ser de 512b, 1k, 1.5k, .... Sistemas Operacionais #6 Armazenamento em Disco • Tempo de acesso Sistemas Operacionais #7 Sistemas de Arquivos Partições São divisões existentes no disco rígido que marcam onde começa onde termina um sistema de arquivos. Por causa destas divisões, nós podemos usar mais de um sistema operacional no mesmo computador (como o GNU/Linux, Windows e DOS), ou dividir o disco rígido em uma ou mais partes para ser usado por um único sistema operacional. Uma partição de disco não interfere em outras partições existentes, por este motivo é possível usar o Windows, GNU/Linux e qualquer outro sistema operacional no mesmo disco Sistemas Operacionais #8 MBR O arranque de um sistema PC segue os seguintes passos: 1) POST (Power On Self Test). 2) Aquisição dos dados do BIOS e reprogramação do suporte I/O. 3) Leitura do primeiro setor do disco (MBR) de boot. Exemplo: IDE 0/Master). O MBR contém 512 bytes de informação da estrutura organizacional do disco (partições, código de carga do SO, e assinatura desse código): Estrutura do Master Boot Record Código de arranque do SO 446 bytes Master Partition Table (MPT) 16 bytes 16 bytes 16 bytes 16 bytes Assinatura 2 bytes A MPT contém códigos identificativos do tipo da partição e alguns dados sobre a mesma (se é a partição ativa (carga do SO) posição no disco, tamanho, etc.). Problema: só podem existir 4 partições primárias! Solução: Partições estendidas (criação de partições lógicas). Sistemas Operacionais #9 Arquivos Um arquivo é identificado por um nome e uma extensão. Ex: teste.txt (mera convenção p/ usuário) As Formas de Estrutura do Arquivo: byte Fornece flexibilidade, o usuário armazena qualquer tipo de dado nos arquivos. SO não ajuda, nem atrapalha Sistemas Operacionais #10 Arquivos registro Seqüência de registros de tamanho fixo para poder fazer operações de leitura e gravação de uma só vez; Pré-história dos cartões: cada registro era constituído por 80 caracteres. Último SO que utilizou essa forma: CP/M-86, pai do MS- DOS ( eu utilizei ) Sistemas Operacionais #11 Arquivos Ana Beatriz Camila Teresa Cláudia Daniele Isabela Patrícia Um Arquivo pode ser constituído por uma árvore de registros Tina Vanessa Maria A árvore é ordenada por uma chave para permitir buscas rápidas Registro Objetivo não era determinar o próximo registro mas um entre vários. Alguns mainframes ainda utilizam. Sistemas Operacionais #12 Tipos de Arquivo Entre os tipos de arquivo suportados pelo SO temos: Arquivos de Diretório: manutenção do sistema de arquivo (contém a hierarquia); Apontam para arquivos; Arquivos Especiais de Caracteres: modelagem de dispositivos de I/O conversões); No Linux residem em /dev; permite a (tabela de Arquivos Regulares: Informações do usuário. ASCII ou binários, executáveis. Sistemas Operacionais #13 Arquivos de Dispositivo Nome Tipo Maior Menor Descrição /dev/fd0 Bloco 2 0 Unidade de disquete 0 (driver A) /dev/hda Bloco 3 0 Disco IDE primário /dev/hda1 Bloco 3 1 Primeira partição do disco IDE primário /dev/hda2 Bloco 3 2 Segunda partição do disco IDE primário /dev/tty0 Caractere 3 0 Terminal /dev/lp1 Caractere 4 1 Impressora paralela /dev/console Caractere 1 1 Teclado Sistemas Operacionais #14 Acesso a Arquivos Os arquivos podem ser acessados de dois modos: Seqüencial: um processo não pode ler um byte ou registro sem antes ter lido todos os outros anteriores a ele; Aleatório ou Randômico: permite o acesso a um byte independente da sua posição dentro do arquivo (operação SEEK). É o modo padrão do SO. Sistemas Operacionais #15 Atributos dos Arquivos Além do nome e de um conjunto de informações, o arquivo também deve conter vários atributos que são importantes para o seu gerenciamento. Exemplos: Proteção (diz quem tem acesso), Proprietário (identifica o proprietário), Leitura (readonly), Ocultação (não aparece em dir.), Sistema (identifica se é do SO), Backup (identifica se foi feito backup), ASCII/Binário, Data, Hora, Tamanho do Arquivo, etc. Sistemas Operacionais #16 Atributos dos Arquivos d rwx rwx rwx Tipo de Arquivo Proprietário 'd‘=diretório 'l‘ = link 'c' e 'b' = dispositivos (/dev). Grupo Sistema ‘r‘ = leitura ‘w‘ = escrita ‘x' = execução Exemplos: drwxr-xr-x bin -rw-rw-r-- teste.txt crw-rw---- audio 14, 4 Dec 2 1999 audio brw-rw---- cdrom 22, 64 May 5 1998 hdd lrwxrwxrwx 1 ze users 29 Aug 18 12:33 efr -> /www/ns-home/docs/ Sistemas Operacionais #17 Atributos dos Arquivos $ chmod 664 arquivo.txt Número Significado 0 Nenhuma permissão 1 Permissão para executar 2 Permissão para gravar 3 Permissão para gravar e executar 4 Permissão para ler 5 Permissão para ler e executar 6 Permissão para ler e gravar 7 Permissão para ler, gravar e executar Sistemas Operacionais #18 Cabeçalho de um Arquivo exe Os executáveis (ou binários) também recebem a denominação de PE (“Portable Executable”). É um padrão estabelecido pela Microsoft nos primórdios do Windows, onde decidiram criar um formato de binário capaz de rodar em qualquer outra versão do Windows. Um executável no formato PE possui uma estrutura um tanto quanto complexa, mas ao mesmo tempo muito organizada e versátil. Uma característica interessante sobre os arquivos PE é que eles são armazenados na memória da mesma forma que eles ficam em disco, mantendo a estrutura no arquivo praticamente idêntica nos dois casos. Quando o usuário requisita a execução de um aplicativo, o Windows Loader analisa o cabeçalho do PE. Feito isso, ele possui as informações necessárias para poder copiar o executável do disco rígido para a RAM. No entanto, ele não é carregado para a RAM exatamente da mesma forma que ele se encontra no Windows. O Loader precisa fazer alguns ajustes. Esses ajustes são necessários devido à forma com que o S.O. da Microsoft gerencia a memória, utilizando uma memória virtual paginada. Quando as seções são carregadas para a memória, o Windows alinha cada uma delas para caber em páginas de 4KB. Sistemas Operacionais #19 Cabeçalho de um Arquivo exe O arquivo é organizado basicamente desta maneira: • Cabeçalho DOS: DOS não tem utilidade prática dentro do sistema Windows, ele serve apenas para apresentar uma mensagem avisando o usuário que o aplicativo em questão não pode ser utilizado em modo texto • Cabeçalho Windows: estão todas as informações básicas necessárias para que o aplicativo funcione, como o número de seções, tamanho de cada seção e início das mesmas, onde iniciar a execução do código, dentro dezenas de outras configurações. • Tabela de Seções: i nformações referentes a cada uma das seções: • Seção de código - Code Section ( .text ou .code ) • Seção de recursos – Resource Section ( .rsrc ) • Seção de dados – Data Section ( .data ) • Seção de exportação – Export data section ( .edata ) • Seção de importação - Import data section ( .idata ) • Informações de debug - Debug information ( .debug ) • Seção 1 a N; Sistemas Operacionais #20 Cabeçalho de um Arquivo exe Sistemas Operacionais #21 Operações sobre Arquivos O SO fornece um conjunto de operações básicas: Create; Append; Delete; Seek; Open; Get Attributes; Close; Set Attributes; Read; Rename; Write; Sistemas Operacionais #22 Diretório O SO utiliza um sistema hierárquico para manipular os arquivos, chamado diretório. Arquivo 1 Diretório 1 Arquivo 2 Um diretório contém um conjunto de entradas, uma para cada arquivo Usuário 1 Usuário 2 Diretório 2 Arquivo 1 Arquivo 1 ou diretório filho (subdiretório). Usuário 3 Arquivo 1 Diretório 1 Usuário n Arquivo 1 Arquivo 1 Arquivo 2 Diretório Raiz Arquivo 2 Sistemas Operacionais #23 Nomes de Arquivo Regras para formar o nome de um arquivo: Nome de caminho absoluto; Nome de arquivo relativo. ect lib usr tmp ect lib usr edu ze edu tmp ze Sistemas Operacionais #24 Diretório Linux A estrutura de diretórios de um linux típico é mostrada nesta tabela: bin Arquivos executáveis(binários) de comandos essenciais pertencentes ao sistema e que são usados com freqüencia. boot Arquivos estáticos de boot de inicialização(boot-loader) dev Arquivos de dispositivos de entrada/saída etc Configuração do sistema da máquina local com arquivos diversos para a administração de sistema. home Diretórios local(home) dos usuários lib Arquivos da biblilotecas compartilhadas usados com freqüencia mnt Ponto de montagem de partição temporários root Diretório local do superusuário (root) sbin Arquivos essenciais do SO tmp Arquivos temporários gerados por alguns utilitários usr Todos os arquivos de usuários devem estar aqui (segunda maior hierárquia) var Informação variável Sistemas Operacionais #25 Sist. de Arquivo: Implementação Um ponto importante no desempenho do SO é a maneira como é implementado o Sistema de Arquivos, ou seja, como os arquivos são associados aos blocos do disco. As implementações mais usuais são: • Alocação Contígua; • Alocação Encadeada; • Alocação com Índices; • I - nodes; Sistemas Operacionais #26 Alocação Contígua É o esquema mais simples de alocação. 12K Arq1 10K Arq2 5K Arq3 3K Bloco Problema: É necessário sabermos o tamanho do arquivo no momento da sua criação; Sistemas Operacionais #27 Alocação Contígua 0 3 1 4 2 5 6 7 8 9 10 11 12 13 14 Arquivo Bloco Extensão A. TXT 4 3 B. TXT 10 1 C. TXT 13 2 • Não exige o índice do próximo. Sistemas Operacionais #28 Alocação Encadeada Consiste em manter o espaço alocado ao arquivo através de uma lista ligada de blocos, atenuando o problema da fragmentação. Bloco Bloco 0 do Arq1 Bloco 1 do Arq1 5 8 Bloco 2 do Arq1 12 0 Bloco 3 do Arq1 Bloco 0 do Arq2 10 4 Bloco 1 do Arq2 7 0 Bloco 2 do Arq2 9 Problemas: O acesso randômico ao disco é extremamente lento e mais difícil de ser implementado do que o seqüencial; O tamanho do bloco não é totalmente utilizado para o armazenamento dos dados (2 bytes para o ponteiro). Sistemas Operacionais #29 Alocação Encadeada Início 0 3 6 9 12 1 4 7 10 13 2 5 8 Arquivo Bloco A.TXT 6 ... ... ... ... ... ... ... ... 11 14 • Cada bloco, em disco, deve armazenar o índice do próximo. • A tabela só mantém o primeiro bloco do arquivo. Sistemas Operacionais #30 Alocação: Lista usando Índice Este método resolve os problemas da Lista Ligada, mantendo os ponteiros em uma tabela. Problema: A tabela deve estar na memória principal durante todo o tempo (é utilizado pelo MS-DOS, chama-se FAT). Sistemas Operacionais #31 Alocação: Lista usando Índice 3 10 11 7 0 1 Bloco de Índices (FAT) 2 3 4 5 6 7 8 9 10 11 12 13 14 Vai para a memória RAM •A tabela mantém todos os blocos do arquivo. Sistemas Operacionais #32 Nós-i (nós - índice, i-node) • Não existe fragmentação: Todo arquivo é mantido a partir de um “ramo” da árvore. Qualquer acesso ao arquivo ficará limitado a este ramo. • A combinação dos blocos, originalmente composto por 512K, pode ser alocado em conjunto a outros blocos formando espaços de endereçamento com diferentes tamanhos. • Na exclusão de arquivos desliga-se apenas os ponteiros para o bloco inicial. Sistemas Operacionais #33 Nós-i (nós - índice, i-node) Utiliza uma estrutura hierárquica maleável para endereçar os blocos do arquivo (é utilizado pelos like - UNIX). Bloco de dados I-node Atributos Endereço bloco 0 Endereço bloco 1 Endereço bloco 2 Endereço bloco 3 Endereço bloco 4 Endereços adicionais Endereços adicionais Endereços adicionais Redir ecionam ento tri plo Sistemas Operacionais #34 Arquivos Compartilhados Alguns arquivos devem compartilhados por vários usuários como: arquivos de configuração, bases de dados e arquivos de projetos, entre outros. Diretório Arquivo A A B B Dois diretórios (B e C) mantém entradas iguais. C B C B ? C C C Sistemas Operacionais #35 Controle de Blocos Livres Existem três modos para controlar os blocos livres de um disco: lista de blocos, mapa de bits e tabela de blocos livres Início Lista de Blocos Cada bloco livre aponta para outro bloco livre. O primeiro da lista será o próximo a ser utilizado. Lista encadeada Sistemas Operacionais #36 Controle de Blocos Livres Mapa de bits 11001101 Cada bloco do disco tem um bit correspondente, sendo que zero indica bloco livre e um indica bloco ocupado. Independente da quantidade de blocos livres temos o mesmo espaço ocupado pelo mapa de bits. 10000111 01110100 . . . 11100000 (a) Mapa de bits Sistemas Operacionais #37 Controle de Blocos Livres Tabela de Blocos Livres O sistema operacional mantém em disco uma tabela (constantemente atualizada) que identifica o endereço dos blocos livres Bloco Endereço 4 2 10 1 13 7 25 20 50 5 Tabela de blocos livres Sistemas Operacionais #38 Sistema de Arquivos FAT FAT (File Alocation Table) Disco Rígido A P1 B P2 C P3 .... ... A. Setor de Boot Primário: contém informação para boot inicial, é lida pela ROM, altamente dependente de máquina, contém tamanho dos setores, tamanho do diretório raiz,qual partição está ativa, etc. B. C. Partições do disco: cada uma delas pode conter um sistema operacional diferente e independente. Sistemas Operacionais #39 Sistema de Arquivos FAT FAT (File Alocation Table) Disco Rígido A P1 BS P2 C P1 B FAT1 FAT2 Root P3 .... ... Dados BS. Boot Secundário: contém endereços e info. sobre o SO que será carregado (end. do dir. raiz) FAT: alguns casos ela é duplicada, contém entradas para cada bloco de dados. Root: diretório raiz. Dados: dados do usuário. Sistemas Operacionais #40 Sistema de Arquivos FAT 0 1 2 3 4 5 6 7 8 9 X X eof 13 2 9 8 free 4 12 10 11 12 13 3 free eof eof 14 15 ... eof eof FAT } Informações a respeito do tamanho do disco Arquivo A: 6 8 4 2 Arquivo B: 5 9 12 Arquivo C: 10 3 13 A entrada de cada diretório contém apenas o bloco inicial para cada arquivo. A FAT cuida do resto! Sistemas Operacionais #41 Sistema de Arquivos NFS NFS (Network File System): Primeiro passo para se ter um sistema distribuído. Filosofia que engloba os sistemas de arquivos para SO´s like-Unix, i. e., não representa um sistema de arquivos propriamente dito. NFS pode ser dividido em: 1. Arquitetura 2. Protocolos 3. Implementação Sistemas Operacionais #42 Sistema de Arquivos NFS Arquitetura NFS Idéia básica: compartilhar os arquivos comuns Cada servidor exporta (automaticamente, no Boot) seus arquivos que estão no diretório /etc/exports Muitas estações SUN são diskless, neste caso cada cliente monta (mount) seu próprio diretório no servidor Sistemas Operacionais #43 Sistema de Arquivos NFS Protocolos NFS É a “conversa” que existe entre servidor e clientes para negociar o compartilhamento e acesso aos arquivos (tamanho dos nomes, atributos de segurança, propriedade, etc.) Cada requisição pode exigir uma resposta Não é necessário que o servidor conheça algo sobre seus clientes (idem ao contrário) Consulte o Tanembaum. Lá são descritas as possibilidades de ocorrência de erro na comunicação entre servidor/cliente e quais os procedimentos possíveis. Sistemas Operacionais #44 Sistema de Arquivos NFS Implementação do NFS A implementação dos códigos dos clientes e dos servidores são independentes. Cliente Read, close, etc Chamada de sistema Sistema de arquivos virtual SO Local C:\ local Cliente NFS Identifica se o arquivo é local Contém R-node Servidor Sistema de arquivos virtual Servidor NFS MSG do cliente SO Local H:\ MSG para servidor Sistemas Operacionais #45 Sistema de Arquivos NTFS 2000/XP Projeto No inicio: FAT para MS-DOS e Windows / e o HPFS para OS/2. Hoje: Protect Mode FAT File System (FAT16 e FAT32) – Windows 95/98/me NTFS: Windows 2000/NT/XP Esses dois sistemas de arquivos tinham várias limitações, levando a Microsoft a desenvolver um novo sistema de arquivos denominado NTFS (Windows NT File System). NTFS oferece a recuperação do sistema com base em um modelo de processamento de transação. Processamento de transação é um modelo usado por bancos de dados para manter a integridade dos dados caso haja uma falha na alteração dos dados. O princípio básico desta técnica é que as transações (escrita ou leitura dos dados no disco) são executadas atomicamente Sistemas Operacionais #46 Sistema de Arquivos NTFS Segurança Os arquivos são implementados como objetos de arquivo, estes objetos possuem um descritor de segurança que fica armazenado no disco. Quando um processo requisita determinado arquivo o sistema de segurança verifica se este processo possui autorização para tal operação (execução, leitura ou escrita). O sistema compara o descritor de segurança do arquivo com as características do usuário e as permissões dadas a esse usuário, se o usuário tiver permissão para tal operação o sistema libera o processo para realizá-la, caso contrario o sistema informa ao usuário que a operação falhou por que o usuário não possui permissão para a operação Sistemas Operacionais #47 Sistema de Arquivos NTFS Capacidade de armazenamento: NTFS aloca clusters e usa 64 bits para endereçá-los, cada um com até 64Kb. Cada arquivo pode ter até 18446744073709551616 bytes de extensão. (“hexa” qualquer coisa bytes, segundo Cláudio: Porabytes ). O tamanho do cluster é ajustável, com um tamanho mínimo de 512 bytes para discos menores e máximo de 64Kb para discos grandes. Embora o NTFS use 64bits (8 bytes) para representar cada alocação de disco, ele codifica os endereços de modo que ocupem apenas de 3 a 5 bytes (meu Deus...) Sistemas Operacionais #48 Sistema de Arquivos NTFS Unicode O que é Unicode? Unicode fornece um número único para cada caractere, não importa a plataforma, não importa o programa, não importa a língua. Qual o ascii desta letra grega ?! Җ O NTFS armazena os nomes de arquivos, diretórios e volumes usando Unicode. Foi usado o Unicode para tornar o sistema utilizável sem mudanças para qualquer tipo de idioma, tornando o sistema o mais universal possível. Antes de o Unicode ser inventado, havia centenas de sistemas diferentes de codificação . Nenhum destes sistemas de codificação, no entanto, poderia conter caracteres suficientes: por exemplo, a União Européia por si só requer vários sistemas de codificação diferentes para cobrir todas a línguas. Mesmo para uma única língua como o inglês não havia sistema de codificação adequado para todas as letras, pontuação e símbolos técnicos em uso corrente. Sistemas Operacionais #49 Sistema de Arquivos NTFS POSIX O sistema NTFS suporta POSIX (Portable Operating System Interface) totalmente. O padrão POSIX exige: nomes de diretórios e arquivos se diferenciem pela caixa alta e caixa baixa, uma marca de "hora de mudança do arquivo" e atalhos (links) Posix define características como proteção entre processos (crash protection), carregamento por demanda, redes TCP/IP, alem de nomes de arquivos com até 255 caracteres, suporte a UNICODE, shared libraries, memória virtual, etc. Sistemas Operacionais #50 Sistema de Arquivos NTFS Estrutura no disco Volumes O volume corresponde a uma partição lógica no disco, estes volumes podem ou não ser tolerantes a falhas. Um disco pode conter vários volumes que são independentes uns dos outros. Clusters O cluster é a unidade fundamental de alocação do NTFS, o tamanho do cluster é estabelecido quando o usuário formata o disco. O tamanho do cluster dependendo do tamanho da partição formatada. O NTFS refere-se aos locais físicos no disco através de números de cluster lógicos (LCN - logical cluster numbers), que são simplesmente a numeração de todos os clusters do início até o final do disco. Os dados do arquivo são referenciados através de números de cluster virtuais (VCN - virtual cluster number), que são valores seqüenciais de 0 a m. Para poder acessar os dados no disco, o sistema NTFS transforma os endereços VCN em LCN assim localizando em que região do disco está o dado. O arquivo teste.txt possui VCN 5 (como se fosse endereço FAT), o VCN 5 está relacionado ao LCN 1302 que por sua vez corresponde ao endereço físico AF4415512. Coisas da Microsoft... Sistemas Operacionais #51 Sistema de Arquivos NTFS Estrutura no disco Tabela de Arquivo Mestre (MFT – Master File Table) Todos os dados, estruturas de busca, dados de inicialização, bootstrap do NTFS estão contidos em arquivos, não estando restritos a uma região especifica do disco. Manter esses dados em arquivos permite que o sistema localize e mantenha os dados com facilidade, além do mais caso alguma parte do disco se torne defeituosa é possível modificar a localização destes arquivos para que o sistema não se torne inacessível. A MFT é a principal estrutura localizada no disco. A MFT é uma matriz de registro de arquivo de 1Kb cada, logicamente a MFT contém uma linha para cada arquivo no volume. Além da MFT cada volume contém uma série de arquivo de metadados (arquivo de log, arquivo de cluster defeituosos, além de outros usados pelo sistema), o restante dos arquivos são arquivos e diretórios de usuários. Ou seja, pegaram a FAT e deram um trato nela. Fizeram escova, passaram um batonzinho... Sistemas Operacionais #52 Sistema de Arquivos NTFS Compactação de dados O NTFS suporta a compactação dos dados do disco automaticamente, apenas é necessário especificar quais locais do volume serão compactados. Escolher esta opção de compactação dos dados denigre o desempenho do sistema para escrita e leitura dos dados, muitas vezes não sendo indicados para usuários que necessitem de desempenho, já que hoje em dia espaço em disco não é um custo tão alto A compactação no NTFS pode ser realizada em arquivo, diretório ou volume, além disso apenas arquivos do usuário são compactados, não compactando os arquivos de metadados (bitmaps, bootstrap, MFT,etc). Sistemas Operacionais #53 Sistema de Arquivos NTFS Tolerância a Falhas Conjunto de espelhos: No conjunto de espelho, o conteúdo de uma partição em disco é duplicado em uma partição do mesmo tamanho em outro disco. Quando um programa grava em C:, FtDisk grava os mesmos dados no mesmo local na partição espelho. Além disso, o conjunto espelho pode ajudar na atividade de I/O, em sistemas muito sobrecarregados, equilibrando suas operações de leitura entre as duas partições. As operações de leitura podem ser feitas normalmente, mas quando um arquivo é modificado as duas partições devem ser gravadas, mas as gravações são feitas assincronamente, de modo que o desempenho geralmente não é afetado pela atualização extra do disco. Sistemas Operacionais #54 Sistema de Arquivos NTFS Tolerância a Falhas Recuperação de cluster defeituoso do NTFS Os erros de setor defeituoso são indesejáveis, mas quando ocorrem, a combinação do NTFS e do FtDisk oferece a melhor solução possível. Se o setor defeituoso estiver em um volume redundante, FtDisk recupera os dados e substitui o setor, se puder. Se ele não puder substituir o setor, retornará uma advertência para o NTFS, que substituirá o setor defeituoso. Se o FtDisk descobrir um setor defeituoso durante a leitura ele substituirá o setor defeituoso e recuperará os dados de uma cópia redundante, se não possuir uma cópia redundante ele não poderá recuperar os dados mas enviará uma mensagem ao NTFS (do tipo: FOD...-SE). Se descobrir o setor defeituoso durante a gravação ele substituirá o setor e como o dado que se encontrava no setor defeituoso seria sobrescrito mesmo nenhum dado será perdido. Sistemas Operacionais #55 Adendo – ext3 • No Linux -> Sistema de Arquivos são disponibilizados através do comando "mount“. • Lista de sistemas de arquivos disponíveis no arquivo /etc/fstab • Lista de sistemas de arquivos que estão efetivamente em uso, no arquivo /etc/mtab (tabela mount). • Para cada sistema de arquivos montado no startup, um bit no cabeçalho do sistema de arquivos é zerado para indica que o sistema de arquivos está em uso a partir daquele momento e que as estruturas de dados usadas para o alocação e organização de arquivos/diretórios podem sofrer mudanças (atualizações). • Quando o usuário decide desligar o computador e usa comandos para encerrar o Linux, os sistemas de arquivos são desmontados, fazendo com que o bit citado acima seja modificado para indicar que o sistema de arquivos está consistente, ou seja, não pode mais sofrer mudanças. Sistemas Operacionais #56 Adendo – ext3 Erros e corrompimento do sistema de arquivos Os sistemas de arquivos para Linux já sofreram muitos tipos de tratamentos e reescrita de código para eliminar o corrompimento causado por aplicações ou pelo próprio kernel. No entanto, eliminar o corrompimento de dados em arquivos causados, por exemplo, pela queda de energia ou pelo desligamento incorreto por parte do usuário, sempre foi uma tarefa praticamente impossível. Quando o sistema é desligado incorretamente o bit do cabeçalho do sistema de arquivos não é ajustado. A solução foi fazer com que, no próximo processo de carregamento do Linux, seja verificado se o cabeçalho está com o bit de cabeçalho setado para indicar que o sistema de arquivos está consistente e não manipulável. Caso não esteja, a ferrramenta "fsck" verifica o sistema na busca de erros. Sistemas Operacionais #57 Adendo – ext3 Journaling O fsck consegue prover resultados satisfatórios, mas a correção de erros pode levar muito tempo, algo inaceitável em aplicações críticas. Além disso, se o desligamento incorreto do computador ocorreu quando dados estavam sendo gravados no disco, o fsck não conseguirá completar esses processos, ocasionando a perda das informações que estavam sendo gravadas. Diante desses problemas, foi apresentada uma solução viável: a utilização de sistemas de arquivos com a tecnologia "Journaling", que possuem a capacidade de acompanhar as mudanças que serão feitas no sistema de arquivos (por exemplo, gravações/atualizações de dados) antes que realmente sejam feitas. Essas informações que o Journaling captura são então armazenadas em uma parte separada do sistema de arquivos, denominada "Journal" (mas também conhecida por "registros de log"). Quando as informações são armazenadas no Journal, o sistema de arquivos aplica as mudanças registradas nele e então, remove as informações do Journal. Sistemas Operacionais #58 Adendo – ext3 Os registros de log são escritos antes que as mudanças efetivamente ocorram no sistema de arquivos e esses registros somente são eliminados quando as mudanças são feitas. Assim, se o computador é indevidamente desligado, o processo de montagem no próximo startup verificará se há mudanças gravadas no Journal "marcadas" como não feitas. Se houver, tais mudanças são então aplicadas ao sistema de arquivos. Isso faz com que os riscos de perda de dados sejam reduzidos drasticamente. Sistemas Operacionais #59 Adendo – ext3 Existem vários sistemas de arquivos disponíveis com a tecnologia Journaling, como o XFS, desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado com código aberto, o ReiserFS, desenvolvido especialmente para Linux, JFS, desenvolvido originalmente pela IBM mas também liberado com código aberto, e o mais conhecido deles: o ext3, desenvolvido pelo Dr. Stephen Tweedie juntamente com outros colaboradores, na Red Hat. O sistema de arquivos ext3 é basicamente o sistema de arquivos ext2 com recursos de Journaling. Talvez, essa seja a razão de seu uso amplo: ele é totalmente compatível com ext2 (que foi um sistema de arquivos muito usado), o que nenhum outro sistema de arquivos baseado em Journaling é. O ext3 passou a ser efetivamente suportado pelo kernel do Linux a partir da versão 2.4. Conseqüentemente, todas as distribuições Linux lançadas com esse kernel ou superior, tem suporte padrão para ext3. Sistemas Operacionais #60 Adendo – ext3 No ext3, o código de Journaling usa uma camada chamada "Journaling Block Device" (JBD). A JBD foi criada com o propósito de implementar Journal em qualquer tipo de dispositivo com base em blocos de dados. Por exemplo, o código ext3 informa e "pede autorização" à JDB para efetuar as mudanças, antes de modificar/adicionar qualquer dado no disco. O ext3 suporta três diferentes modos de trabalho do Journaling. São eles: • Journal: grava todas as mudanças em sistema de arquivos. É o mais lento dos três modos, mas é o que possui maior capacidade de evitar perda de dados; • Ordered: grava somente mudanças em arquivos metadata, mas guarda as atualizações no arquivo de dados antes de fazer as mudanças associadas ao sistema de arquivos. É o padrão no ext3; •Writeback: também só grava mudanças para o sistema de arquivo em metadata, mas utiliza o processo de escrita do sistema de arquivos em uso para gravação. É o mais rápido Journaling ext3, mas o menos confiável. Sistemas Operacionais #61