[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ] [ 23 ] [ 24 ] [ 25 ] [ 26 ] [ 27 ] [ 28 ] [ 29 ] [ 30 ] [ 31 ] [ next ]

Guia Foca GNU/Linux
Chapter 25 - Manutenção do Sistema


Este capítulo descreve como fazer a manutenção de seu sistema de arquivos e os programas de manutenção automática que são executados periodicamente pelo sistema.


25.1 Checagem dos sistemas de arquivos

A checagem do sistema de arquivos permite verificar se toda a estrutura para armazenamento de arquivos, diretórios, permissões, conectividade e superfície do disco estão funcionando corretamente. Caso algum problema exista, ele poderá ser corrigido com o uso da ferramenta de checagem apropriada. As ferramentas de checagem de sistemas de arquivos costumam ter seu nome iniciado por fsck e terminados com o nome do sistema de arquivos que verifica, separados por um ponto:

Para verificar um sistema de arquivos é necessário que ele esteja desmontado caso contrário poderá ocorrer danos em sua estrutura. Para verificar o sistema de arquivos raíz (que não pode ser desmontado enquanto o sistema estiver sendo executado) você precisará inicializar através de um disquete e executar o fsck.ext2.


25.1.1 fsck.ext2

Este utilitário permite verificar erros em sistemas de arquivos EXT2 (Linux Native).

fsck.ext2 [opções] [dispositivo]

Onde:

dispositivo
É o local que contém o sistema de arquivos EXT2 que será verificado (partições, disquetes, arquivos).
opções
-c
Faz o fsck.ext2 verificar se existem agrupamentos danificados na unidade de disco durante a checagem.
-d
Debug - Mostra detalhes de processamento do fsck.ext2.
-f
Força a checagem mesmo se o sistema de arquivos aparenta estar em bom estado. Por padrão, um sistema de arquivos que aparentar estar em bom estado não são verificados.
-F
Grava os dados do cache no disco antes de iniciar.
-l [arquivo]
Inclui os blocos listados no [arquivo] como blocos defeituosos no sistema de arquivos. O formato deste arquivo é o mesmo gerado pelo programa badblocks.
-L [arquivo]
Faz o mesmo que a opção -l, só que a lista de blocos defeituosos do dispositivo é completamente limpa e depois a lista do [arquivo] é adicionada.
-n
Faz uma verificação de somente leitura no sistema de arquivos. Com esta opção é possível verificar o sistema de arquivos montado. Será assumido não para todas as perguntas e nenhuma modificação será feita no sistema de arquivos.

Caso a opção -c seja usada junto com -n, -l ou -L, o sistema de arquivos será verificado e permitirá somente a atualização dos setores danificados não alterando qualquer outra área.

-p
Corrige automaticamente o sistema de arquivos sem perguntar. É recomendável fazer isto manualmente para entender o que aconteceu, em caso de problemas com o sistema de arquivos.
-v
Ativa o modo verbose (mais mensagens são mostradas durante a execução do programa).
-y
Assume sim para todas as questões.

Caso sejam encontrados arquivos problemáticos e estes não possam ser recuperados, o fsck.ext2 perguntará se deseja salva-los no diretório lost+found. Este diretório é encontrado em todas as partições ext2.

Após sua execução é mostrado detalhes sobre o sistema de arquivos verificado como quantidade de blocos livres/ocupados e taxa de fragmentação.

Exemplos: fsck.ext2 /dev/hda2, fsck.ext2 -f /dev/hda2, fsck.ext2 -vrf /dev/hda1.


25.2 fsck.minix

Verifica o sistema de arquivos minix em um dispositivo.

fsck.minix [opções] [dispositivo]

Onde:

dispositivo
Partição, disquete ou arquivo que contém o sistema de arquivos Minix que será verificado
opções
-f
Verifica o sistema de arquivos mesmo se ele estiver perfeito.
-r
Permite reparo manual do sistema de arquivos
-a
Permite um reparo automático do sistema de arquivos. É recomendado fazer o reparo manual.
-v
Verbose - Mostra detalhes durante a execução do programa
-s
Exibe detalhes sobre os blocos de root.

