Linux Essencial/Lição Dispositivos de armazenamento e sistemas de arquivos

  • Objetivo(s): Oferecer informações sobre como é feito o controle de dispositivos de sistemas de arquivos de sistema.
  • Direitos autorais e licença: Veja notas de direitos autorais e licença no final da lição.

O conhecimento dos dispositivos de armazenamento e sistemas é fundamental para o usuário que deseja bom desempenho e melhor funcionamento do sistema. O gerenciamento dos dispositivos está diretamente relacionado ao formato de armazenamento dos dados dos usuários, tanto na sua forma física quanto na forma lógica.

Entende-se como armazenamento de dados qualquer informação que deve ser guardada para uso futuro. Quando o sistema é desativado qualquer informação armazenada dentro da memória RAM (ou outros meios de armazenamento volátil) é perdida, mas se for necessário o seu uso posterior essas informações devem ser armazenadas dentro de dispositivos de armazenamento, como discos rígidos, disquetes, CD-ROM, pen-drives entre outros.

Além dos dispositivos o usuário deve atentar-se ao sistema de arquivos que está sendo utilizado. Por sistema de arquivos pode se entender o formato de como os dados serão guardados dentro dos dispositivos de armazenamento. Existem também arquivos especiais do sistema, conhecidos como arquivos de blocos. Esses arquivos são encontrados dentro do /dev/ e servem para fazer a comunicação do sistema com os dispositivos. Desta forma para se fazer uma referência a um dispositivo instalado no sistema, o usuário deverá fazer acesso ao arquivo de bloco correspondente. Como exemplo desses arquivos de blocos tem o ttyS0 que serve como primeira entrada serial do sistema (equivale a com1 do DOS, Windows, etc).

Partição

editar

Uma vez visto as ligações dos HD's, ou seja, uma visão externa da situação do hardware, é importante sabermos condicionar um HD às nossas necessidades, possibilitando assim a instalação correta do sistema operacional, tanto para aumentar o desempenho do sistema quanto para não perder informações de outros sistemas operacionais já instalados.

Aos locais dentro do HD para a instalação das informações pertinentes ao meu computador, é dado o nome de partição. Assim como o HD (externamente) possui um nome para identificá-lo (ex.: primário escravo), a partição também possui, e esse nome é utilizado tanto para a sua identificação, quanto para informar o tipo de armazenamento das informações.

As partições são identificadas como: Partição primária, Estendida e Partição lógica.

Partição primária

editar

As partições primárias são as principais para um disco rígido, pois elas serão aceitas diretamente. A principal ideia para o particionamento do HD é torná-lo capaz de armazenar diversos tipos de informações em diversos sistemas de arquivos, e assim, ao invés de se ter um HD para cada tipo de sistema de arquivos o computador irá utilizar apenas um único dispositivo.

A quantidade total de partições primárias são quatro, mas se o usuário desejar ter mais de uma ele deverá optar por expansores (ou extensores).

O GNU/Linux nomeia os seus HD's de forma única (como foi explanado anteriormente) e também o fará com cada partição, com o propósito de não sobrescrever ou perder uma determinada partição.

Os nomes são divididos de acordo com a sua posição no computador: primário principal (a), primário escravo (b), secundário principal (c) e secundário escravo (d); e de acordo com a partição que vai de um até quatro.

Estendida

editar

Quando um usuário deseja instalar mais de um sistema operacional, ele procura o particionamento para fazê-lo, mas pode cair no problema de não ter mais espaços primários (limitados em quatro) para a criação de novas partições, mesmo existindo espaço no disco. Isso é solucionado com a extensão, e com ela é possível pegar uma partição primária e criar dentro dela várias partições (dependendo do sistema operacional), no GNU/Linux podem ser criadas mais onze partições dentro da estendida.

A extensão não pode ser tratada como uma partição, ela estaria no caso "colocando" um outro HD "dentro" do HD existente, e por isso deverá ser contado como uma partição primária, exemplo: se já existem duas partições primárias ocupadas, a extensão pegará a próxima partição livre.

As partições que forem criadas dentro da extensão são chamadas de partições lógicas.

Partição lógica

editar

As partições lógicas estão embutidas dentro da extensão, e servem como novas partições, assim como as partições principais, porém não possuem o mesmo "poder" que as outras possuem.

Normalmente as partições lógicas são utilizadas para armazenar extensões de outros sistemas operacionais, que servem como área de armazenamento de segurança, os famososbackup.

Essas partições também servem para o armazenamento de outros sistemas operacionais, tais como a colocação de áreas pertinentes ao bom funcionamento do mesmo (essa parte será melhor esclarecida mais a frente).

Elas são no total onze áreas lógicas, mas alguns sistemas operacionais permitem a criação de mais áreas, pois as partições dependem tanto de hardware quanto de software para serem divididas.

Formatação dos dispositivos

editar

A formatação do dispositivo prepara-o para receber uma forma de armazenamento, independente do sistema. Ela pode ser entendida como a preparação do dispositivo para receber informações e saber como armazená-las e não necessariamente a remoção de todo o conteúdo como a maioria das pessoas imagina. Formatar significa dar forma a algo por isso não confunda formatação com a remoção de informação do disco. A formatação está ligada a forma que as novas informações serão colocadas no disco.

Para o sistema operacional Linux existem várias ferramentas para a edição e o gerenciamento de partições, como por exemplo: fdisk (recomendado), o cfdisk e o disk druid (utilizado normalmente na instalação do sistema). Uma partição é uma divisão de um disco rígido (SCSI ou ATA). Cada partição pode conter um sistema de arquivos diferente. Consequentemente, vários sistemas operacionais podem ser instalados na mesma unidade de disco. Isso faz com que haja a necessidade de se administrar estes sistemas.

Estudaremos a seguir o fdisk, que permite um maior gerenciamento sobre as partições (tanto para disco rígido quanto para disquete).

Ferramenta de geração de partições em um disco real. Portanto se for seguir os passos tome muito cuidado para não danificar o sistema operacional. É recomendado que siga o exemplo utilizando um disquete/pendrive, ou ao final do exemplo não salve as modificações, a não ser que você tenha total certeza do que esteja fazendo.

Antes da formatação de um disco de armazenamento é importante que ocorra a preparação do mesmo, que consiste na construção de partições . A construção pode ser editada diretamente na instalação do sistema operacional Linux, ou após o seu funcionamento. Para que não ocorra perda de dados é importante saber exatamente qual área do disco está sendo modificada.

Sintaxe:

fdisk [opções] dispositivo

No exemplo acima, dispositivo é o recurso desejado para a criação da nova partição ou partições, dependendo apenas da quantidade livre em disco ou futuras instalações. Opções:

-l lista as partições dentro de um dispositivo e retorna o prompt de comando;
-u entra na ferramenta fdisk apresentando os valores em setores;
-s apresenta o tamanho do dispositivo ou partição em blocos.

Se não for passada nenhuma opção a ferramenta irá apresentar os valores em cilindros (uma das maneiras de visualizar as informações sobre o dispositivo).

