Gerenciando HDs e partições

No Linux, todos os dispositivos de sistema são acessados através de arquivos especiais criados dentro do diretório “/dev”. Isso naturalmente inclui os HDs e as partições.

Tradicionalmente, os HDs IDE são acessados através de devices iniciados com “/dev/hd”, como em “/dev/hda” (master da primeira porta IDE), “/dev/hdb” (slave da primeira IDE), “/dev/hdc” (master da segunda IDE) e “/dev/hdd” (slave da segunda IDE) e os HDs SCSI, SATA ou SAS recebem devices iniciados com “/dev/sd”, como em “/dev/sda” (primeiro HD), “/dev/sdb” (segundo HD), “/dev/sdc” (terceiro HD) e assim por diante.

Entretanto, isso mudou nas versões recentes do Kernel (a partir do 2.6.20), onde, devido a uma mudança no subsistema que dá suporte a discos, todos os HDs passaram a receber devices iniciados com “/dev/sd”, independente de serem HDs IDE, SATA, SCSI ou USB.

Uma boa forma de ver como o sistema detectou os HDs instalados é usar (como root) o comando “fdisk -l”, que lista os HDs e as partições disponíveis:

734ac2f4

Neste exemplo, temos um servidor com três HDs instalados, um de 200 GB, visto pelo sistema como “/dev/sda”, um de 80 GB visto como “/dev/sdb” e um HD maior, de 300 GB, visto como “/dev/sdc”. Você pode notar que o “/dev/sdb”está dividido em várias partições, incluindo uma partição swap (vista pelo sistema como “/dev/sdb5”), enquanto os outros dois são HDs destinados a armazenar arquivos e por isso foram particionados com uma única partição.

O que faz com que todas as partições sejam corretamente montadas durante o boot são entradas inseridas no arquivo “/etc/fstab“. Aqui temos um exemplo de configuração clássica:

/dev/sda1 / ext3 defaults 0 1
/dev/hda2 /home ext3 noatime 0 2
/dev/hda5 none swap sw 0 0
/dev/cdrom /mnt/cdrom iso9660 defaults,ro,user,noexec,noauto 0 0
proc /proc proc defaults 0 0

Como pode ver, cada linha descreve uma partição que será acessada pelo sistema. No exemplo, a primeira linha é referente à partição raiz, a segunda se refere a uma partição separada, montada no diretório home, a terceira é referente à partição swap, a quinta é referente ao CD-ROM e a última ao diretório proc, um diretório especial usado pelo kernel para armazenar variáveis de configuração e atalhos de acesso a dispositivos.

Dentro de cada linha, o primeiro parâmetro (/dev/sda1) indica a partição, o segundo o diretório onde ela será montada (/), o terceiro indica o sistema de arquivos em que a partição foi formatada (ext3) enquanto o “defaults 0 1” permite definir configurações adicionais. O “default”, por exemplo é um “nada a declarar”, que faz com que a partição seja acessada usando as opções padrão, enquanto o “noatime” na segunda linha é uma opção de otimização, que faz com que o sistema não atualize a data de acesso quando os arquivos são lidos, o que resulta em um pequeno ganho de desempenho.

Normalmente, você define os pontos de montagem das partições durante a própria instalação do sistema, de forma que o instalador se encarregará de adicionar as entradas apropriadas automaticamente. Ao instalar outros HDs posteriormente, você pode fazer com que o sistema passe a usá-las inserindo as linhas apropriadas no arquivo “/etc/fstab”.

Se você acabou de particionar um novo HD em EXT3 e deseja que a partição “/dev/sdc1” criada seja montada na pasta “/mnt/sdc1“, por exemplo, os passos seriam:

a) Criar a pasta onde a partição será montada:

# mkdir /mnt/sdc1

b) Testar a montagem da partição:

# mount /dev/sdc1 /mnt/sdc1

c) Adicionar a linha abaixo no final do arquivo “/etc/fstab”, orientando o sistema a montá-la automaticamente durante o boot:

/dev/sdc1 /mnt/sdc1 ext3 defaults 0 0

Além de ser usado para montar partições locais, o mount é usado também para montar compartilhamentos de rede. É possível montar compartilhamentos em servidores Windows, ou servidores Linux rodando o Samba, compartilhamentos em NFS ou até mesmo montar pastas em máquinas remotas usando o sshfs.

Continuando, se você estiver usando o Ubuntu, vai perceber que ele não faz referência às partições dentro do fstab pelo dispositivo, mas sim pelo UUID, que é um identificador único. O uso dos UUIDs complica a configuração, mas oferece a vantagem de garantir que o sistema continue sendo capaz de montar as partições mesmo que os HDs mudem de posição ou sejam instalados em portas diferentes da placa-mãe.

Para seguir o padrão do Ubuntu, identificando a partição através do UUID, você pode verificar qual é o UUID referente à sua partição usando o comando “blkid”, como em:

# blkid /dev/sdc1

/dev/sdc1: UUID=”5c5a3aff-d8a3-479e-9e54-c4956bd2b8fd” SEC_TYPE=”ext2″ TYPE=”ext3″

Você pode então especificar o UUID na linha do fstab no lugar do device, como em:

