Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Gleci Ribeiro Martins, Letcia Saalfeld Universidade Catlica de Pelotas {glemarti, leticias}@atlas.ucpel.tche.br Resumo
O sistema de arquivos a parte de um sistema operacional que fica mais visvel para o usurio do computador. por meio dele que se manipulam os arquivos existentes no computador. A partir dos sistemas de arquivos Windows e Linux que ganham popularidade nos ltimos anos e vm sofrendo uma rpida evoluo. O Linux manteve o modelo do sistema de arquivos padro do Unix, que um arquivo que pode ser qualquer entidade capaz de tratar as entradas e as sadas de um fluxo de dados. O Kernel do Linux lida com todos esses tipos de arquivos ocultandos os detalhes de implementao de qualquer tipo de arquivo por de trs de uma camada de software. O sistema de arquivos Windows FAT aceitvel e perfeitamente funcional para a maioria dos usurios domsticos, o qual foi necessrio o desenvolvimento de um sistema de arquivos que se adequasse ao funcionamento do Windows NT sendo criado o NTFS que muito melhor sendo projetado com muitos recursos, inclusive recuperao de dados, segurana, tolerncia falhas. ele ser destrudo ou danificado seriamente. A maioria dos programas trabalha em um sistema de arquivos e no funcionam em uma partio que no contenha um (ou que contenha um de tipo errado). Antes de uma partio ou disco ser usado como um sistema de arquivos ele necessita ser inicializado, e a estrutura bsica de dados necessita ser gravada no disco. Este processo chamado criao de um sistema de arquivos.
1. Introduo
Um sistema de arquivos o mtodo e a estrutura de dados que um sistema operacional utiliza para administrar arquivos em um disco ou partio, ou seja, a forma pela qual os arquivos esto organizados em um disco. A expresso tambm utilizada para se referenciar a uma partio ou disco que seja usado para armazenar os arquivos ou outros tipos de sistemas de arquivos. Algum pode dizer eu tenho dois sistemas de arquivos, significando que tem duas parties nas quais armazena arquivos ou aquela pessoa est usando o sistema de arquivos estendido, exemplificando o tipo do sistema de arquivos. A diferena entre um disco ou partio e um sistema de arquivos bastante significativa. Poucos programas (inclusive os programas que criam sistemas de arquivos) operam diretamente em setores no inicializados de um disco ou partio, e caso exista um sistema de arquivos
processo divide os discos em trilhas (uma espcie de caminho circular) e setores (subdivises de cada trilha, com geralmente 512 bytes). Um conjunto de trilhas recebe o nome de cilindro. A formatao fsica j vem de fbrica e pode ser alterada se o usurio quiser dividir o disco em parties. Depois se deve fazer uma formatao lgica, que nada mais do que instalar o sistema de arquivos no dispositivo de armazenamento. O sistema de arquivos FAT no trabalha diretamente com cada setor, mas sim com um grupo de setores. Esse grupo chamado de cluster (ou unidade de alocao). Se por exemplo, um disco com setor de 512 bytes, tiver 5 KB de tamanho, ele ter 10 setores e 5 clusters, se cada cluster ocupar dois setores. Sendo assim, quando o FAT precisar acessar um determinado setor, primeiro ele descobre em qual cluster ele se encontra. vlido citar que tanto o FAT quanto o FAT32 trabalham de acordo com este princpio.
tamanho dos clusters no sistema FAT tambm uma potncia de 2. O limite mximo de tamanho para uma partio em FAT16 de 2 GB (correspondente a 2 elevado a 16). J no caso do sistema de arquivos FAT32 (seu nome se deve ao mesmo motivo que no FAT32), o tamanho dos clusters determinado atravs da relao entre os comandos FDISK e FORMAT, apesar de que possvel determinar o tamanho do cluster do FAT32 tambm por programas de terceiros, com o Partition Magic (no possvel ter clusters de diferentes tamanhos). O tamanho mximo da partio em FAT32 de 2 TB. Mas se voc fizer a contas notar que 2 elevado a 32 equivalente a 128 TB. Ento porque o FAT32 usa somente 2 TB? Pode parecer confuso, mas o nmero mximo de clusters no caso do FAT32 no de 2 elevado a 32. Apesar de seu endereamento ser de 32 bits, na verdade so usados apenas 28 bits. Com isso, a quantidade mxima de clusters seria 2 elevado a 28, que corresponde a 8 TB. Ento, qual a razo do FAT32 ter tamanho mximo de espao de 2 TB? Segundo a Microsoft, o nmero mximo de setores (setores, no clusters!) que um disco pode ter de 2 elevado a 32. Como cada setor tem 512 bytes, o tamanho mximo de um disco no FAT32 acaba sendo de 2 TB. As diferenas entre FAT (ou FAT16) e FAT32 no param por a. O FAT32 tambm mais confivel, alm disso, este sistema tambm consegue posicionar o diretrio principal em qualquer lugar do disco. Fora o fato de que no sistema FAT, havia uma limitao no nmero de entradas que podiam ser alocadas no diretrio principal (512 arquivos e/ou pastas). No h essa limitao no FAT32. Algo curioso de ser citado, que o FAT32 pode mudar o tamanho da partio sem perder dados. Apesar desta capacidade, a Microsoft, por alguma razo misteriosa, no implementou esta caracterstica no FAT 32. Hoje em dia, programas particionadores, como o Partition Magic ou ento particionadores de disco de distribuies Linux, conseguem redimensionar uma partio FAT32 inserido este poder ao sistema de arquivos.
da trilha definida pelo cilindro e cabea anteriores. Para contornar isso, foi criado o mtodo LBA (Logical Block Addressing) onde cada setor do disco endereado atravs de um nmero nico fornecido pelo BIOS. Com o LBA possvel trabalhar com discos de dezenas de GB. O Windows consegue trabalhar com discos reconhecidos por LBA. No entanto, pode haver problemas quando o HD (ou a partio) possui mais de 1024 cilindros. Para contornar isso, foi criado o sistema FAT32X, onde a tabela de alocao de arquivos deslocada para o fim do disco. Essa tcnica evita o problema porque com mais de 1024 cilindros, a FAT no consegue armazenar todas as informaes sobre o disco. Jogando-a para o final do disco, a limitao burlada, j que a mantendo no incio do disco, por uma srie de razes, no possvel aumentar o tamanho da tabela.
foram herdados do sistema de arquivos HPFS (High Performance File System). Um sistema operacional muito conhecido nesta poca era o OS/2, um projeto realizado em conjunto entre a Microsoft e a IBM. Ambas as empresas estavam tentando criar um sistema operacional de grande sucesso, cujo apelo principal seria a capacidade grfica (lembre-se que naquela poca, era muito maior o uso de sistemas operacionais baseados em linha de comando, como o DOS). O OS/2 de fato continha inovaes tecnolgicas, mas esbarrava nos quesitos suporte e marketing. Fora isso, a IBM e a Microsoft comearam a se desentender e a empresa de Bill Gates decidiu abandonar o projeto e se dedicar ao desenvolvimento do Windows NT. No entanto, a Microsoft acabou levando consigo muitos conceitos funcionais do sistema de arquivos do OS/2, o HPFS. claro que tais conceitos foram essenciais para a criao do NTFS, o que fez com que muitos pensassem que a Microsoft passou um golpe na IBM. No entanto, este artigo no visa discutir isso.
Com o lanamento do Windows NT 4, o NTFS ganhou a verso 1.1 (ou verso 4). Esta verso tambm foi usada no Windows NT 3.51. O sucesso do Windows NT foi to grande que sua verso do NTFS virou referncia em sistemas de arquivos. A Microsoft no ficou parada e lanou a verso conhecida como NTFS 5.0 com o lanamento do Windows 2000, substituto do Windows NT. Apesar da nova verso, o NTFS 4 foi to difundido que seu suporte a outro sistemas operacionais no acabar to cedo. Esta nova verso do NTFS possui novas caractersticas importantes, alm daquelas herdadas da verso anterior. Essas mudanas foram essenciais para fazer do Windows 2000 um sistema que fosse realmente adequado para substituir o Windows NT. S para servir de exemplo, o servio Active Directory um dos chamativos do Windows 2000 e foi implementado graas a alteraes no FTFS. Entre os novos recursos do NTFS 5 esto: Reparse Points, onde arquivos e pastas dentro do sistema de arquivos podem ter aes associadas a eles, de forma que operaes particulares a estes arquivos possam ser executadas; novas caractersticas de segurana, onde o mecanismo para gerenciamento da segurana e de usurios, principalmente em relao a acesso e arquivos foram melhorados; quotas de discos, onde o administrador do sistema pode determinar o espao em disco disponvel a um usurio ou a um grupo de usurios; dirios de alteraes, onde volumes podem ser ajustados para rastrear as operaes efetuadas nos arquivos e pastas; codificao, onde o sistema permite que arquivos sejam codificados/decodificados automaticamente; suporte a arquivos esparsos, onde possvel armazenar de forma eficiente arquivos esparsos (que so arquivos grandes mas que possuem algumas estruturas vazias, desperdiando espao em disco). Com o lanamento do Windows XP, Windows 2003 Server e futuras verses, o NFTS vai ganhando melhoramentos e novas caractersticas, mas certamente a verso 4 ainda ser uma referncia. Isso deixa claro que o NFTS no deixar de ser usado to cedo pela Microsoft.
dados por base em setor permite manter os dados prximos, ou seja, no espalhados pelo disco. At o gerenciamento de grandes quantidades de dados beneficiado por esta caracterstica, j que como acontecia com o FAT, trabalhar com clusters por setor, fazia do sistema de arquivos dependente de um nmero pr-determinado de setores.
/etc/termcap O arquivo de configurao de terminal. Descreve as seqncias de escape para os diversos tipos de terminais. Os programas ao invs de escreverem diretamente uma seqncia que funcione em determinado tipo de terminal devem buscar a seqncia correta no /etc/termcap. Desta maneira os programas funcionam na maioria dos terminais. /etc/printcap Similar ao /etc/termcap, mas direcionado impressora e com sintaxe diferente. /etc/profile, /etc/bashrc Arquivos executados pelo Bourne Shell e Bash, no momento do login do usurio. Estes arquivos permitem ao administrador manipular o ambiente de trabalho de todos os usurios do sistema. Veja as pginas de manual dos interpretadores de comandos para detalhes especficos. /etc/securetty Identifica terminais seguros, ou seja, aquele nos quais permitido que o root acesse o sistema. Normalmente somente quando os consoles virtuais so listados, tornando muito mais difcil obter os privilgios de superusurio do sistema atravs da rede ou de uma conexo via modem. /etc/shells/ Lista as shells vlidas. O comando chsh permite que os usurios mudem sua shell de login, porm, somente para aquelas listadas neste arquivo. O servidor de transferncia de arquivos, ftpd, checar se a shell do usurio est listada no /etc/shells e no aceitar acessos, a menos que ela esteja presente neste arquivo.
foram integrados ao restante do sistema. H uma rvore de diretrios sob /usr/X11R6 similar ao /usr. /usr/X386 Similar ao /usr/X11R6, mas para o X11 Release 5. /usr/bin Praticamente todos os comandos de usurios. Alguns outros podem ser encontrados em /bin ou /usr/local/bin. /usr/sbin Comandos de administrao do sistema que no necessitem estar no sistema de arquivos raiz, como servidores. /usr/man, /usr/info, /usr/doc Pgina de manual, documentos de GUN/Info e diversos outros documentos, respectivamente. /usr/include Arquivos header para a linguagem de programao C. Este diretrio sob o /usr/lib, porm por tradio tem sido mantido neste local. /usr/lib Arquivos estticos de dados para programas e subsistemas, incluindo alguns arquivos de configurao globais. O lib vem de library (biblioteca); originalmente as bibliotecas de programao eram armazenadas neste subdiretrio. /usr/local O local para programas instalados localmente e outros arquivos. /usr/share/magic O arquivo de configurao para o comando file. Contm as descries de vrios formatos de arquivos nas quais o file pode descobrir o tipo do arquivo. Veja as pginas de manual do magic e do file para maiores informaes.
/var/log Arquivos de histricos de vrios programas, especialmente o login (/var/log/wtmp, o qual registra todas as entradas e sadas do sistema) e o syslog (/var/log/messages, o qual contm as mensagens do kernel e programas do sistema). Os arquivos no /var/log podem crescer indefinidamente com frequncia e podem requerer limpezas peridicas. /var/run Arquivos que contm informaes sobre o sistema e que so vlidas at a prxima inicializao. Por exemplo, o /var/rum/utmp contm informaes sobre os usurios atualmente conectados. /var/tmp Diretrios para mail, news, filas de impresso e outros trabalhos em fila. Cada fila tem o seu prprio subdiretrio sob o /var/spool, por ex. as mensagens de correio eletrnico esto armazenadas em /var/spool/mail. /var/tmp Arquivos temporrios que sejam muito grandes ou que necessitem existir por um perodo maior que o definido para o /tmp. Note que o administrador do sistema pode no permitir arquivos muito antigos tambm no /var/tmp.
/proc/loadavg A ``carga mdia'' do sistema, contendo trs indicadores de quanto trabalho o sistema est executando no momento. /proc/meminfo Informaes sobre o uso de memria, tanto fsica como de swap. /proc/modules Descreve quais mdulos esto corregados no momento. /proc/net Informaes sobre a situao dos protocolos de rede. /proc/self Um link simblico para o diretrio dos processos do programa que est olhando para o /proc no momento. Quando dois processos acessam o /proc, estes recebem diferentes links. Isto feito para facilitar a vida dos programas quando o seu diretrio de processos. /proc/stat Diversas estatsticas sobre o sistema, como o nmero de paginaes desde seu incio, E/S, processos executados, etc... /proc/uptime O tempo que o sistema est ativo. /proc/version Verso do kernel do sistema. Enquanto os esses arquivos so de fcil leitura, por estarem em formato texto, no quer dizer que eles sejam facilmente lidos. H muitos comandos que fazem mais que somente ler os arquivos acima e formatar o seu contedo para um melhor entendimento. Por exemplo, o programa free l o contedo do /proc/meminfo e converte as informaes dadas em bytes, para kilobytes, com algumas pequenas informaes adicionais.
arquivos e diretrios, que podem conter outros diretrios ou arquivos. Os arquivos/diretrios (sistemas baseados em Unix tratam os diretrios como arquivos especiais) em um sistema de arquivos para Linux so disponibilizados (ou montados) para manipulao atravs do comando mount geralmente acionado no processo de startup (inicializao), que ocorre quando o computador ligado e comea-se a carregar o sistema operacional. O Linux consegue trabalhar com vrios sistemas de arquivos num mesmo disco (situao comum usurios que possuem Windows e Linux em suas mquinas, por exemplo) e para enxerg-los, armazena a lista de sistemas de arquivos disponveis no arquivo /etc/fstab (repare que /etc/ indica um caminho de diretrio). No entanto, h uma lista de sistemas de arquivos que esto efetivamente em uso, disponvel no arquivo /etc/mtab, tambm conhecido como abela mount. Esta lista atualizada no processo de startup, para indicar ao sistema operacional quais sistemas de arquivos ele poder acessar. Para cada sistema de arquivos montado no startup, um bit no cabealho 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 alocao e organizao de arquivos/diretrios podem sofrer mudanas (atualizaes). Quando o usurio decide desligar o computador e usa comandos para encerrar o Linux, os sistemas de arquivos so desmontados, fazendo com que o bit citado acima seja modificado para indicar que o sistema de arquivos est consistente, ou seja, no pode mais sofrer mudanas.
O fsck consegue prover resultados satisfatrios, mas a correo de erros pode levar muito tempo, algo inaceitvel em aplicaes crticas. Alm disso, se o desligamento incorreto do computador ocorreu quando dados estavam sendo gravados no disco, o fsck no conseguir completar esses processos, ocasionando a perda das informaes que estavam sendo gravadas. Diante desses problemas, foi apresentada uma soluo vivel: a utilizao de sistemas de arquivos com a tecnologia Journaling;, que possuem a capacidade de acompanhar as mudanas que sero feitas no sistema de arquivos (por exemplo, gravaes/atualizaes de dados) antes que realmente sejam feitas. Essas informaes que o Journaling captura so ento armazenadas em uma parte separada do sistema de arquivos, denominada Journal (mas tambm conhecida por registros de log). Quando as informaes so armazenadas no Journal, o sistema de arquivos aplica as mudanas registradas nele e ento, remove as informaes do Journal. Agora, entenda porque o Journaling uma soluo eficiente para os problemas de erro. Os registros de log so escritos antes que as mudanas efetivamente ocorram no sistema de arquivos e esses registros somente so eliminados quando as mudanas so feitas. Assim, se o computador indevidamente desligado, o processo de montagem no prximo startup verificar se h mudanas gravadas no Journal marcadas como no feitas. Se houver, tais mudanas so ento aplicadas ao sistema de arquivos. Isso faz com que os riscos de perda de dados sejam reduzidos drasticamente.
7. Journaling
com esse kernel ou superior, tem suporte padro para ext3. No ext3, o cdigo de Journaling usa uma camada chamada Journaling Block Device (JBD). A JBD foi criada com o propsito de implementar Journal em qualquer tipo de dispositivo com base em blocos de dados. Por exemplo, o cdigo ext3 informa e pede autorizao JDB para efetuar as mudanas, antes de modificar/adicionar qualquer dado no disco. Sendo assim, o JDB que verdadeiramente gerencia o Journal. O fato mais interessante disso que, a JDB funciona como uma entidade independente, permitindo que no s o ext3 a use, mas tambm outros sistemas de arquivos. A JDB utiliza um mtodo diferente de outros Journalings para recuperao de informaes. Ao invs de armazenar as informaes em bytes que depois devem ser implementados, a JDB grava os prprios blocos modificados do sistema de arquivos. Assim, o ext3 tambm armazena rplicas completas dos blocos modificados em memria para rastrear as operaes que ficaram pendentes. A desvantagem desta forma de trabalho que o Journal acaba sendo maior. No entanto, o ext3 no precisa lidar com a complexidade dos Journalings que trabalham gravando bytes. O ext3 suporta trs diferentes modos de trabalho do Journaling. So eles: Journal: grava todas as mudanas em sistema de arquivos. o mais lento dos trs modos, mas o que possui maior capacidade de evitar perda de dados; Ordered: grava somente mudanas em arquivos metadata (arquivos que guardam informaes sobre outros arquivos), mas guardas as atualizaes no arquivo de dados antes de fazer as mudanas associadas ao sistema de arquivos. Este Journaling o padro nos sistemas de arquivos ext3; Writeback: tambm s grava mudanas para o sistema de arquivo em metadata, mas utiliza o processo de escrita do sistema de arquivos em uso para gravao. o mais rpido Journaling ext3, mas o menos confivel. O modo Ordered o padro no ext3, mas possvel especificar qual o modo que voc deseja usar, atravs da atualizao do arquivo fstab. Por exemplo, pode ser que a linha /dev/hda1/opt tenha sua opo data com o valor ordered. Voc pode mudar este valor para writeback ou journal.
http://www.li.facens.br/gas/node42.html [3] Prazer, S. S., Sistemas de arquivos em Linux, Universidade de So Paulo, 2000 Disponvel WWW em: http://latt.if.usp.br/fma215/galeria/simone/node1.html Sites visitados: http://www.infowester.com/linext3.htm http://www.infowester.com/ntfs.htm http://www.infowester.com/fat.htm
9. Referncias
[1] Silberschatz, A., Galvin, P., Gagne, G., Sistemas Operacionais, Editora Campus, 2001 [2] Wirzenius, L., Guia do Administrador de Sistemas Linux, Editora Conectiva Informtica , 1999 Disponvel WWW em: