Aula 3 – Prova 201 – Sistema de Arquivos

Estava navegando pela Internet esses dias a procura de livros de Linux e acabei me deparando com uma surpresa! O livro que uso como referência para meus posts foi traduzido para o português e será vendido após o dia 20 de junho! Inclusive alguns sítios web já estão realizando a pré-venda do título. No Brasil o título foi novamente lançado pela editora Altabooks e pode ser encontrado para compra aqui.

Mas vamos ao que interessa. Hoje irei falar sobre o terceiro tópico para a prova 201: Sistema de Arquivos. Os objetivos deste tópico são:

  • Operar sistemas de arquivos Linux
  • Realizar manutenção de sistemas de arquivos Linux
  • Criar e configurar opções no sistema de arquivos Linux

Objetivo 1: Operar Sistemas de Arquivos Linux

Muito do que é cobrado neste objetivo é conteúdo da prova 101, sendo assim, irei apenas falar rapidamente sobre cada um dos itens.

Sistemas de arquivos precisam ser acessados, e para tanto, no Linux dispomos das ferramentas mount e umount para a montagem dos dispositivos. Abaixo o uso dos dois comandos.

mount

Sintaxe:

mount [opções] dispositivo

mount [opções] ponto-de-montagem

mount [opções] dispositivo ponto-de-montagem

O comando mount é utilizado para a montagem de dispositivos. Qual das sintaxes que iremos utilizar irá depender se o volume especificado já se encontra devidamente configurado ou não no arquivo /etc/fstab. A primeira e a segunda forma é utilizada com consulta ao arquivo, e a última ignora o conteúdo do mesmo.

Exemplos de uso:

# mount -a

# mount -o remount,ro /

# mount -o user,atime /dev/sda1 /ponto-de-montagem

O primeiro comando realiza a montagem de todos os volumes que estão especificados no arquivo /etc/fstab. A segunda linha, por sua vez, realiza a remontagem da partição raiz em modo somente leitura. Perceba que o segundo comando não especifica o dispositivo, sendo assim, o arquivo /etc/fstab é consultado para que o mount saiba a qual dispositivo o / se refere. O último comando realiza a montagem do volume /dev/sda1 utilizando as opções user e atime, que indicam que apenas o usuário que realizou a montagem poderá desmontar o volume e que os inodes deste volume terão o tempo de acesso modificado. Reparem que neste último exemplo, é especificado o dispositivo e o ponto de montagem, sendo assim, a configuração existente em /etc/fstab é ignorada.

umount

Sintaxe:

umount [opções] dispositivo

umount [opções] ponto-de-montagem

O comando umount é utilizado para realizar a desmontagem de volumes montados.

Exemplos de uso:

# umount -a

# umount -t vfat /ponto-de-montagem

O primeiro exemplo realizará a tentativa de desmontagem de todos os volumes descritos em /etc/fstab. O segundo comando irá tentar desmontar o diretório especificado como um volume FAT32. Repare que ao contrário do comando mount, o umount irá sempre ler o conteúdo do arquivo /etc/mtab para proceder com a desmontagem do dispositivo. Sendo assim, não é necessário especificar o dispositivo e o ponto de montagem simultaneamente.

/etc/fstab

Arquivo texto que possui a configuração necessária para a montagem de volumes. Esse arquivo é consultado pelo comando mount no momento da realização da montagem dos dispositivos. Porém, nem todos os dispositivos necessariamente precisam estar especificados nesse arquivo para serem montados.

/etc/mtab e /proc/mounts

Esses arquivos contêm basicamente a mesma informação. Eles informam sobre todos os volumes que estão atualmente montados em seu sistema. A única diferença entre eles é que o arquivo /etc/mtab faz referência apenas a dispositivos, e não a sistemas virtuais, como o rootfs e o tmpfs. Porém, em algumas distribuições, pode haver outro padrão ou o conteúdo pode ser idêntico.

Gerenciando a Swap

A swap é uma área do disco rígido que é utilizada pelo sistema operacional para uso como memória virtual. Esse espaço de memória normalmente é criado durante a instalação do sistema, porém, é possível realizar a ativação e uso de um espaço de memória swap durante a execução do sistema, sem a necessidade de um recarregamento do mesmo.

No kernel 2.4, a atualização dos dados da swap é realizada pelo thread do kernel bdflush. Essa thread é responsável por realizar a sincronização dos buffers com o conteúdo gravado no disco, da mesma maneira que o comando sync faz, porém, de maneira rotineira. No kernel 2.6 essa tarefa é realizada pela thread pdflush.

mkswap

Sintaxe:

mkswap [opções] [-f] dispositivo [tamanho]

O comando mkswap é utilizado para a criação da área swap em uma partição do disco rígido, ou, quem sabe, em um arquivo. Pode ser especificado o tamanho, porém, caso seja omitido, mkswap irá utilizar toda a partição indicada.

Exemplos de uso:

# mkswap -v0 /dev/sda2

# mkswap -f /dev/sda

O primeiro exemplo irá criar uma área de swap que irá cobrir toda a partição /dev/sda2. Essa área de swap será criada utilizando o esquema de swap antigo (anterior ao kernel 2.2). Outra possibilidade, é o uso da opção -v1, que irá criar uma área de swap do novo estilo (posterior ao kernel 2.2). O uso da opção -v1 é opcional, pois ela já é assumida por padrão em qualquer kernel pós-2.2. O segundo comando irá forçar a criação de uma área de swap na partição, mesmo que haja erros nela.

swapon, swapoff

Sintaxe:

swapon [opções]

swapoff [opções]

Os comandos swapon e swapoff são utilizados para a ativação do uso das áreas de swap depois que elas foram criadas.

Exemplos de uso:

# swapon -a

# swapoff /dev/sda2

O primeiro comando irá realizar a ativação de todas as partições swap que constam em /etc/fstab. O segundo, por sua vez, irá desativar a partição swap de /dev/sda2.

Esquema de Partições do Linux

Na LPIC-1 é discutida na prova 101 a padronização de arquivos e pastas utilizada no Linux, é chamada FHS (Filesystem Hierarchy Standard). Uma descrição detalhada do objetivo de cada uma das pastas pode ser obtida neste sítio web. Caso queira uma fonte em português e traduzida, o seguinte blog tem um resumo sobre a finalidade de cada uma das pastas do sistema.

Objetivo 2: Manutenção em Sistemas de Arquivos Linux

Eventualmente, pode ser necessária a realização de manutenção em sistemas de arquivos, apesar de não ser uma tarefa rotineira.

tune2fs

Sintaxe:

tune2fs [opções] dispositivo

A ferramenta tune2fs é utilizada para modificar os parâmetros de manutenção do sistema de arquivos, como o número de montagens necessárias para a verificação no disco ou a ação que o sistema irá tomar, caso encontre algum problema na verificação do volume.

Exemplos de uso:

# tune2fs -e panic /dev/sda1

# tune2fs -c 30 /dev/sda1

# tune2fs -O ^has_journal /dev/sda1

# tune2fs -m 1 /dev/sda1

# tune2fs -u 500 /dev/sda1

# tune2fs -s 0 /dev/sda1

O primeiro comando irá instruir o sistema a realizar um “kernel panic” caso encontre alguma falha durante a verificação do volume /dev/sda1. Outras possibilidades de ações que o sistema poderá tomar são:

  • continue – apenas ignora o erro.
  • remount-ro – remonta o sistema de arquivos como somente leitura.

O segundo comando irá modificar a quantidade de montagens máxima para a verificação em 30 vezes. O terceiro comando irá realizar a desativação do recurso has_journal da partição /dev/sda1. O símbolo “^” indica que estamos removendo esse recurso. O quarto comando indica a quantidade em porcentagem de blocos que devem ser reservados para uso exclusivo de algum usuário específico. Essa característica é interessante para impedir que qualquer usuário possa encher o disco completamente, impedindo depois que o administrador possa realizar qualquer ação no sistema. O próximo comando informa qual o UID do usuário que terá blocos reservados. O usuário pode ser informado pelo UID ou por seu nome único. O último comando desabilita (uso do zero indica que esta desabilitando) a característica spare superbloco no sistema de arquivos. Superblocos spare são blocos de backup dos superblocos, de maneira a evitar a perda dos casos caso um superbloco se corrompa.

dumpe2fs

Sintaxe:

dumpe2fs [opções] dispositivo

A ferramenta dumpe2fs serve para nos informar dados referentes a um sistema de arquivos, como tamanho dos superblocos, tamanho dos blocos, checagem automática, dentre outras informações.

Exemplo de uso:

# dumpe2fs -h /dev/sda1

O comando irá exibir as mesmas informações que podem ser obtidas através do comando tune2fs -l /dev/sda1.

debugfs

Sintaxe:

debugfs [opções] [dispositivo]

A ferramenta debugfs, também conhecida por debug2fs, é utilizada para nos ajudar a recuperar arquivos deletados. Porém, ela só funciona de maneira efetiva em sistemas de arquivos ext2.

Exemplos de uso:

# debugfs -w /dev/sda1

O comando acima irá nos levar a um shell interativo. Esse shell possui comandos específicos do debugfs, como por exemplo: lsdel para listagem dos inodes deletados e undelete para recuperação de inodes removidos. Para uma listagem de todos os comandos possíveis, digite um “?” no shell do debugfs.

badblocks

Sintaxe:

badblocks [opções] dispositivo [último-bloco] [bloco-de-início]

O comando badblocks procura por bad blocks em um dispositivo. Na sintaxe, último-bloco indica qual o último bloco para ser analisado no dispositivo, porém, se não for especificado, será utilizado o último bloco por padrão. bloco-de-início indica à ferramenta badblocks qual será o primeiro bloco a ser analisado.

Exemplos de uso:

# badblocks -o listadebadblocks /dev/sda1

# badblocks /dev/sda1 4000 250

O primeiro comando irá realizar a verificação de todos os blocos do dispositivo /dev/sda1 e o resultado de todos os bad blocks do dispositivo será enviado para o arquivo “listabadblocks”. O segundo e último comando irá realizar a verificação do dispositivo /dev/sda1 do bloco 250 até o 4000 e enviar o resultado para a saída padrão.

e2fsck

Sintaxe:

e2fsck [opções] dispositivo

A ferramenta e2fsck realiza a checagem sistemas de arquivos ext2 e ext3. O interessante é associar o uso do e2fsck com a ferramenta badblocks, pois durante a checagem, o próprio e2fsck já irá realizar a marcação dos bad blocks que podem ter sido fornecidos pelo comando badblocks.

Exemplo de uso:

# e2fsck -l listadebadblocks /dev/sda1

O comando citado irá realizar a checagem do sistema de arquivos em /dev/sda1 e marcar os blocos contidos no arquivo listadebadblocks como sendo bad blocks.

fsck

Sintaxe:

fsck [opções] [dispositivo]

Ferramenta para checagem e correções de inconsistências no sistema de arquivos. Já foi comentado o uso dessa ferramenta no post anterior, porém, não especificamos seu uso.

Exemplos de uso:

# fsck -f /dev/sda1

# fsck -A

# fsck -A -y

A primeira linha de comando acima irá realizar uma checagem forçada no sistema de arquivos em /dev/sda1, sendo assim, mesmo que o dispositivo tenha sido há pouco tempo verificado, haverá uma nova verificação não-agendada. O segundo comando realiza uma checagem por todos os volumes descritos em /etc/fstab. A última linha realiza o mesmo que o segundo comando, porém respondendo “yes” para qualquer pergunta que for realizada. Isso pode ser útil quando existe uma grande quantidade de reparos que precisam ser realizados.

