• Nenhum resultado encontrado

3Sistema de ficheiros INTRODUÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "3Sistema de ficheiros INTRODUÇÃO"

Copied!
10
0
0

Texto

(1)

© F C A – E d it o ra d e I n fo rm á ti c a 3

Sistema de ficheiros

1

3

3

3.1. INTRODUÇÃO

O sistema de ficheiros é uma parte fundamental do sistema operativo

Linux. A configuração e a manutenção do mesmo é uma tarefa que muitas

vezes não é fácil e a qual fica sempre ao cuidado do administrador do sistema.

Um sistema de ficheiros (filesystem) é o método e a estrutura de dados que um sistema operativo utiliza para administrar ficheiros num disco ou numa partição, ou seja, a forma pela qual os ficheiros estão organizados num disco.

A expressão também é utilizada para se referenciar a uma partição ou disco que seja usado para armazenar os ficheiros ou outros tipos de sistemas de ficheiros.

Alguns utilizadores podem afirmar que há dois sistemas de ficheiros, significando que têm duas partições nas quais armazenam ficheiros. A diferença entre um disco ou partição e um sistema de ficheiros é bastante significativa.

Poucos programas (inclusive os programas que criam sistemas de ficheiros) operam directamente em sectores não inicializados de um disco ou partição e, caso exista um sistema de ficheiros, ele será destruído ou danificado seriamente.

Muitos programas operam num sistema de ficheiros e não funcionam numa partição se esta não contiver um (ou que contenha um do tipo errado).

Antes de uma partição ou disco ser usado como um sistema de ficheiros, necessita de ser inicializado e a estrutura básica de dados necessita de ser gravada no disco. A este processo é dado o nome de making a file system.

(2)

Linux

Muitos sistemas de ficheiros UNIX têm uma estrutura geral similar, apesar dos detalhes exactos variarem um pouco.

Os conceitos básicos de superblock, inode, data block, directory block e

indirection block são similares.

O superblock contém as informações sobre o sistema de ficheiros como um todo, como seja o seu tamanho (a informação exacta depende do sistema de ficheiros).

Um inode contém as informações sobre um determinado ficheiro, excepto o seu nome, o qual está armazenado no directório, junto com o número do inode. Uma entrada de directório é formada pelo nome e pelo número do inode que representa o ficheiro. O inode contém o número de diversos blocos de dados usados para armazenar as informações do ficheiro. Há espaço somente para uns poucos números de blocos de dados no inode, e caso um número maior seja necessário, mais espaço para ponteiros será libertado dinamicamente.

Esta alocação dinâmica é composta pelos indirection block que, como o nome indica, contêm endereços para outros blocos.

Os sistemas de ficheiros UNIX normalmente permitem a criação de espaços vazios num ficheiro (execute o comando lseek para mais informações), o que significa que o sistema de ficheiros simplesmente reserva um espaço de zero bytes para uma determinada parte do ficheiro, mas nenhum sector do disco é reservado, ou seja, o ficheiro vai usar um pouco menos de espaço em disco.

Isso ocorre frequentemente para pequenos binários, bibliotecas compartilhadas, algumas bases de dados e outros casos especiais.

Os espaços são implementados através do armazenamento de valores especiais de endereços de data block no indirection block ou no inode. Este endereço especial significa que não há blocos de dados realmente reservados para aquela parte do ficheiro, ou seja, há um "buraco".

Os espaços vazios são razoavelmente úteis.

Uma medição num nosso sistema mostrou uma economia de pelo menos 4 MB de espaço em disco, de um total de 200 MB utilizado com o sistema (2%).

(3)

© F C A – E d it o ra d e I n fo rm á ti c a

3.2. CLASSIFICAÇÃO DOS SISTEMAS DE FICHEIROS

O Linux suporta diversos tipos de sistemas de ficheiros. Entre esses podemos salientar os seguintes:

minix – o mais antigo e presumivelmente o mais credível, mas

bastante limitado em facilidades (máximo de 30 caracteres para nomes de ficheiros, etc.) e restrições de armazenamento (no máximo 64 MB por sistema de ficheiros).