UUID=5c5a3aff-d8a3-479e-9e54-c4956bd2b8fd /mnt/sdc1 ext3 defaults 0 0

Um aviso importante é que o fstab é um dos arquivos essenciais para a inicialização do sistema, por isso você sempre deve checar e rechecar as alterações. Um erro na linha referente à partição raiz, por exemplo, simplesmente fará o sistema deixar de inicializar.

Outra observação é que você deve deixar sempre uma linha em branco no final do arquivo, caso contrário passará a receber um aviso durante o boot. Ela é necessária por um motivo muito simples: sem ela, se um utilitário de configuração qualquer tentar inserir informações no final do arquivo, vai acabar inserindo-as no final da linha anterior (em vez de em uma nova linha), resultando em uma configuração inválida.

Além da questão da montagem de partições, temos a questão da reparação de partições com estruturas danificadas devido a quedas de energia ou problemas diversos.

A cada boot o sistema realiza um teste rápido de integridade das partições, utilizando o fsck, que é análogo ao scandisk do Windows. Em casos de problemas graves, que não possam ser corrigidos automaticamente, ou de erros inesperados ao tentar montar as partições indicadas no arquivo /etc/fstab, o boot é interrompido e você recebe a fatídica mensagem:

Give root password for maintenance
(or type Control-D for normal startup):

Este prompt é o que temos de mais próximo a uma tela azul no mundo Linux, é essencialmente um “se vire”, que causa arrepios em muitos administradores :). Na maioria dos casos, ao pressionar “Ctrl+D” a máquina é simplesmente reiniciada e o mesmo erro volta a ser exibido, de forma que a única forma de continuar é realmente solucionando o problema.

Comece fornecendo a senha de root. Isso lhe dará acesso ao modo single-user, um prompt limitado, destinado a permitir o uso de ferramentas de reparação.

Se o problema for em uma das partições do HD, o próximo passo é executar a versão apropriada do fsck, indicando a partição a ser reparada (em caso de dúvida, você pode listar as partições do sistema usando o comando “fdisk -l”), como em:

# fsck.ext3 /dev/sda1


(para partições formatadas em ext3)

ou:

# reiserfsck –fix-fixable /dev/sda2


(para partições formatadas em ReiserFS)

Muito provavelmente, o teste do fsck indicará erros que precisarão da sua confirmação antes de serem corrigidos, daí a necessidade de usar o prompt de recuperação. Na maioria dos casos, você pode simplesmente responder “y” para tudo, mas caso existam dados realmente importantes na partição é melhor prestar mais atenção. Arquivos danificados ou fragmentos de arquivos que puderam ser recuperados vão para a pasta “lost+found” no diretório raiz da partição.

O fsck não é capaz de recuperar o sistema de arquivos em casos de problemas com o superbloco, o setor que contém informações essenciais, como o tipo, tamanho, status e informações sobre a estrutura do sistema de arquivos.

Sempre que a partição é criada, são criados vários superblocos alternativos, que servem justamente de backups para casos de problemas com o primeiro. Você pode ver a lista de endereços usando o comando “mkfs.ext3 -n partição”, como em:

# mkfs.ext3 -n /dev/sda1

Ao usar o comando, nunca esqueça de incluir o “-n”, caso contrário ao invés de mostrar as informações, ele vai formatar a partição. No final do relatório você encontra:

Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Chame novamente o comando “fsck.ext3”, adicionando a opção “-b”, seguida do endereço do superbloco que será usado. Caso eventualmente o primeiro resulte em erro, experimente o segundo, e assim por diante:

# fsck.ext3 -f -b 32768 /dev/hda2

Para partições EXT2, use o comando “fsck.ext2”, que suporta os mesmos parâmetros.

Continuando, se o erro for no “/etc/fstab”, ou em outro arquivo de configuração (você pode ter deixado a configuração com erros ao editar manualmente o arquivo e só perceber vários dias depois, ao precisar reiniciar o servidor), é necessário remontar a partição raiz em modo de leitura e escrita antes de poder fazer a edição. Isso é feito usando o comando “mount -o remount rw particao-raiz”, como em:

# mount -o remount rw /

A partir daí, você pode fazer a edição usando o vi, joe, ou outro editor que rode em modo texto e salvar as alterações:

# joe /etc/fstab

Terminado, reinicie o sistema usando o “reboot” e tudo deve voltar ao normal.

Outra dica é que, se o servidor possui um drive de CD-ROM, você pode usar um CD do Ubuntu, ou de qualquer outra distribuição live-CD como sistema de recuperação. Você pode usar o live-CD para executar os comandos de recuperação do fsck, ou para montar as partições e assim pode editar o fstab ou outros arquivos de configuração.

O live-CD pode ser usado também para resetar a senha de root, nos famosos casos em que ela é esquecida. Para isso, comece montando a partição raiz do sistema, a partir do live-CD, como em:

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

Se você estiver usando o Ubuntu ou outra distribuição derivada dele, pode se logar como root no prompt usando o comando “sudo su”. A partir daí, use o comando “chroot” para acessar o sistema dentro da partição, indicando o diretório onde ela foi montada, como em:

# chroot /mnt/sda1

Isso lhe dará um prompt de comando do sistema dentro da partição, o que permite que você troque a senha de root usando o comando passwd:

# passwd

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X