Exemplo: fsck.minix -f /dev/hda8, fsck.minix -vf /dev/hda8


25.3 badblocks

Procura blocos defeituosos em um dispositivo.

badblocks [opções] [dispositivo]

Onde:

dispositivo
Partição, disquete ou arquivo que contém o sistema de arquivos que será verificado.
opções
-b [tamanho]
Especifica o [tamanho] do bloco do dispositivo em bytes
-o [arquivo]
Gera uma lista dos blocos defeituosos do disco no [arquivo]. Este lista pode ser usada com o programa fsck.ext2 junto com a opção -l.
-s
Mostra o número de blocos checados durante a execução do badblocks.
-v
Modo verbose - São mostrados mais detalhes.
-w
Usa o modo leitura/gravação. Usando esta opção o badblocks procura por blocos defeituosos gravando alguns padrões (0xaa, 0x55, 0xff, 0x00) em cada bloco do dispositivo e comparando seu conteúdo.

Nunca use a opção -w em um dispositivo que contém arquivos pois eles serão apagados!

Exemplo: badblocks -s /dev/hda6, badblocks -s -o bad /dev/hda6


25.4 defrag

Permite desfragmentar uma unidade de disco. A fragmentação é o armazenamento de arquivos em áreas não seqüenciais (uma parte é armazenada no começo a outra no final, etc), isto diminui o desempenho da unidade de disco porque a leitura deverá ser interrompida e feita a movimentação da cabeça para outra região do disco onde o arquivo continua, por este motivo discos fragmentados tendem a fazer um grande barulho na leitura e o desempenho menor.

A desfragmentação normalmente é desnecessária no GNU/Linux porque o sistema de arquivos ext2 procura automaticamente o melhor local para armazenar o arquivo. Mesmo assim, é recomendável desfragmentar um sistema de arquivos assim que sua taxa de fragmentação subir acima de 10%. A taxa de fragmentação pode ser vista através do fsck.ext2. Após o fsck.ext2 ser executado é mostrada a taxa de fragmentação seguida de non-contiguos.

A ferramenta de desfragmentação usada no GNU/Linux é o defrag que vem com os seguintes programas:

O sistema de arquivos deve estar desmontado ao fazer a desfragmentação. Se quiser desfragmentar o sistema de arquivos raíz (/), você precisará inicializar através de um disquete e executar um dos programas de desfragmentação apropriado ao seu sistema de arquivos. A checagem individual de fragmentação em arquivos pode ser feita com o programa frag.

ATENÇÃO: Retire cópias de segurança de sua unidade antes de fazer a desfragmentação. Se por qualquer motivo o programa de desfragmentação não puder ser completado, você poderá perder dados!

e2defrag [opções] [dispositivo]

Onde:

dispositivo
Partição, arquivo, disquete que contém o sistema de arquivos que será desfragmentado.
-d
Debug - serão mostrados detalhes do funcionamento
-n
Não mostra o mapa do disco na desfragmentação. É útil quando você inicializa por disquetes e recebe a mensagem "Failed do open term Linux" ao tentar executar o e2defrag.
-r
Modo somente leitura. O defrag simulará sua execução no sistema de arquivos mas não fará nenhuma gravação. Esta opção permite que o defrag seja usado com sistema de arquivos montado.
-s
Cria um sumário da fragmentação do sistema de arquivos e performance do desfragmentador.
-v
Mostra detalhes durante a desfragmentação do sistema de arquivos. Caso mais de uma opção -v seja usada, o nível de detalhes será maior.
-i [arquivo]
Permite definir uma lista de prioridades em que um arquivo será gravado no disco, com isto é possível determinar se um arquivo será gravado no começo ou final da unidade de disco. Esta lista é lida do [arquivo] e deve conter uma lista de prioridades de -100 a 100 para cada inodo do sistema de arquivos. Arquivos com prioridade alta serão gravados no começo do disco.

Todos os inodos terão prioridade igual a zero caso a opção -i não seja usada ou o inodo não seja especificado no [arquivo]. O [arquivo] deverá conter uma série de linhas com um número (inodo) ou um número prefixado por um sinal de igual seguido da prioridade.

-p [numero]
Define o [numero] de buffers que serão usados pela ferramenta de desfragmentação na realocação de dados, quanto mais buffers mais eficiente será o processo de realocação. O número depende de quantidade memória RAM e Swap você possui. Por padrão 512 buffers são usados correspondendo a 512Kb de buffer (em um sistema de arquivos de blocos com 1Kb).

Exemplo: e2defrag -n -v /dev/hdb4, e2defrag -r /dev/hda1


25.5 Limpando arquivos de LOGS

Tudo que acontece em sistemas GNU/Linux pode ser registrado em arquivos de log em /var/log, como vimos anteriormente. Eles são muito úteis por diversos motivos, para o diagnóstico de problemas, falhas de dispositivos, checagem da segurança, alerta de eventuais tentativas de invasão, etc.

O problema é quando eles começam a ocupar muito espaço em seu disco. Verifique quantos Megabytes seus arquivos de LOG estão ocupando através do comando cd /var/log;du -hc. Antes de fazer uma limpeza nos arquivos de LOG, é necessário verificar se eles são desnecessários e só assim zerar os que forem dispensáveis.

Não é recomendável apagar um arquivo de log pois ele pode ser criado com permissões de acesso indevidas (algumas distribuições fazem isso). Você pode usar o comando: echo -n >arquivo ou o seguinte shell script para zerar todos os arquivos de LOG de uma só vez (as linhas iniciante com # são comentários):

     #! /bin/sh
     cd /var/log
     for l in `ls -p|grep '/'`; do
      echo -n >$l &>/dev/null
      echo Zerando arquivo $l...
     done
     echo Limpeza dos arquivos de log concluída!

Copie o conteúdo acima em um arquivo com a extensão .sh, dê permissão de execução com o chmod e o execute como usuário root. É necessário executar este script para zerar arquivos de log em subdiretórios de /var/log, caso sejam usados em seu sistema.

Algumas distribuições, como a Debian GNU/Linux, fazem o arquivamento automático de arquivos de LOGs em arquivos .gz através de scripts disparados automaticamente pelo cron. ATENÇÃO: LEMBRE-SE QUE O SCRIPT ACIMA APAGARÁ TODOS OS ARQUIVOS DE LOGs DO SEU SISTEMA SEM POSSIBILIDADE DE RECUPERAÇÃO. TENHA ABSOLUTA CERTEZA DO QUE NÃO PRECISARÁ DELES QUANDO EXECUTAR O SCRIPT ACIMA!


25.6 Tarefas automáticas de manutenção do sistema

Os arquivos responsáveis pela manutenção automática do sistema se encontram em arquivos individuais localizados nos diretórios /etc/cron.daily, /etc/cron.weekly e /etc/cron.montly. A quantidade de arquivos depende da quantidade de pacotes instalado em seu sistema, porque alguns programam tarefas nestes diretórios e não é possível descrever todas, para detalhes sobre o que cada arquivo faz veja o cabeçalho e o código de cada arquivo.

Estes arquivos são executados pelo cron através do arquivo /etc/crontab. Você pode programar quantas tarefas desejar, para detalhes veja cron, Section 25.7. Alguns programas mantém arquivos do cron individuais em /var/spool/cron/crontabs que executam comandos periodicamente.


25.7 cron

O cron é um daemon que permite o agendamento da execução de um comando/programa para um determinado dia/mês/ano/hora. É muito usado em tarefas de arquivamento de logs, checagem da integridade do sistema e execução de programas/comandos em horários determinados.

As tarefas são definidas no arquivo /etc/crontab e por arquivos individuais de usuários em /var/spool/cron/crontabs/[usuário] (criados através do programa crontab). Adicionalmente a distribuição Debian utiliza os arquivos no diretório /etc/cron.d como uma extensão para o /etc/crontab.

Para agendar uma nova tarefa, basta editar o arquivo /etc/crontab com qualquer editor de texto (como o ae e o vi) e definir o mês/dia/hora que a tarefa será executada. Não é necessário reiniciar o daemon do cron porque ele verifica seus arquivos a cada minuto. Veja a seção O formato de um arquivo crontab, Section 25.7.1 para entender o formato de arquivo cron usado no agendamento de tarefas.


25.7.1 O formato de um arquivo crontab

O arquivo /etc/crontab tem o seguinte formato:

     52  18    1   *   *    root     run-parts --report /etc/cron.montly
     |   |     |   |   |      |      |
     |   |     |   |   |      |      \_Comando que será executado
     |   |     |   |   |      |      
     |   |     |   |   |      \_ UID que executará o comando
     |   |     |   |   |            
     |   |     |   |   \_ Dia da semana (0-7)
     |   |     |   |
     |   |     |   \_ Mês (1-12)
     |   |     |
     |   |     \_ Dia do Mês (1-31)
     |   |
     |   \_ Hora
     |
     \_ Minuto

Onde:

Minuto
Valor entre 0 e 59
Hora
Valor entre 0 e 23
Dia do Mês
Valor entre 0 e 31
Mês
Valor entre 0 e 12 (identificando os meses de Janeiro a Dezembro)
Dia da Semana
Valor entre 0 e 7 (identificando os dias de Domingo a Sábado). Note que tanto 0 e 7 equivalem a Domingo.
usuário
O usuário especificado será usado para executar o comando (o usuário deverá existir).
comando
Comando que será executado. Podem ser usados parâmetros normais usados na linha de comando.

Os campos do arquivo são separados por um ou mais espaços ou tabulações. Um asterisco * pode ser usado nos campos de data e hora para especificar todo o intervalo disponível. O hífen - serve para especificar períodos de execução (incluindo a o número inicial/final). A vírgula serve para especificar lista de números. Passos podem ser especificados através de uma /. Veja os exemplos no final desta seção.

O arquivo gerado em /var/spool/cron/crontabs/[usuário] pelo crontab tem o mesmo formato do /etc/crontab exceto por não possuir o campo usuário (UID), pois o nome do arquivo já identifica o usuário no sistema.

Para editar um arquivo de usuário em /var/spool/cron/crontabs ao invés de editar o /etc/crontab use crontab -e, para listar as tarefas daquele usuário crontab -l e para apagar o arquivo de tarefas do usuário crontab -r (adicionalmente você pode remover somente uma tarefa através do crontab -e e apagando a linha correspondente).

OBS: Não esqueça de incluir uma linha em branco no final do arquivo, caso contrário o último comando não será executado.

O cron define o valor de algumas variáveis automaticamente durante sua execução; a variável SHELL é definida como /bin/sh, PATH como /usr/bin:/bin, LOGNAME, MAILTO e HOME são definidas através do arquivo /etc/passwd. Os valores padrões destas variáveis podem ser substituídos especificando um novo valor nos arquivos do cron.

Exemplos de um arquivo /etc/crontab:

     SHELL=/bin/sh
     PATH=/sbin:/bin:/usr/sbin:/usr/bin
     
     00 10  * * *  root sync
     # Executa o comando sync todo o dia as 10:00
     00 06  * * 1  root updatedb
     # Executa o comando updatedb toda segunda-feira as 06:00.
     10,20,40 *  * * *  root runq
     # Executa o comando runq todos os dias e a toda a hora em 10, 20 e 40 minutos. 
     */10 *  * * *  root fetchmail
     # Executa o comando fetchmail de 10 em 10 minutos todos os dias
     15 0  25 12 * root echo "Feliz Natal"|mail john
     # Envia um e-mail as 0:15 todo o dia 25/12 para john desejando um feliz natal. 
     30 5  * * 1-6   root  poff
     # Executa o comando poff automaticamente as 5:30 de segunda-feira a sábado.

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ] [ 23 ] [ 24 ] [ 25 ] [ 26 ] [ 27 ] [ 28 ] [ 29 ] [ 30 ] [ 31 ] [ next ]

Guia Foca GNU/Linux

Versão 5.20 - Sunday, 03 de November de 2002
Gleydson Mazioli da Silva gleydson@cipsga.org.br