mke2fs

Sintaxe:

mke2fs [opções] dispositivo [número-de-blocos]

Comando utilizado para a criação de um sistema de arquivos ext2/ext3, porém, com mais recursos possíveis do que a ferramenta mkfs. Com mke2fs, podem ser modificados alguns parâmetros do sistema de arquivos, como o uso ou não de flags especiais, como sparse_super ou has_journal.

Exemplos de uso:

# mke2fs -O ^has_journal,sparse_super /dev/sda1

# mke2fs -N 20000 /dev/sda1

O primeiro comando irá realizar a instalação do sistema de arquivos ext3 no dispositivo /dev/sda1 utilizando a flag sparse_super e desabilitando a flag has_journal. A flag sparse_super é padrão na criação de sistemas de arquivos ext3, só a utilizei para exemplo. O segundo exemplo irá realizar a instalação do sistema ext3 com 20 mil inodes.

Redimensionando Sistemas de Arquivos

Sistemas de arquivos ext2 podem ser facilmente redimensionados, desde que haja espaço livre suficiente para realizar essas operações. Se estiver utilizando LVM, no próximo post irei falar sobre como realizar essa operação, porém, se não for utilizado, podemos realizar a operação de redimensionamento com as ferramentas parted e resize2fs.

parted

Sintaxe:

parted [opções] [dispositivo [comando [opções] … ] ]

Ferramenta que pode ser utilizada para edição da tabela de partições do sistema. Pode ser utilizada de maneira interativa como um shell interpretador de comandos ou através do uso de linhas de comando com opções. Antes do uso da ferramenta, é recomendado que se realize backup de seus dados críticos, pois, infelizmente, o parted pode corromper a tabela de partições e prejudicar o sistema de arquivos. Também é necessário que a partição esteja desmontada, e de preferência, que o sistema esteja no modo mono-usuário.

Exemplos de uso:

# parted move /dev/sda1 5000 6000

# parted resize /dev/sda1 6000 6500

O primeiro comando irá mover a partição /dev/sda1 para ser iniciada depois de 5 mil megabytes do disco e terminar nos 6 mil megabytes. Poderá ocorrer redimensionamento do disco durante o movimento. O mesmo ocorre com o próximo exemplo, que a partição será redimensionada para iniciar em 6 mil megabytes do disco e irá até 6,5 mil megabytes.

resize2fs

Sintaxe:

resize2fs [opções] dispositivo [tamanho]

resize2fs irá realizar redimensionamento do dispositivo. Caso o tamanho seja omitido, será considerado até o fim da partição. O tamanho também deverá ser fornecido em blocos, ou, com a notação posfixa s, K, M ou G, sendo “s” para setores de 512 bytes, “K” para kilobyte, “M” para megabyte e “G” para gigabyte.

Exemplos de uso:

# resize2fs /dev/sda1 5G

# resize2fs -f /dev/sda1 1000s

O primeiro exemplo de linha de comando irá realizar o redimensionamento da partição para o tamanho de 5 gigabytes. A segunda linha irá forçar a execução do resize2fs mesmo em situações em que ele normalmente não seria executado.

Objetivo 3: Criar e Configurar Opções no Sistema de Arquivos

Na LPIC-1, é cobrada a criação de volume ext2. Na LPIC-2 é esperado que o candidato possa realizar a criação de outros sistemas de arquivo, como ISO9660, ext3 e FAT32. Também é necessário ter conhecimento sobre o sistema de auto-montagem de dispositivos.

Auto-montagem de Sistemas de Arquivos

Existem hoje sistemas de detecção e montagem automática de dispositivos. Eles podem realizar qualquer montagem que o comando mount poderia realizar, como volumes NFS, SMB, etc. Neste tópico irei demonstrar o uso do serviço autofs.