xia – uma versão modificada do sistema de ficheiros minix, o qual

aumenta os limites dos nomes dos ficheiros e do sistema de ficheiros, mas não introduz novas facilidades. Não é muito popular, mas comenta-se que funciona muito bem.

ext2 e ext3 – os mais poderosos e populares sistemas de ficheiros

nativos do Linux. Criados para serem facilmente compatíveis com os avanços das novas versões, sem ser necessário refazer os sistemas de ficheiros já existentes.

ext – uma versão antiga do ext2, a qual não é mais compatível com

as versões actuais. É raro vê-la instalada em sistemas novos e mesmo os mais antigos têm sido convertidos para ext2.

Adicionalmente, há o suporte a diversos sistemas de ficheiros de outros sistemas operativos, para simplificar a troca de informações com esses sistemas operativos.

Estes sistemas de ficheiros funcionam como se fossem nativos, excepto pela perda de algumas facilidades presentes no UNIX, ou apresentam algumas particularidades:

msdos – compatibilidade com o MS-DOS (OS/2 e Windows NT)

através de sistemas de ficheiros FAT.

umsdos – sistemas de ficheiros msdos estendidos para suportar

nomes longos, donos, permissões, ligações e ficheiros de dispositivos do Linux. Isso permite que um sistema de ficheiros

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 ficheiros padrão do CD-ROM. A extensão Rock Ridge permite a utilização de nomes longos, sendo suportada

(4)

Linux

nfs – sistemas de ficheiros de redes que permitem compartilhar o

acesso fácil aos ficheiros entre os diversos computadores da rede.

hpfs – o sistema de ficheiros do OS/2.

sysv – sistema de ficheiros do System V/386, Coherent e Xenix.

No caso de compatibilidade ou outras razões tornarem um dos sistemas de ficheiros não nativos necessários, então este deve ser utilizado. Caso a opção seja livre, então provavelmente a decisão mais acertada será usar o ext3, uma vez que ele traz diversas facilidades sem sofrer perda de performance. Há ainda o sistema de ficheiros proc, normalmente acessível através do directório /proc, o qual não é um sistema de ficheiros real, apesar de, à primeira vista, parecer.

O sistema de ficheiros proc permite o acesso mais simples a determinadas estruturas do kernel como, por exemplo, a lista de processos.

Isso faz com que a estrutura de dados seja parecida com um sistema de ficheiros que pode ser manipulado com as ferramentas habituais. Por exemplo para obter uma lista de todos os processos pode utilizar o comando:

$ ls -l /proc total 0

dr-xr-xr-x 4 root root 0 Jan 31 20:37 1 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95 dr-xr-xr-x 4 root users 0 Jan 31 20:37 98 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99 -r--r--r-- 1 root root 0 Jan 31 20:37 devices -r--r--r-- 1 root root 0 Jan 31 20:37 dma

-r--r--r-- 1 root root 0 Jan 31 20:37 filesystems -r--r--r-- 1 root root 0 Jan 31 20:37 interrupts -r--- 1 root root 8654848 Jan 31 20:37 kcore -r--r--r-- 1 root root 0 Jan 31 11:50 kmsg

-r--r--r-- 1 root root 0 Jan 31 20:37 ksyms -r--r--r-- 1 root root 0 Jan 31 11:51 loadavg -r--r--r-- 1 root root 0 Jan 31 20:37 meminfo -r--r--r-- 1 root root 0 Jan 31 20:37 modules dr-xr-xr-x 2 root root 0 Jan 31 20:37 net dr-xr-xr-x 4 root root 0 Jan 31 20:37 self



A opção do sistema de ficheiros a ser usado depende da situação. Geralmente o ext3 é a opção mais acertada.

(5)

© F C A – E d it o ra d e I n fo rm á ti c a

-r--r--r-- 1 root root 0 Jan 31 20:37 stat -r--r--r-- 1 root root 0 Jan 31 20:37 uptime -r--r--r-- 1 root root 0 Jan 31 20:37 version $

Podem existir mais alguns, no entanto, o exemplo anterior foi resumido por questões didácticas.

Tenha presente o seguinte: apesar de ser chamado sistema de ficheiros, o proc não acede ao disco rígido. Ele existe exclusivamente no kernel do sistema. Sempre que alguém tenta aceder a alguma parte do sistema de ficheiros

proc, o kernel torna esta parte visível em qualquer lugar. Então, mesmo

que pareça existir um ficheiro com diversos megabytes denominado

/proc/kcore, ele não utiliza um único byte do disco rígido.

3.2.1. Sistemas de ficheiros a utilizar

Faz pouco sentido utilizar muitos sistemas de ficheiros diferentes. Actualmente o ext2 e ext3 são os mais populares, sendo muito provavelmente a decisão mais correcta.

Dependendo da necessidade de recursos adicionais na manutenção das estruturas: velocidade, segurança, estabilidade e compatibilidade e, por outras razões, pode ser desejável e necessário utilizar outro tipo de sistema de ficheiros. Esta necessidade deve ser analisada, sempre, caso a caso. 3.3. CRIAÇÃO DO SISTEMA DE FICHEIROS

Os sistemas de ficheiros são criados, ou melhor inicializados, através do comando mkfs.

Actualmente existe um comando específico para cada tipo de sistema de ficheiros.

O mkfs é simplesmente uma interface que executa o programa adequado ao tipo desejado. O tipo desejado pode ser seleccionado através da opção

-t fstype.

Os programas accionados pelo mkfs podem ter uma interface de linha de comando ligeiramente diferente.

As opções comuns e mais importantes são resumidas a seguir (veja a página de manual on-line para mais informações):

(6)

Linux

-c – pesquisa por blocos defeituosos e inicia a lista de badblocks. -l filename – lê a lista de badblocks a partir do ficheiro filename.

Para criar um sistema de ficheiros do tipo ext2 numa disquete, basta executar o comando:

$ fdformat -n /dev/fd0H1440

Double-sided, 80 tracks, 18 sec/tracks. Total Capacity 1440 Kb.

Formatting ... done

$ badblocks /dev/fd0H1440 1440 > blocos-def $ mkfs -t ext2 -l blocos-def /dev/fd0H1440 mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 360 inodes, 1440 blocks

72 blocks (5.00%) reserved for the super user First data block=1

Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group

8192 blocks per group, 8192 fragments per group 360 inodes per group

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

$

Inicialmente a disquete foi formatada (a opção -n, inibe a verificação de blocos defeituosos).

Após ter sido executado o comando badblocks, este faz a verificação e redirecciona as mensagens de saída para o ficheiro badblocks e, por fim, o sistema de ficheiros é criado, com a lista de badblocks inicializada com tudo aquilo que o comando badblocks tenha encontrado.

A opção -c pode ser utilizada em conjunto com o comando mkfs, em alternativa ao uso do comando badblocks e de um ficheiro em separado, conforme o exemplo a seguir:

$ mkfs -t ext2 -c /dev/fd0H1440

mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10 360 inodes, 1440 blocks

72 blocks (5.00%) reserved for the super user First data block=1

Block size=1024 (log=0) Fragment size=1024 (log=0) 1 block group

(7)

© F C A – E d it o ra d e I n fo rm á ti c a

8192 blocks per group, 8192 fragments per group 360 inodes per group

Checking for bad blocks (read-only test): done Writing inode tables: done

Writing superblocks and filesystem accounting information: done

$

A opção -c é mais conveniente do que o uso do comando badblocks em separado, no entanto, este último é necessário para uma verificação mais apurada, após a criação do sistema de ficheiros.

O processo de preparação dos sistemas de ficheiros em discos rígidos ou partições é o mesmo para as disquetes, excepto pelo facto da formatação não ser necessária.

3.4. MONTAR E DESMONTAR UM SISTEMA DE FICHEIROS