Caso seja passado somente o dispositivo, será apresentado um mini-shell onde os comandos a seguir podem ser utilizados:

Opção Descrição
m apresenta uma lista de opções como ajuda (menu)
d deleta uma partição do dispositivo indicado
l lista os tipos de partições existentes no mercado até sua data de atualização
n cria uma nova partição
p apresenta a tabela atual de partições, quando passado todo o dispositivo
q sai sem realizar as alterações feitas
t possibilita a troca da tecnologia da partição desejada
L opção esta que é dada junto com o "t" para a listagem das tecnologias suportadas pelo fdisk atual
v verifica a tabela de partições
w salva as modificações realizadas e sai
x para comandos mais avançados (não indicado para iniciantes)

Exemplo 1:

Para o exemplo será utilizado um disco rígido de 20GB, novo, e será construído da seguinte forma (caso deseje fazer um teste em um disquete basta modificar os valores apresentados adaptados para o tamanho do disquete):

  • Uma partição com o Sistema Operacional Microsoft Windows;
  • Uma partição com o /boot;
  • Uma partição estendida;
  • Uma partição com área de troca do Linux;
  • Uma partição com o Sistema Operacional Linux;
  • Espaço livre para futuras instalações.

Nota: O Linux tem suporte à memória virtual. Ou seja, o sistema consegue utilizar o disco como uma extensão da memória RAM. Essa parte do disco recebe o nome de área de troca ou área de swap.

A partição /boot será colocada separada do restante da partição do "/" como uma ilustração, podendo o /boot ficar tanto dentro da partição do "/". Qualquer outro diretório poderia ser colocado em uma partição separada.

Para os dispositivos IDE o sistema Linux nomeia da seguinte forma:

/dev/hd[a-h]

sendo que:

a para disco primário principal
b para disco primário escravo (slave)
c para disco secundário principal
d para disco secundário escravo

A ferramenta fdisk pode ser usada da seguinte maneira (qualquer que seja o dispositivo desejado nesse caso o /dev/hda):

# fdisk /dev/hda

The number of cylinders for this disk is set to 2482.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Comando (m para ajuda):

Nesse momento podem ser utilizadas as opções do fdisk apresentadas acima, ou digitar m para visualizar a ajuda.

Para visualizar as partições atuais do disco rígido basta utilizar a opção “p”:

Comando (m para ajuda): p
Disco /dev/hda: 255 cabeças, 63 setores, 2482 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot   Início   Fim   Blocos      Id   Sistema

A listagem acima possui a seguinte característica:

Disco Representa o dispositivo que está sendo manipulado.
Cabeças, Setores e Cilindros Representam as dimensões do dispositivo, no caso um disco rígido de 20GB.
Unidades Representa a área de bytes total do dispositivo.
Dispositivo Indica o disco rígido e o número da partição (por exemplo: /dev/hda1).
Boot Informa se a partição terá o boot por padrão ao iniciar o sistema.
Início Fim Informa o começo e o final em cilindros da partição.
Blocos Informa o tamanho real.
Id Apresenta a identificação do tipo do sistema a ser utilizado.
Sistema A tecnologia a ser utilizada dentro da partição (sistema de arquivos).

Como o disco é novo e não existe nenhuma partição criada ou sistema operacional instalado será necessário criar uma nova partição, a opção para a criação é "n".

Comando (m para ajuda): n
Comando - ação
e   estendida
p   partição primária (1-4)

Após ser passada a opção “n” para o fdisk é necessário informar o tipo da partição (p ou e). Se escolhido o valor p será necessário informar o valor da partição primária que varia de 1 a 4. Se for escolhido o valor e, apenas será necessário informar o tamanho da área de extensão.

Como o intuito é preparar o disco para receber a forma apresentada acima, primeiramente será criada a área para o Sistema Operacional Windows. Logo a opção deverá ser o valor "p".

p
Número da partição (1-4):1
Primeiro cilindro (1-2482, padrão 1): 
Usando valor padrão 1
Último cilindro ou +tamanho ou +tamanho M ou +tamanho K (1-2482, padrão 2482):

Após a escolha da criação da partição primária de valor 1, é preciso informar o tamanho da partição. Como é a primeira partição o valor inicial do cilindro é 1, por padrão, podendo ser escolhido o seu início em qualquer ponto entre os valores apresentados(no caso de 1 a 2482). Se for dado um "enter" para a seleção do primeiro cilindro, o valor padrão será selecionado.

Informando o primeiro cilindro será necessário informar o valor do último cilindro (da partição), podendo ser em cilindro ou com uma das opções:

+tamanho quantidade de cilindros
+tamanhoM para tamanho em MB
+tamanhoK para tamanho em KB

Se não for passado nenhum valor na forma descrita acima, e sim dado apenas um "enter" o fdisk interpretará que deverá ser tomado como valor o último cilindro informado como padrão (para o exemplo o valor 2482 - lembrando que o disco rígido é de 20GB).

Para as próximas partições basta seguir os passos acima, com uma diferença para a área estendida que será informado neste momento o valor para partições lógicas e não primárias, o valor a ser informado para a criação da estendida deverá ser um valor primário.

Comando (m para ajuda): n
Comando - ação
   e   estendida
   p   partição primária (1-4)
e
Número da partição (1-4): 3
Primeiro cilindro (642-2482, padrão 642):
Usando valor padrão 642
Último cilindro ou +tamanho ou +tamanho M ou +tamanho K (642-2482, padrão 2482):+5000M

Até o momento o disco está com o seguinte formato, para a visualização usar a opção "p":

Comando (m para ajuda): p
Disco /dev/hda: 255 cabeças, 63 setores, 2482 cilindros
unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot   Início   Fim   Blocos      Id   Sistema
/dev/hda1      1   638   5124703+   83   Linux
/dev/hda2      639   641   24097+      83   Linux
/dev/hda3      642   1279   5124735   5   Estendida

Os tamanhos são 5GB para o Sistema Operacional Linux, 24M para o /boot e 5GB para a área estendida. Todas as partições ao serem geradas, com exceção a partição estendida, possuem por padrão o sistema Linux.

Nesse momento será tratada a criação das partições dentro da estendida. Uma vez criada a estendida serão apresentadas novas opções de escolha:

Comando (m para ajuda): n
Comando - ação
   l   lógica (5 ou superior)
   p   partição primária (1-4)
l
Primeiro cilindro (642-1279, padrão 642):
Usando valor padrão 642
Último cilindro ou +tamanho ou +tamanho M ou +tamanho K (642-1279,    padrão 1279):+64M

Acima além de ser apresentado o novo formato para a criação, foi criado mais uma partição que servirá para a área de troca. A criação da partição para o uso do Linux será igual a criação da área de troca, sendo que poderá ser utilizada toda área dentro da estendida, portanto não haverá necessidade de passar valores além dos padrões.

Ao final, terá o formato seguinte:

Comando (m para ajuda): p
Disco /dev/hda: 255 cabeças, 63 setores, 2482 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot Início    Fim   Blocos      Id   Sistema
/dev/hda1             1    638   5124703+    83   Linux
/dev/hda2           639    641   24097+      83   Linux
/dev/hda3           642   1279   5124735      5   Estendida
/dev/hda5           642    650   72261       83   Linux
/dev/hda6           651   1279   5052411     83   Linux

As partições foram criadas corretamente, porém o tipo de sistema de arquivos de cada sistema operacional, bem como da área de troca, estão com a tecnologia Linux.

Para a troca do tipo de tecnologia é necessário saber o número designado para a partição, por exemplo, para a partição que pertence ao Windows é o 1 (/dev/hda1). A opção do menu para a seleção do tipo da área de troca é a letra t, e com a letra L (após o uso do t para o tipo de tabela) poderá ser selecionado o tipo da identificação da tabela.

Comando (m para ajuda): t
Número da partição (1-7): 1
Código hexadecimal (digite L para listar os códigos):c

A opção “c” em Código hexadecimal define o tipo da identificação que será dada à partição 1, como selecionado. Ao listarem os códigos, são encontrados vários valores dependendo apenas do tipo de identificação desejado.

O mesmo processo deverá ser utilizado para a área de troca, sendo que o seu valor deverá ser 82 (código hexadecimal) que representa a tecnologia Linux swap e código 83 para Linux.

Ao término deste processo a tabela de partições deverá estar com o seguinte formato:

Comando (m para ajuda): p
Disco /dev/hda: 255 cabeças, 63 setores, 2482 cilindros
Unidades = cilindros de 16065 * 512 bytes
Dispositivo Boot   Início   Fim      Blocos   Id   Sistema
/dev/hda1          1        638     5124703+   c   FAT32 Win95 (LBA)
/dev/hda2          639      641       24097+   83  Linux
/dev/hda3          642      1279     5124735   5   Estendida
/dev/hda5          642      650        72261   82  Linux swap
/dev/hda6          651      1279     5052411   83  Linux

No caso da instalação de um sistema operacional GNU/Linux poderíamos criar partições separadas para os diretórios /home, /opt, /tmp, /usr e /usr/local. Esse tipo de particionamento visa aumentar a segurança do sistema. Com os conhecimentos adquiridos do fdisk experimente criar em um pendrive as partições que simulam esse exemplo. Será obtido algo como (exemplo feito com um pendrive de 8GB):

#fdisk /dev/sdc

Comando (m para ajuda): p

Disco /dev/sdc: 7904 MB, 7904165888 bytes
255 heads, 63 sectors/track, 960 cylinders
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador do disco: 0xb7aba02a

Dispositivo Boot Início Fim Blocos Id    Sistema
/dev/sdc1               1                8         64228+  83  Linux
/dev/sdc2               9             492        3887730    83  Linux
/dev/sdc3            493             960        3759210    5  Estendida
/dev/sdc5            493             581       714861    83  Linux
/dev/sdc6            582             585        32098+   83  Linux
/dev/sdc7            586             725     1124518+   83  Linux
/dev/sdc8            726             960       1887606    83  Linux

Para maiores detalhes veja documentação sobre a ferramenta ou manuais (man fdisk).

Sistemas de arquivos

editar

Por sistema de arquivos deve ser entendido como a tecnologia envolvida pelo sistema operacional, que serve para indicar regras de armazenamento e busca em memória secundária. Cada dispositivo de armazenamento pode ter o seu sistema de arquivo indicado. Existem várias ferramentas que servem para a geração do sistema de arquivos. O comando principal é o mkfs, que o sistema de arquivos no formato especificado.

Existem vários tipos de sistemas de arquivos e conhecer os principais deles é de fundamental importância, pois assim será possível levar informações de um outro sistema operacional para o Linux.

A tecnologia envolvida no sistema operacional está ligada diretamente na forma com que os dados serão gravados nos dispositivos de armazenamento. Os tipos mais comuns de sistema de arquivos são o ext2, ext3 ou ext4 para o Linux e o fat16, fat32 ou NTFS para o Windows.

A diversidade de maneiras de executar-se uma tarefa é algo natural, resultado de diferentes idéias, necessidades e da evolução como um todo. Durante o desenvolvimento dos diversos sistemas operacionais, vários modelos de organização e armazenamento de dados foram criados. No mundo GNU/Linux, eles são conhecidos como Sistemas de Arquivos.

Uma aplicação, ao manipular arquivos em um sistema GNU/Linux, faz uso de uma interface única, chamada de Virtual Filesystem, ou VFS. Essa interface torna indiferente, para a aplicação, a maneira que o arquivo está realmente sendo armazenado. Essa versatilidade permite, entre outras coisas, a compatibilidade com sistemas de arquivos de outros sistemas operacionais mais populares (ou até mesmo os mais obscuros). Outra possibilidade é a utilização de sistemas de arquivos que mais se adequam a uma determinada tarefa.

Adaptar-se às necessidades dos usuários é também outro ponto forte do GNU/Linux.

Os sistemas operacionais, ao serem criados, possuem maneiras diferentes de controlar o armazenamento de seus dados em disco, variando entre os sistemas operacionais, afinal os sistemas são criados de formas diferentes, mas com a mesma função que é o gerenciamento do computador.

Como cada um dos sistemas operacionais possuem formas diferentes de armazenamento, eles ficam incompatíveis para a troca de informações. Portanto, para os sistemas existentes encontramos armazenamentos diferentes.

Essa é a segunda versão do sistema de arquivos que foi criada especificamente para o Linux, e que consolidou-se como estável e confiável ao longo dos últimos anos. Um fator interessante é sua resistência à fragmentação de arquivos, um processo que leva usuários de outros sistemas de arquivos a executarem tarefas de manutenção periodicamente. A falta de alguns recursos avançados nesse sistema de arquivos levou à criação de sua terceira revisão, o Ext3.

A tecnologia ext2 é a adotada pelo sistema operacional Linux, e consegue acessar arquivos de outros sistemas operacionais - acessar mas não executar -, e abri-los quando a extensão é compatível (.txt, por exemplo).

Recursos avançados como journaling foram incluídos nessa versão, uma necessidade em ambientes onde tempo fora do ar significa amargos prejuízos. Sistemas de arquivos tradicionais, sem journaling, são passíveis de corrupção quando desligados de maneira anormal, como por exemplo em situações como queda de energia. Isso porque, em busca de maior desempenho, operações nos sistemas de arquivos são agendadas primeiramente em memória, e quando surge tempo livre na CPU, essas operações são executadas no disco.

No exemplo de falha mencionado acima, o sistema é obrigado a varrer todo o sistema de arquivos, em busca de erros, tentando adivinhar como o sistema de arquivos deveria estar. Em discos de médio porte, como por exemplo de 80 GB, esse processo pode demorar algo entre 15 e 60 minutos, dependendo de fatores como velocidade do sistema e do disco. Ficar fora do ar por uma hora pode não ser aceitável em muitos cenários.