Sua configuração é realizada através de vários arquivos relacionados. Existe um arquivo principal para a configuração global de funcionamento do autofs e outros arquivos para a especificação do funcionamento para tipos de sistemas de arquivos específicos.

O arquivo principal normalmente é /etc/auto.master. Ele irá definir quais os diretórios do seu sistema que serão gerenciados pelo autofs. Cada ponto de montagem tem um arquivo de configuração específico para si normalmente chamado /etc/auto.ponto-de-montagem. Segue abaixo um exemplo do arquivo /etc/auto.master.

/misc /etc/auto.misc –timeout=1
/smb /etc/auto.smb
/net /etc/auto.net

Cada entrada especifica um ponto de montagem e um arquivo associado que irá conter a configuração para este ponto de montagem. O terceiro argumento de cada entrada (timeout=1) indica por quanto tempo será mantida a montagem do dispositivo após a solicitação. Abaixo trecho do arquivo /etc/auto.misc.

cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
floppy -fstype=auto,umask=0000 :/dev/fd0

A primeira coluna indica o nome da pasta dentro de /misc que será criada no momento da montagem do dispositivo. Os próximos parâmetros irão indicar o tipo do sistema de arquivos que será montado, opções especiais de montagem como somente leitura, sem SUID, etc. Por último, o dispositivo associado para a montagem. A primeira linha indica obviamente a montagem automática de um CD-ROM e a segunda a montagem de um disquete.

Os dispositivos são montados no momento que os diretórios configurados em /etc/auto.master são acessados. Ou seja, neste momento o autofs irá realizar uma verificação da possibilidade de montagem dos volumes especificados e montará aqueles que são possíveis.

Criando Sistemas de Arquivos ext3

As ferramentas de criação de sistemas de arquivos ext3 já foram demonstradas neste post. Como sabemos que o ext3 é apenas uma extensão do ext2, podemos realizar a conversão de um sistema de arquivo ext2 em ext3 sem a necessidade de formatação, basta realizar o comando abaixo.

# tune2fs -O has_journal /dev/sda1

Considerando que /dev/sda1 é a partição que será modificada. Agora, se formos criar uma nova partição ext3, podemos utilizar a ferramenta mke2fs. A linha de comando abaixo é o suficiente.

# mke2fs -j /dev/sda1

Criando Sistemas de Arquivos FAT32

A criação de partições FAT32, chamadas apenas de vfat no mundo Linux, é realizada através da ferramenta mkfs ou mkfs.vfat. Qualquer uma das linhas de comando abaixo é suficiente para instalar o FAT32 na partição /dev/sda1.

# mkfs -t vfat /dev/sda1

ou

# mkfs.vfat /dev/sda1

Criando Sistemas de Arquivos ISO9660

O sistema de arquivos ISO9660 é totalmente diferente das implementações de outros sistemas de arquivos discutidos anteriormente. Esses tipos de imagens são gerados para serem gravados em mídias como CD-ROM ou DVDs. As gravadoras de CD e DVD primeiramente surgiram utilizando barramento SCSI para conexão com o sistema. Porém, logo surgiram as gravadoras utilizando barramento IDE. Para a realização de gravações em sistemas com kernel 2.4 ou inferior é necessário o uso de módulo específico. No kernel 2.6 não é mais necessário isso.

Antes de aprendermos como gravar as imagens nas mídias, é necessário sabermos criar as imagens.

mkisofs e genisoimage

Sintaxe:

mkisofs [opções] [-o arquivo-destino] caminho [caminho …]

genisoimage [opções] [-o arquivo-destino] caminho [caminho …]

A ferramenta genisoimagem surgiu como um fork da ferramenta mkisofs, porém ambas continuam seu desenvolvimento, mas em pacotes de ferramentas diferentes. Os dois comandos têm o mesmo objetivo: criação de sistemas de arquivos ISO9660 para gravação em mídias CD-ROM ou DVD. As imagens podem ser criadas de acordo com dois padrões: Rock Ridge e Joliet. Rock Ridge suporta nomes de arquivos acima de 30 caracteres, permissões UID/GID e links simbólicos padrão POSIX. Joliet é um sistema de arquivos para mídias Windows. mkisofs e genisoimage geram ambos os padrões.