A partir da versão 10 da Caixa Mágica (ou SuSE 9.2) a montagem de periféricos passa a ser feita automaticamente pelo sistema operativo Linux. Isto é, basta-nos inserir o mesmo, como uma disquete, e o sistema operativo lista automaticamente o seu conteúdo no Explorador de ficheiros. Nas versões anteriores e ainda em algumas distribuições, antes de um sistema de ficheiros poder ser utilizado, ele necessita ser montado (mounted). O sistema operativo executa diversas verificações para estar seguro de que tudo está a funcionar correctamente. Uma vez que todos os ficheiros em UNIX estão numa árvore de directórios, a operação de montagem fará com que o novo sistema de ficheiros pareça um subdirectório existente em algum sistema de ficheiros já montado. Por exemplo, a figura abaixo mostra três sistemas de ficheiros diferentes, cada qual com o seu próprio directório raiz. Quando os dois últimos são montados sob /home e /usr, respectivamente, no primeiro sistema de ficheiros, temos uma única árvore de directórios e as suas entradas, conforme a figura da página seguinte.

A B C bin dev home etc lib usr ftp aclm prrt bin magic amanda

(8)

Linux

As montagens podem ser executadas, por exemplo, da seguinte forma:

$ mount /dev/hda2 /home $ mount /dev/hda3 /usr $

O comando mount tem dois argumentos. O primeiro é o ficheiro de dispositivo correspondente ao disco ou partição que contém o sistema de ficheiros. O segundo é o directório sob o qual ele vai ser montado. Após esse comando, o conteúdo dos dois sistemas de ficheiros vai parecer simplesmente dois directórios: /home e /usr respectivamente. Pode-se então dizer que /dev/hda2 está montado em /home e similarmente

/dev/hda3 está montado em /usr.

Para examinar estes sistemas de ficheiros pode-se aceder a estes directórios exactamente da mesma forma que a qualquer outro.

É importante realçar a diferença entre os ficheiros /dev/hda2 e o directório montado /home.

Enquanto o primeiro dá acesso aos dados brutos do disco, o directório permite o acesso aos ficheiros contidos no mesmo disco. Ao directório montado é dado o nome de ponto de montagem (mount point).

O Linux suporta diversos tipos de sistemas de ficheiros.

A montagem tenta verificar qual o tipo de sistema de ficheiros que está para ser montado. Pode-se utilizar opcionalmente a opção -t fstype para especificar o tipo directamente na montagem. Isso pode ser útil quando a verificação automática não funcione de forma correcta.

Por exemplo, para montar uma disquete MS-DOS, pode-se usar o seguinte comando: A dev bin lib etc home usr ftp pub incoming bin magic amanda

(9)

© F C A – E d it o ra d e I n fo rm á ti c a

$ mount -t msdos /dev/fd0 /floppy $

O directório montado não necessita de estar vazio, na verdade ele simplesmente deve existir.

Alguns ficheiros, no entanto, podem estar inacessíveis enquanto o sistema de ficheiros é montado (qualquer ficheiro que já tenha sido aberto estará disponível). Ficheiros que contêm as ligações directas com outros directórios também podem ser acedidos através daqueles nomes. Nenhum dano será causado ao sistema de ficheiros e isso pode, por vezes, ser bastante útil. Por exemplo, caso se deseje ter /tmp e /var/tmp como sinónimos, faz-se uma ligação simbólica de /var/tmp para /tmp. Quando o sistema é inicializado, antes que o sistema de ficheiros /var seja montado, o directório /var/tmp que se encontra residente no directório raiz é usado no seu lugar. Quando /var é montado, ele vai fazer com que o directório

/var/tmp na raiz esteja indisponível. Caso este directório não existisse na

raiz, seria impossível usar os ficheiros temporários antes de montar /var. Caso não se pretenda gravar absolutamente nada no sistema de ficheiros, pode-se usar o parâmetro -r para montar o sistema de ficheiros permitindo só operações de leitura (readonly mount). Isso faz com que o

kernel do sistema bloqueie qualquer tentativa de gravação naquele

sistema de ficheiros. Montagens de leitura só são necessárias para suportes não graváveis como, por exemplo, CD-ROM.

O leitor mais atento está já a perceber um pequeno problema logístico. Como pode o primeiro sistema de ficheiros chamado raiz (root

filesystem), por conter o directório raiz (/), ser montado visto que este não

pode ser montado a partir de outros sistemas de ficheiros?

Isso é feito de forma automática. O sistema de ficheiros raiz é montado automaticamente durante a iniciação do sistema operativo e pode estar certo de que ele estará sempre disponível, pois de outra forma o sistema não poderá ser inicializado. O nome do sistema de ficheiros que é montado como / é compilado juntamente com o kernel do sistema ou configurado no LILO ou através do comando rdev.

O sistema de ficheiros raiz normalmente é montado com permissões só de leitura.

Os programas de arranque (startup scripts) iniciais executarão o comando fsck para verificar a sua integridade e se, por ventura, há algum

(10)

Linux

problema. Caso tudo corra bem, ele será montado novamente, agora com as permissões de gravação. O programa fsck não deve ser executado em sistemas de ficheiros montados, pois quaisquer alterações no sistema durante a sua execução podem causar problemas. Uma vez que o sistema de ficheiros raiz é montado com permissões somente de leitura, o fsck pode ser executado e regularizar qualquer anormalidade encontrada, uma vez que após a remontagem com permissões de gravação, os eventuais ajustes serão efectuados de forma automática.

Em muitos sistemas, há outros sistemas de ficheiros que devem ser montados automaticamente durante a sua iniciação.

Estes sistemas de ficheiros devem ser especificados no ficheiro /etc/fstab (execute o comando man do fstab para mais informações). Os detalhes exactos de como cada sistema de ficheiros será montado dependem de muitos factores e pode ser efectuado de acordo com a necessidade de cada administrador. Após o capítulo de iniciação do sistema, pode-se obter mais informações sobre o tema.

Quando um sistema de ficheiros não necessita mais de estar montado, pode ser desmontado através do comando umount. Este comando necessita de um só argumento: ou o ficheiro de dispositivo ou o ponto

de montagem.

Por exemplo, para desmontar os directórios do exemplo anterior, deve-se executar o seguinte comando:

$ umount /dev/hda2 $ umount /usr $

Para mais informações sobre este comando, sugerimos a leitura da página de manual on-line.

Não se deve simplesmente retirar a disquete da unidade, na medida

em que os dados podem estar em memória e ainda não terem sido gravados. Isso só ocorre após a execução do comando umount. Retirá-lo antes pode danificar o conteúdo da disquete. Caso se esteja só a ler a disquete isso pode não ser tão crítico, mas caso se esteja a gravar algum conteúdo o resultado pode ser catastrófico.



É fundamental que uma disquete seja sempre desmontada em versões antigas do Linux.

Referências

Documentos relacionados

ou do seu conteúdo; investigação de marcas de mordidas; comparação de trauma e lesões orais. k) Polícia científica: atua na investigação criminal. m) Psiquiatria Forense: É

2 Ainda utilizando a tabela Livro , crie uma consulta que devolva todas as colunas de todos os livros registrados cujos preços sejam superiores em relação aos livros mais baratos. 3

concentração MIFC Secar a temperatura ambiente Mergular as laminas em solução aquosa de safranina a 1% a aquecer no forno de microondas em potencia alta por 30” Lavar com água

A proposta curricular do Curso em Gestão dos Recursos Naturais e Agroextrativismo na Amazônia Paraense foi baseada na consulta realizada para a construção de

Ampliação da área de perfis: o usuário pode expandir o painel com os menus disponíveis sempre que clicar no botão.. Figura 5 - Apresentação – Ampliação da Área

Faulhaber, L.M.Rosenfeld, C.C.C.Guerra - Hospital Albert Einstein / Centro de Hematologia de São Paulo, São Paulo, Brazil – Low platelet counts: diagnosis using flow cytometry

BIO-FLASH Chagas é um ensaio imunológico quimiluminescente de dois passos, totalmente automatizado, para a determinação qualitativa de anticorpos IgG e IgM contra

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-