A tecnologia de journaling resolve esse problema gravando os agendamentos (registros de modificações a serem feitos no sistema de arquivos). Quando há tempo livre na CPU, o sistema de arquivos executa as operações em disco e consequentemente apaga os registros de agendamento.

O sistema de arquivos ext3 é similar ao sistema ext2, tendo como única diferença a tecnologia journaling. Essa tecnologia acrescida no ext3 faz com que qualquer operação que seja executada dentro no sistema seja armazenada em uma área conhecida como journal, permitindo a recuperação de informações ou parada de processos mais claros. No caso de um desligamento forçado, como o mencionado acima, o sistema teria apenas que ler o journal (agenda) e executar as operações que ficaram pendentes. Esse processo, em um disco de mesmo tamanho, levaria não mais que 1 ou 2 minutos. O maior benefício sobre o seu uso é a tolerância a falhas, tornando o Linux mais seguro para qualquer tipo de trabalho.

O Ext4 é um sistema de arquivos desenvolvido para ser o sucessor do Ext3 a partir de 2006 [ http://ext4.wiki.kernel.org/index.php/Main_Page]. As novas funcionalidades comparado com o Ext3 são:

  • O Ext3 conseguia fazer uma partição de, no máximo, 32 TB (terabytes) e manipular arquivos de até 2 TB de tamanho. O Ext4, no entanto, tem uma margem real bem maior que essa: 1EB (exabyte) para partições e 16TB por arquivo. Isso ainda não é importante para servidores simples ou desktops, mas com certeza vai se tornar útil para grandes servidores.
  • O Ext3 colocava um limite no número de subdiretórios por pastas de 32000 pastas. Não há limites para o Ext4.
  • Embora o Ext4 incorpore recursos que reduzam a fragmentação no sistema de arquivos (extensões para a alocação de blocos sequenciais), é impossível evitar uma determinada fragmentação quando um sistema de arquivos existe por muito tempo. Por esse motivo, existe uma ferramenta on-line que desfragmenta o sistema de arquivos e os arquivos individuais no intuito de aprimorar o desempenho.
  • fsck está mais rápido porque a nova estrutura de organização de blocos permite que partes não usadas do hd sejam puladas, o que economiza tempo numa eventual checagem.

ReiserFS

editar

Em sua versão estável, chamada de v3, esse sistema de arquivos inovador traz melhorias em diversos aspectos considerados como não solucionáveis pelos sistemas de arquivos tradicionais. Um exemplo é o desperdício de espaço em disco. Para se criar mil arquivos de 30 bytes e espera-se estar usando 30.000 bytes (ou 0.02MB) de espaço. Em sistemas de arquivos como o Ext2/3 cada arquivo, independente do tamanho irá gastar um valor inteiro de blocos (também chamados de clusters). Sistemas de arquivos Ext2/3 podem ser criados com blocos entre 1024 e 4096 bytes. Usando como exemplo blocos de 2048 bytes, estes 1000 arquivos ocupariam 1000 blocos, um total de 2.048.000 bytes (ou 1.95MB), um desperdício de 97,5% de espaço em disco.

Em um sistema de arquivo ReiserFS, os 30.000 bytes seriam distribuídos em apenas 15 blocos de 2048 bytes, usando um total de 30.720 bytes (ou 0.03MB), um desperdício de pouco mais de 2% do espaço em disco. Essa é uma situação hipotética, sendo verdadeira somente quando trata-se de servidores de e-mail e proxys. Como regra geral, usando ReiserFS fica garantida uma economia de até 6% do espaço em seus discos.

O ReiserFS é também altamente capaz ao lidar com diretórios que possuam muitos arquivos. Enquanto alguns sistemas de arquivos se negam a aceitar grandes quantidades de arquivos (algo como 100.000) em um só diretório, o ReiserFS considera que você tem total direito de colocar quantos arquivos quiser, que afinal de contas ele é seu. Um outro bônus é a velocidade de pesquisa por arquivos nesses diretórios, muitas vezes superior ao dos concorrentes.

A tecnologia ReiserFS? é semelhante às tecnologias ext2 e ext3, diferenciando-se das outras duas pelo fato de possuir tamanho de blocos variáveis e suporte à arquivos maiores que 2 GigaBytes. Ele também possui suporte a journaling.

FAT, sigla para File Allocation Table, ou Tabela de Alocação de Arquivos. São conhecidos por sua simplicidade. Um exemplo é a ausência de diretórios em sua primeira versão. Com o progresso dos sistemas operacionais da Microsoft, este sistema de arquivos foi sofrendo modificações.

  • FAT12 – A primeira versão desse sistema de arquivos ficou conhecida por este nome, por utilizar endereços de blocos de 12 bits. A intenção era aproveitar ao máximo o espaço em disquetes, onde era, e permanece sendo, usado quase que com exclusividade.
  • FAT16 – Também conhecido simplesmente como FAT, foi criado utilizando 16 bits de endereçamento, para comportar discos rígidos, cujos tamanhos eram bem maiores que os disquetes usados previamente. É utilizado sob a forma segura do Windows, o sistema com tecnologia NT, e também é dividido em duas variantes a FAT16A e a FAT16B. A 16A é mais antiga e consegue trabalhar com discos de no máximo 2GB, enquanto que a 16B consegue trabalhar com valores superiores.
  • VFAT – Junto com o Windows 95, a Microsoft introduziu o suporte a nomes longos, fugindo do padrão de 8 caracteres para nome e 3 para extensão. Esse recurso foi construído em cima do FAT16, e por utilizar um dispositivo virtual (driver vxd) para simular esses nomes longos recebeu o V no nome.
  • FAT32 – Por conta da limitação de tamanho do sistema de arquivos (resultante dos 16 bits de endereçamento), a Microsoft introduziu a terceira grande revisão do FAT. Usando 32 bits de endereçamento, o FAT32 pôde diminuir o tamanho dos blocos, e consequentemente diminuir o desperdício de espaço em disco. Essa é a versão mais moderna da família FAT.

O sistema da Microsoft mais comum, as versões mais simples, possuem a tecnologia Fat32, que podem acessar em qualquer quantidade e local, não tendo o seu tamanho pré-definido como outras tecnologias da própria empresa.

NTFS é a sigla para New Technology File System. Desde a época do DOS, a Microsoft, vinha utilizando o sistema de arquivos FAT, que foi sofrendo variações ao longo do tempo, de acordo com o lançamento de seus sistemas operacionais. No entanto o FAT apresentou algumas limitações, principalmente no quesito segurança. Por causa disso a Microsoft lançou o sistema de arquivos NTFS, que possui características importantes, como a capacidade de fazer com que o sistema operacional se recupere de problemas sem perder informações, sendo tolerante a erros. E também, um controle mais preciso das contas de usuários. O NTFS oferece um nível de armazenamento muito maior que os antigos, como FAT, FAT16 ou FAT32, já que com ele é possível adotar sistemas com até 2 TB de armazenamento em um único disco, ou seja, é possível utilizar um disco de 1 TB inteiramente como partição NTFS. Já com o FAT32 seria necessário repartir o disco em várias partes para utilizá-lo na íntegra.

Outros Sistemas de arquivos

editar

Vários sistemas de arquivos são suportados pelo kernel, e geralmente estão presentes na forma de módulos que são carregados mediante a necessidade do uso destes sistemas, de maneira transparente e descomplicada. Entre eles:

  • JFS – Sistema de arquivos criado pela IBM, visando a necessidade de seus clientes corporativos. Ele conta com os recursos avançados mencionados anteriormente, comojournaling, e possui uma característica interessante que é a possibilidade de definir um tamanho de bloco variável para cada arquivo, e não um tamanho fixo para todo o sistema de arquivos. Outra característica importante que ele possui é a utilização de técnicas usadas em bancos de dados para garantir a execução de transações de maneira atômica, aumentando ainda mais o nível de integridade do sistema de arquivos.
  • XFS - Este, criado e desenvolvido pela Silicon Graphics, é considerado o sistemas de arquivos mais robusto do mundo. Primariamente desenvolvido para o IRIX, versão UNIX da Silicon, foi portado para o Linux, nas versões 2.4, 2.5 e 2.6. As características dele incluem journaling, velocidade na execução de transações (conceito similar ao apresentado no JFS), alta escalabilidade (podendo conter arquivos maiores que 9 milhões de terabytes e alta performance na transferência de quantidades massivas de dados.

Criação de Sistema de Arquivos

editar

Para gerar um sistema de arquivos em uma partição pode ser utilizada a forma demonstrada no tópico anterior com o uso do fdisk, ou utilizando diretamente a ferramenta mkfs que já vem instalada dentro do próprio sistema operacional.

Sintaxe:

mkfs [-t tipo_sistema_arquivo] [-cv] dispositivo

opções:

-t Possibilita informar o tipo de sistema de arquivo desejado para o sistema operacional criá-lo. Os tipos mais comuns são: Ext2 (Linux) e vfat (Windows);
-c Irá checar o dispositivo selecionado por blocos defeituosos durante a criação do sistema de arquivos;
-v Irá apresentar os detalhes das etapas realizadas pela ferramenta.

O dispositivo pode ser um dispositivo reconhecido pelo sistema, por exemplo, /dev/hda1 ou até mesmo um ponto de montagem /boot.

Exemplo:

Nesse exemplo será criado um sistema de arquivos, para o Linux, em um pendrive:

#mkfs -t ext3 /dev/sdd
mke2fs 1.40.8 (13-Mar-2008)
/dev/sdd is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
493856 inodes, 1974272 blocks
98713 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2021654528
61 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
   32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): concluído
Writing superblocks and filesystem accounting information: concluído

Esse sistema de arquivos será automaticamente verificado quando completar trinta e uma montagens ou 180 dias, o que ocorrer primeiro. Use tune2fs -c ou -i para fazer alterações.

Para a criação de sistemas de arquivos diferentes poderíamos utilizar outros comandos de acordo com a nossa necessidade:

  • mkfs -t vfat - Formata com o sistema de arquivos Fat32.
  • mkfs -t ext2 - Formata com o sistema de arquivos Ext2.
  • mkfs -t ntfs - Formata com o sistema de arquivos NTFS.

Lembre-se de que para testar o exemplo devemos substituir o /dev/sdd pelo dispositivo correto.

Aqui estão listados alguns dispositivos de armazenamento.

/dev/fd0 Primeira unidade de disquete
/dev/fd1 Segunda unidade de disquete
/dev/hda disco rígido IDE primária master
/dev/hda1 Primeira partição do disco em IDE primária master
/dev/hdb Disco rígido IDE primário slave
/dev/hdb1 Primeira partição do disco em IDE primário slave
/dev/hdc Disco rígido IDE secundário master
/dev/hdc1 Primeira partição do disco em IDE secundário master
/dev/hdd Disco rígido IDE secundário slave
/dev/hdd1 primeira partição de disco em IDE secundário slave Italic Text
/dev/sda Primeiro disco rígido SCSI ou SATA (também usado para PenDrive?)
/dev/sda1 Primeira partição no primeiro disco SCSI, SATA ou PenDrive?
/dev/sdb Segundo disco rígido SCSI, SATA ou PenDrive?
/dev/sdb1 Primeira partição no segundo disco SCSI, SATA ou PenDrive?
/dev/sr0 Primeiro CD-ROM SCSI
/dev/sr1 Segundo CD-ROM SCSI
/dev/xda Primeiro HD XT
/dev/xdb Segundo HD XT

Manutenção da integridade do sistema

editar

Muitas vezes pode ser necessário verificar como está a vida do dispositivo para saber se existe algum bloco defeituoso ou arquivos corrompidos. A manutenção do sistema é muito útil para servidores de empresas, pois com ele é possível verificar a qualidade do dispositivo.

e2fsck

editar

Para manter a integridade do sistema de arquivos é muito utilizada a ferramenta e2fsck, que faz uma verificação do sistema de arquivos do tipo Ext2, Ext3 ou Ext4.

Fazer a verificação da integridade muitas vezes é importante, porque desta forma fica mais fácil manter a unidade de armazenamento (podendo ser um disco rígido, ou disquete, pendrive, etc.) em ótimo estado de funcionamento.

A integridade é mantida com a verificação dos setores de alojamento dos dados, se estes estão funcionando corretamente, ou se estão aptos a receber informações com este tipo de tecnologia.

O mais importante ponto que se deve observar, caso seja solicitada a verificação da integridade com a ferramenta e2fsck, é se o dispositivo não está montado. Ou seja, fazendo parte do diretório raíz (para maior entendimento sobre montagem veja o tópico sobre montagem), pois assim é possível verificar todo o espaço solicitado, sem correr o risco de perda de informação.

Sintaxe:

e2fsck [-opções] dispositivo

Opções:

p Repara automaticamente os defeitos encontrados, sem interação do usuário;
n Abre o sistema de arquivos para o tipo somente leitura, assumindo assim a resposta negativa para qualquer pergunta;
y Assume a resposta positiva para todas as perguntas;
c Realiza uma checagem no disco por blocos defeituosos;
f Força a checagem.

No próximo exemplo será analisado um pendrive:

# e2fsck -c /dev/sdc1
e2fsck 1.40.8 (13-Mar-2008)
Checking for bad blocks (read-only test): done                                
/dev/sdc1: Updating bad block inode.
Passo 1: Verificando inodes, blocos, e os tamanhos.
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sdc1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc1: 11/493856 files (9.1% non-contiguous), 52710/1973979 blocks

No exemplo acima, além de ser solicitado a verificação da integridade do sistema, também foi efetuada a checagem de blocos defeituosos com a opção -c.

Neste exemplo foram checados os arquivos, os blocos, os tamanhos, a estrutura de diretório, os diretórios de acesso, a tabela de referências e as informações gerais do dispositivo, tais como o nome do mesmo.

Para a checagem de dispositivos maiores, como discos rígidos, o processo é semelhante, devendo ser trocado somente o dispositivo. Para isso deverá ser bem conhecido o nome do mesmo e seu valor.

badblocks

editar

A ferramenta badblocks permite ao sistema fazer uma busca no dispositivo por blocos defeituosos. Normalmente ele é utilizado sobre partições. Como será feito uma busca por blocos defeituosos o tipo do sistema de arquivos não será verificado, podendo essa checagem ser passada para qualquer dispositivo com qualquer sistema operacional.

É recomendada a checagem dos blocos com o dispositivo desmontado para não causar danos físicos ao mesmo.

Sintaxe:

badblocks [opções] dispositivo

opções:

-b bloco: indica o tamanho do bloco a ser checado
-p num: indica a quantidade de vezes que a ferramenta irá repetir o processo de busca por blocos defeituosos
-s apresenta o andamento da checagem

Exemplo:

Neste exemplo será checado um pendrive de 8GB

# badblocks -s /dev/sdc
Checking for bad blocks (read-only test): done

O teste será passado em todo o dispositivo e a contagem é feita através dos dois últimos valores apresentados, que no caso vai de 0 até o limite de 7897087.

Ao chegar em 7897087 o contador será substituído pela mensagem done. Isso significa que o dispositivo está livre de erros. Caso contrário seria apresentado o bloco com erro e a solicitação de controle de correção para o mesmo.

Monitorando o espaço livre

editar

Um dos recursos esgotáveis do computador é o espaço de armazenamento dos dispositivos. Por exemplo, o disquete comum possui espaço físico de 1,44MB, que é muito pequeno para a grande quantidade de dados existentes. Já um pendrive normalmente possui um espaço muito maior disponível, o espaço de um HD é ainda maior. Porém como foi mencionado anteriormente esse é um recurso finito e por isso é necessário monitorar o seu uso para evitar futuras frustrações por falta de espaço e até mesmo para melhor controle do funcionamento do computador.

A ferramenta du (disk space used) serve para analisar e informar o tamanho usado pelos arquivos e diretórios (recursivamente) nos dispositivos de armazenamento.

Essa ferramenta é liberada sobre a licença GNU e também pelo POSIX. A principal diferença entre as versões é que a do GNU apresenta os tamanhos em uso em blocos de 1024bytes enquanto a do POSIX o faz em blocos de 512bytes. Para maiores detalhes veja o manual sobre o assunto man "du" e sobre as licenças nos apêndices sobre GNU e POSIX.

Sintaxe:

du [-opção] arquivo/diretório

Opção POSIX:

a apresenta todos os arquivos recursivamente a partir do diretório corrente, sem apresentar o tamanho dos diretórios;
k apresenta os tamanhos de blocos em 1024bytes;
s apresenta o tamanho total usado pelo diretório corrente;
x apresenta o tamanho somente dos diretórios recursivamente.

Opção GNU:

a apresenta todos os arquivos recursivamente a partir do diretório corrente, sem apresentar o tamanho dos diretórios;
b apresenta os valores em bytes;
c apresenta o tamanho somente dos diretórios recursivamente;
h apresenta os valores em forma mais legível, separados em K, M e G;
k apresenta os tamanhos de blocos em 1024bytes;
m apresenta os tamanhos de blocos em megabytes;
s apresenta o valor total do argumento.

Exemplo:

# cd /var/log
# du -x
4   ./httpd
4   ./fax
4   ./icecast
4   ./news/OLD
8   ./news
4   ./iptraf
4   ./radacct
4   ./samba
4   ./squid
4   ./uucp
4   ./vtund
1196   .

Caso o diretório solicitado possua vários subdiretórios ou vários arquivos o processo será demorado, além de apresentar uma grande quantidade de informações. Caso o usuário queira uma saída mais simples, contendo valores mais claros, poderá usar o comando du em combinação com pipe e o redirecionamento do seguinte modo:

du -k | sort +0n > lista.txt

As opções a seguir foram apresentadas nos capítulos anteriores:

sort ordena a saída padrão, em combinação com a opção +0n permite fazer a ordenação por número do tamanho e não pelo nome
> redireciona o que seria apresentado na tela do computador para o arquivo lista.txt, caso o arquivo não exista ele será gerado

Outra forma de se fazer o monitoramento do espaço do disco é saber o espaço total que ele está ocupando, ou seja, a quantidade total de informações armazenadas no dispositivo em porcentagem.

A quantidade do dispositivo pode ser total ou parcial para quando existem partições, sendo que cada partição irá apresentar a quantidade em uso.

Para a identificação do tamanho em uso da partição a mesma deverá estar montada no sistema.

Assim como o "du" é dividido entre dois padrões (GNU e POSIX) o comando "df" também é dividido entre eles, tendo como principal característica a apresentação dos blocos em tamanhos de 512bytes para o POSIX e 1024bytes para o GNU.

Sintaxe:

df [opção] partição/dispositivo

A partição é o nome de montagem dado. O dispositivo pode ser um bloco de dados qualquer.

Quando o computador não encontra a partição ou o dispositivo solicitado, a resposta de retorno é a raiz.

opção:

-a lista todas as partições existentes, até mesmo as do sistema;
-h apresenta a saída de forma mais amigável, com blocos de 1024bytes;
-H apresenta a saída semelhante a opção -h, mas com blocos de 1000bytes;
-m apresenta a saída em Megabytes.

Exemplo:

#df 
Sist. Arq.      1K-blocos    Usad         Dispon.    Uso%   Montado em
/dev/hda7    4032092     2070228   1757040   55%    /
/dev/hda2       22580           2708       18668   13%   /boot
/dev/hda1    9958552     8895016   1063536   90%   /mnt/win

Após o comando "df" apareceram seis colunas, onde cada uma representa:

Sist. Arq. partição ou dispositivo, ele deve estar montado para ser listado aqui;
1k-blocks tamanho total da partição em kbytes;
Usad tamanho que está sendo usado dentro da partição;
Dispon. espaço livre;
Uso% porcentagem total de uso;
Montado em ponto de montagem para o dispositivo ou partição.

Para que a saída seja mostrada de forma mais amigável podemos proceder da seguinte maneira:

# df -h
Sist. Arq.      Tam   Usad  Disp  Uso% Montado em
/dev/hda7    3.8G  2.0G  1.6G  55%   /
/dev/hda2     22M  2.7M  18M  13%   /boot
/dev/hda1    9.5G  8.5G  1.0G  90%  /mnt/win

A saída foi apresentada em formato de Mega e Giga, sendo os blocos de 1024bytes.

O comando free permite ao usuário visualizar a quantidade de memória e de espaço de trocas do sistema, tanto o que está sendo usando naquele momento quanto visualizar o que está em buffer.

Sintaxe:

free [opção]

opção:

-b lista a quantidade de memórias em bytes;
-t apresenta mais uma linha com o total de cada coluna de informação;
-o retira a linha de buffers/cache;
-s apresenta a pesquisa a cada n segundos, não devolvendo assim o prompt de comando para o usuário.

Exemplo:

$ free
               total               used            free  shared     buffers      cached
Mem:       2044760     902800    1141960          0      95780     430120
-/+ buffers/cache:       376900    1667860
Swap:      2047992              0    2047992

A primeira coluna apresenta o tipo do dispositivo de armazenamento, “Mem” para a memória principal, “buffers” para a memória utilizada pelo sistema e “Swap” para a área de troca (é listado o total da área de troca independente da quantidade ou tamanho de cada partição de troca).

total apresenta o total de espaço para cada dispositivo listado na primeira coluna;
used quantidade de espaço utilizado;
free quantidade de espaço livre;
shared espaço utilizado em comum por outros recursos ou programas;
buffers quantidade de espaço utilizado dentro do dispositivo como memória rápida;
cached quantidade de espaço utilizado para a memória cache.

Para maiores detalhes vide o manual da ferramenta (man free).

Controle de montagem e desmontagem

editar

O Sistema Operacional Linux possui como forma de segurança a leitura ou execução somente de arquivos presentes dentro do seu domínio, ou seja, dentro da raiz. Devido a esse fator de segurança deve-se ler ou gravar apenas em dispositivos que estejam incorporados a um subdiretório da raiz.

O sistema UNIX não utiliza letras para determinar as suas partições instaladas, como acontece em outros sistemas operacionais. Assim a montagem das partições deve ser feita dentro da raiz ( / ), ou seja, dentro da própria estrutura de diretórios do sistema.

A montagem, de forma mais clara, pode ser considerada como a associação de um diretório com um dispositivo ou partição. Com esta associação o sistema consegue melhorar a sua segurança, além de permitir ao usuário um manuseio mais simples, pois ele estará fazendo o acesso transparente a um diretório normal do sistema.

A leitura de dispositivos extras (fora da partição do /) só é possível através do uso de montagem e desmontagem destes recursos. Esses dispositivos podem ser: disquete, cd-rom, HD, outra partição, algum computador na rede (através de nfs, para maiores detalhes vide administração de redes Linux), entre outros.

A montagem pode ser feita de dois modos: manualmente ou automaticamente. O primeiro é feito através de linha de comando e o segundo através de arquivos de configuração.

Montagem e desmontagem manuais

editar

A montagem manual tem a vantagem de o usuário controlar o que realmente ele quer montado e o seu uso, evitando assim que dispositivos fiquem montados sem necessidade.

Sintaxe:

mount [-t tipo] dispositivo ponto_de_montagem
mount [opçãoA] [-o opçãoB] ponto_de_montagem
-t tipo é o formato do sistemas de arquivos do dispositivo.

Na primeira linha da sintaxe, o sistema irá montar (incluir) o dispositivo com o formato de sistema de arquivo “-t tipo” dentro do /, a partir do ponto de montagem. Como ponto de montagem deve ser entendido como um diretório qualquer dentro do sistema.

Aqui são apresentados alguns tipos suportados pelo kernel atual:

Sistema de Arquivos Descricao
autofs o sistema tenta detectar o sistema do dispositivo em questão;
Ext2/ext3/ext4 sistema de arquivos do Linux
iso9660 padronização para acessar o CD-ROM
minix sistema de arquivos minix
msdos sistema de arquivos FAT16/FAT32
nfs sistema de arquivo remoto
ntfs sistema de arquivos ntfs
smbfs sistema de arquivos via samba (ver livro de redes)
vfat sistema de arquivos FAT16/FAT32

Importante: a raiz do sistema nunca deve ser utilizada como ponto de montagem no sistema.

A segunda linha da sintaxe demonstra a utilização de opções extras. opçãoA:

-h apresenta a tela de ajuda;
-a monta todos os dispositivos listados no arquivo de configuração, o fstab;
-f simula a montagem do dispositivo e serve para testes e análises;
-n faz a montagem sem a gravação de /etc/mtab, isto é válido quando o sistema está em modo somente de leitura.

OpçãoB?, antecedida do parâmetro -o:

exec permite a execução de binários a partir dos dispositivos montados;
noexec não permite a execução de binários a partir dos dispositivos montados;
remount tenta remontar um dispositivo já montado;
ro monta como somente leitura;
rw monta como leitura e escrita;

Exemplo:

# mount

/dev/hda7 on / type ext2 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda2 on /boot type ext2 (rw)

o comando mount isolado retorna todos os dispositivos montados, seus respectivos pontos de montagem, o tipo da tecnologia adotada e a forma de montagem (ro - somente leitura, rw - leitura e escrita).

Exemplo:

# mount -t ext3 /dev/sda1 /mnt/pendrive

Importante: por padrão o usuário que não seja o root não pode fazer a montagem. Isso acontece por uma questão de segurança dos sistemas Linux. Para liberação de seu uso, veja tópico sobre fstab.

Na montagem acima é passado o tipo Ext3 (Linux) sobre um pendrive, tendo como ponto de montagem o diretório /mnt/pendrive.

umount

editar

Umount permite fazer a desmontagem dos dispositivos inclusos no sistema pelo comando mount. É muito importante realizar a desmontagem dos dispositivos, pois sem ela não é possível retirar um CD-ROM, por exemplo.

Sintaxe:

umount [opção] ponto_de_montagem
umount [opção] dispositivo

Ambas as situações são válidas.

opção:

-a desmonta todos os dispositivos descritos em /etc/mtab;
-f força a desmontagem;
-n desmonta sem escrever em /etc/mtab. Usado quando o sistema está ativo em somente leitura.

Um sistema de arquivos não pode ser desmontado se estiver ocupado. Isso ocorre porque o usuário pode estar acessando o diretório de montagem, pode estar com algum arquivo aberto ou arquivo de swap em uso, dessa forma o comando umount não poderá ser executado.

Exemplo:

# umount /mnt/pendrive/

ou

# umount /dev/sdd

supermount

editar

Essa ferramenta está inclusa em algumas distribuições mais atuais. Ela serve para realizar a montagem e a desmontagem de forma automática, ou seja, não é mais preciso utilizar os comandos apresentados acima para se ter acesso ao conteúdo de um disquete ou CD-ROM.

É uma boa ferramenta, mas com algumas desvantagens, tais como:

  • Pode não ter suporte ou não reconhecer um determinado sistema de arquivos, sendo necessário utilizar os comandos do mount e umount;
  • Permite a retirada da mídia ou do disquete, mesmo com o sistema de arquivos ocupado;
  • Não tem suporte em todas as distribuições Linux.

Vantagens:

  • permite um manuseio mais fácil;
  • esconde detalhes de configuração dos usuários finais.
  • acesso comum ao diretório indicado para a montagem automática

Exemplo de acesso:

Para esse exemplo será utilizado a unidade de CD-ROM que fica montada sobre o ponto /mnt/cdrom. A seguir um passo-a-passo da utilização do supermount:

Primeiramente verificar se o dispositivo a ser montado está com a opção do supermount:

# mount
/dev/hda7 on / type ext2 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/mnt/cdrom on /mnt/cdrom type supermount (ro,dev=/dev/cdrom,fs=iso9660)
/mnt/floppy on /mnt/floppy type supermount (rw,dev=/dev/fd0,fs=vfat)
none on /dev/pts type devpts (rw,gid=5,mode=620)

Após a localização do ponto de montagem, basta fazer acesso ao mesmo:

# cd /mnt/cdrom
# ls

Pronto, se o dispositivo conseguir montar corretamente o CD-ROM basta utilizá-lo.

A desmontagem é simples, basta retirar o CD-ROM ou digitar o comando eject que desmontará o dispositivo, devendo o usuário montar novamente a partição a partir do comandomount:

# mount -a

O arquivo /etc/fstab, que será estudado mais à frente, é quem controla o supermount, indicando o dispositivo e o ponto de montagem.

O arquivo /etc/fstab armazena a tabela de sistemas de arquivos, indicando os dispositivos, o ponto de montagem, a forma de montagem, entre outras informações. Esse arquivo é lido na inicialização do sistema fazendo todas as montagens possíveis (obs: não é possível montar a unidade de CD-ROM sem uma mídia dentro).

A estrutura do arquivo é do seguinte modo:

dispositivo   ponto_montagem   sistema_de_arquivos    modo_montagem   checagem   ordem

onde:

dispositivo é o recurso a ser montado.
ponto_montagem é um diretório dentro do sistema que fará a comunicação com o dispositivo.
sistema_de_arquivos é o sistema de arquivos.
modo_montagem são as regras atribuídas à montagem.
checagem checagem do sistema de arquivos. Se a opção for diferente de zero o dispositivo será checado na inicialização.
ordem ordem de checagem.

Exemplo do conteúdo de um arquivo fstab sem a opção do supermount (ver sobre esse assunto na seção anterior):

#dispositivo   ponto_montagem   sist_arquivos  modo_montagem    checagem  ordem
/dev/hda2      /boot            ext2           defaults         1         1
/dev/hda5      swap             swap           defaults         0         0
/dev/hda6      swap             swap           defaults         0         0
/dev/hda7      /                ext2           defaults         1         2
/dev/cdrom     /mnt/cdrom       iso9660        defaults,user,noauto,ro 0    0
/dev/fd0       /mnt/floppy      auto           defaults,user,noauto 0  0
none           /proc            proc           defaults         0  0
none           /dev/pts         devpts         gid=5,mode=620   0  0

Nesse caso o conteúdo do arquivo possui: quatro partições (/dev/hda 2, 5, 6 e 7), uma unidade de leitura de cdrom, uma outra de disquetes e mais duas partições de recursos do próprio sistema.

A leitura de uma das linhas ficaria do seguinte modo:

/dev/hda2 é um dispositivo de blocos (disco rígido) que será montado no diretório /boot com a tecnologia Ext2, tendo a sua montagem, por padrão, efetuada no sistema (será montado assim que o sistema for ativado). Ele irá checar inconsistências na inicialização.

Para o sistema instalado com suporte a supermount o arquivo fica com a seguinte entrada:

# cat /etc/fstab
/dev/hda2   /boot       ext2       defaults         1  1
/dev/hda5   swap        swap       defaults         0  0
/dev/hda6   swap        swap       defaults         0  0
/dev/hda7   /           ext2       defaults         1  2
/mnt/cdrom  /mnt/cdrom  supermount ro,dev=/dev/cdrom,fs=iso9660 0  0
/mnt/floppy /mnt/floppy supermount rw,dev=/dev/fd0,fs=vfat 0  0
none        /proc       proc       defaults         0  0
none         /dev/pts   devpts     gid=5,mode=620   0  0

Para os dispositivos disquete e CD-ROM apareceram o suporte supermont, que facilita o uso dos dispositivos, sendo indicado o dispositivo e o ponto de montagem sobre o mesmo nome. A diferença está na forma da indicação do dispositivo real, que fica dentro das opções do modo_montagem, para o caso do cdrom fica a entrada dev=/dev/cdrom, sendo cdrom um link para um arquivo regular para a montagem de dispositivos.

Montagem automática de uma partição Windows

editar

Ao ativar o sistema o arquivo /etc/fstab é lido e ele tenta montar todas as linhas que possuam o modo_montagem como _defaults_(padrão), e para que algum dispositivo, partição por exemplo, seja montado nesta etapa, evitando assim que seja montado por linha de comando todas as vezes que o sistema for ativado.

Para exemplificar, será utilizada uma partição com o sistema operacional Windows e sistema de arquivos FAT32.

A montagem diretamente sobre o interpretador de comandos é:

mount -t vfat /dev/hda1 /mnt/win

no qual:

vfat é o tipo do sistema de arquivos;
/dev/hda1 é a partição onde se encontra instalado o Windows;
/mnt/win é um diretório para a montagem do dispositivo.

A montagem automática (para todas as vezes que o sistema for ativado), incluir a seguinte linha dentro do arquivo /etc/fstab:

/dev/hda1   /mnt/win   vfat   defaults   0   0

/dev/hda1 é meramente ilustrativo, assim o usuário deve saber se o disco rígido possui o sistema operacional instalado e em qual partição. O ponto de montagem /mnt/win também é ilustrativo podendo o diretório ter outro nome.

editar

Termos Utilizados

editar
Dispositivo de armazenamento
dispositivo capaz de manter os dados mesmo após a desativação do sistema (como discos rígidos, disquetes, mídias, fita dat, entre outros)
Sistemas de Arquivos
é o formato de como os dados serão guardados dentro dos dispositivos de armazenamento
Partição
espaço contíguo de disco
Trilha
é uma área circular na superfície magnética do disco. As trilhas se afastam, na radial, uma da outra;
Cilindro
é um conjunto de trilhas localizadas na mesma distância radial.
Área de troca
partição ou arquivo dentro do sistema que serve como memória virtual, permitindo gravar informações que deveriam estar na memória lógica, porém não há espaço, ou seja, como se fosse a extensão da memória lógica (RAM)
Código hexadecimal
valores numéricos codificados por 16 algarismos (0 1 2 3 4 5 6 7 8 9 A B C D E F)
kernel
núcleo do sistema operacional que realiza a comunicação entre os aplicativos e o hardware, além de prover outras funcionalidades.

Exercícios de Revisão

editar

1. Por que quando se quer formatar um dispositivo de armazenamento o mesmo não deve estar montado?

2. Formate um disquete e crie nele três partições, sendo uma para o Windows e duas para p Linux, utilizando qualquer tamanho.

3. Qual é o comando que se executa sobre o disquete para saber se as partições foram criadas corretamente?

4. Qual o comando que permite visualizar a quantidade de memória RAM que está sendo utilizada? O mesmo comando serve para a área de troca?

5. Qual o tipo da tecnologia a ser adotada para a montagem do disquete criado acima?

6. Salve três arquivos diferentes dentro de cada uma das partições geradas. Qual o espaço utilizado dentro de cada partição?

7. Qual a linha de comando utilizada para fazer a montagem de uma partição com o sistema operacional Windows? E qual a utilizada para que a montagem seja feita de forma automática, ou seja, montada todas as vezes que o sistema é inicializado?