Exemplos de uso:

# mkisofs -o imagem.iso diretorio

# genisoimage -J -o imagem.iso diretorio

# mkisofs -r -o imagem.iso diretorio

O primeiro comando acima irá criar uma imagem chamada “imagem.iso” com o conteúdo da pasta “diretorio”. O segundo comando irá fazer o mesmo que o anterior, porém, criando uma imagem utilizando as extensões Joliet. O último comando irá realizar com a extensão Rock Ridge.

cdrecord, dvdrecord e wodim

Sintaxe:

wodim [opções] dev=dispositivo [track opções] [track1] [trackn] …

cdrecord [opções] dev=dispositivo [track opções] [track1] [trackn] …

dvdrecord [opções] dev=dispositivo [track opções] [track1] [trackn] …

A ferramenta wodim surgiu como substituta do antigo cdrecord que por sua vez já incluía as funções do dvdrecord. Essas ferramentas são todas utilizadas para a gravação em CD e DVDs de dados.

Exemplos de uso:

# cdrecord -scanbus

# wodim -v -dummy dev=0,0,0 imagem.iso

# dvdrecord driveropts=burnfree dev=0,0,0 imagem.iso

O primeiro comando irá realizar uma verificação dos dispositivos com capacidade de gravação do sistema. O resultado será importante para a realização da construção da linha de comando necessária para a gravação. O segundo comando irá realizar uma simulação de gravação. Essa simulação irá realizar todos os passos do processo de gravação sem efetivamente ligar o laser. Isso pode ser útil para testar se gravadores que não possuem sistemas de BurnFree poderão realizar a gravação sem problemas. O último comando irá efetivamente gravar a imagem.iso no dispositivo indicado pela opção dev. A opção driveropts indica quais opções da gravadora serão utilizadas durante o processo de queima da mídia.

losetup

Sintaxe:

losetup [-f] [-d] [dispositivo-loop]

losetup [opções] imagem

É possível e simples em um sistema Linux realizar acesso a uma imagem criada por um aplicativo, como o mkisofs ou genisoimage, como se a mesma fosse um dispositivo. Isso é possível graças ao driver loop, que é um dispositivo virtual (normalmente /dev/loop0) criado para permitir acesso à imagem.

Exemplos de uso:

# losetup /dev/loop0

# losetup /dev/loop1 imagem.iso

# losetup -d imagem.iso

# losetup -e des /dev/loop0 imagem.iso

O primeiro comando irá obter informações sobre uma montagem loop. O segundo comando irá associar a imagem.iso com o dispositivo de loop /dev/loop1. O terceiro comando irá dissociar a imagem.iso do dispositivo de loop utilizado. O último comando irá realizar o procedimento de montagem do dispositivo criptografado com o algoritmo DES 16 bits.

Concluindo

Mais um post terminado! Ufa! Escrever isso aqui dá um certo trabalho, mas é boa a satisfação de poder ajudar quem está estudando (assim como eu) e deixar registrado aquilo que em princípio ficaria só em minha cabeça.

Incluí uma nova página aqui no blog para que as pessoas possam acompanhar, se desejarem, o progresso de criação dos posts. Lá irei colocar quais os próximos temas dos posts e em quais deles eu estou trabalhando no momento.

E lembrando: para os erros que encontrarem, sintam-se livres para enviarem as correções! O mesmo vale para dúvidas e sugestões.

Até mais a todos! 😀

5 comentários sobre “Aula 3 – Prova 201 – Sistema de Arquivos

  1. Rafael disse:

    Olá, vim dar meus parabéns pela iniciativa e continuidade desses artigos sobre a prova da LPIC! São muito bons! Continuarei acompanhando cada artigo postado!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *