você está aqui: Home  → Arquivo de Mensagens

Duplicando e transferindo instalações do Linux de maneira simples

Colaboração: Luís Fernando C. Talora

Data de Publicação: 30 de Dezembro de 2006

Mais de uma vez, me deparei com situações nas quais era preciso duplicar uma instalação já existente de uma máquina com Linux, seja para troca de hardware, seja para substituição do disco rígido em uso por uma maior, seja para testar atualizações sem comprometer um servidor de produção, ou simplesmente para economizar o tempo de instalação, configuração e atualização de uma máquina.

Tentei fazer isso de várias maneiras, entre elas usando o tar (funciona, mas nunca me lembro da sintaxe), dd (requer discos rígido literalmente idênticos e, mesmo assim, nem sempre funciona), entre outros métodos.

A solução que melhor me atendeu foi, provavelmente, a mais simples de todas: usar o comando cp. Utilizando o cp combinado com os parâmetros a e v, obtemos uma cópia fiel de um sistema de arquivos ext2 ou ext3 (provavelmente funciona com reiserfs também). É um método um pouco "braçal", já que é preciso prepar o particionamento de disco e utilizar uma outra distro live-on-cd para executar a cópia, mas utiliza um comando simples, disponível em qualquer distro e é de fácil compreensão (exceto, talvez, pelos passos que precedem a cópia, que podem ser simplificados com o uso de ferramentas gráficas de particionamento, como o qtparted). Seguem os passos para se "clonar" uma instalação do Linux seguindo esse método.

  1. Coloque, na mesma máquina, o disco rígido contendo a instalação a ser "clonada" (vou chamá-lo de HD1 daqui por diante) e o disco rígido que receberá uma cópia da mesma (chamarei-o de HD2 daqui em diante). Neste exemplo, manteremos o mesmo esquema de particionamento do HD1 no HD2. Vamos também supor que HD1 foi instalado como primário na primeira controladora IDE (/dev/hda) e o HD2 como slave na mesma controladora (/dev/hdb).

    Em nosso cenário, o HD1, a ser clonado, está organizado da seguinte maneira:
      HD1 (8Gb) Partição Tipo Tam. Aprox. Ponto de Montagem
      /dev/hda1 ext3 100Mb /boot
      /dev/hda1 swap 1Gb (nenhum)
      /dev/hda3 ext3 7Gb /
    
    Da mesma forma, o HD2, de 36 Gb, deverá ficar assim:
      HD1 (36Gb) Partição Tipo Tam. Aprox. Ponto de Montagem
      /dev/hdb1 ext3 100Mb /boot
      /dev/hdb1 swap 1Gb (nenhum)
      /dev/hdb3 ext3 34Gb /
    
  2. Reinicialize o microcomputador utilizando uma distribuição live-on-CD do Linux. Eu costumo usar o Recue CD do Fedora (que é bem leve), mas podem ser usados o Kurumin, o Knoppix ou outra distro de sua preferência. Uma vez no prompt, precisaremos verificar como o HD1 foi particionado.

      # fdisk -l /dev/hda
      
      Disk /dev/hda: 8455 MB, 8455200768 bytes
      255 heads, 63 sectors/track, 1027 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot Start End Blocks Id System
      /dev/hda1 * 1 13 104391 83 Linux
      /dev/hda2 14 300 2305327+ 82 Linux swap / Solaris
      /dev/hda3 301 1027 10498414 83 Linux
    

    Se o HD2 contiver dados, utilize o comando fdisk /dev/hdb e a opção d quantas vezes forem necessárias para deixá-lo vazio. Salve o particionamento com a opção w. A tabela de particionamento do HD2 deverá se parecer com o exibido abaixo (ou seja, vazia):
      # fdisk -l /dev/hdb
      
      Disk /dev/hdb: 36.4 GB, 36419584000 bytes
      255 heads, 63 sectors/track, 4427 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot Start End Blocks Id System
    

  3. Vamos criar o mesmo esquema de particionamento no novo disco. Digite:
      # fdisk /dev/hdb (cuidado para não selecionar do disco errado!!!)
      
      Tecle: "n" (para criar uma nova partição),
      "p" (para primária),
      "1" (número da partição) e
      "1" (cilindro inicial)
      "+xxxM" (onde "xxx" é o tamanho, em Mbytes. Ex.: +100M para 100 Mbytes)
    
    Obs: 100Mb é mais que suficiente para nosso exemplo, onde a partição 1 (/dev/hda1) é a /boot.

    Segunda partição: Está será nossa partição de swap (normalmente, utiliza-se o dobro da quantidade de memória RAM).

    Tecle n, p 2, <ENTER> (para aceitar a sugestão do fdisk e usar o próximo cilindro livre) Depois, digite +xxxM (onde xxx é o tamanho em Mbytes).

    Terceira partição: n, p, 3, <ENTER>, <ENTER> (ocuparemos o restante do disco com a nova partição - /)

    Teclando p você verá o novo esquema de particionamentedo:
      Disk /dev/hdb: 36.4 GB, 36419584000 bytes
      255 heads, 63 sectors/track, 4427 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot Start End Blocks Id System
      /dev/hdb1 1 13 104391 83 Linux
      /dev/hdb2 14 138 1004062+ 83 Linux
      /dev/hdb3 139 4427 34451392+ 83 Linux
    
    Note que a partição /dev/hdb2 aparece como Linux, mas precisamos que ela mude para swap.

    Tecle t para efetuar essa alteração, 2 (partição 2) e 82 (que é o código para partição de swap).

    Digite p novamente e você deverá ver o seguinte:
      Disk /dev/hdb: 36.4 GB, 36419584000 bytes
      255 heads, 63 sectors/track, 4427 cylinders
      Units = cylinders of 16065 * 512 = 8225280 bytes
      
      Device Boot Start End Blocks Id System
      /dev/sdb1 1 13 104391 83 Linux
      /dev/sdb2 14 138 1004062+ 82 Linux swap / Solaris
      /dev/sdb3 139 4427 34451392+ 83 Linux
    
    Tudo OK, tecle w para salvar. Se notou algo errado, a opção q sai sem salvar as alterações.

  4. Vamos montar as partições de origem e destino para começarmos a cópia. Vamos criar uma estrutura HD1 e outra HD2 na raiz do sistema de arquivos "virtual" de nossa distribuição live-on-cd (note que não copiaremos a partição de swap, já que ela é utilizada apenas quando o sistema requer memória RAM extra):

    Criando pontos de montagem:
      # mkdir -p /hd1/particao1
      # mkdir /hd1/particao3
      # mkdir -p /hd2/particao1
      # mkdir /hd2/particao3
    
    Montando partições:
      # mount -t ext3 /dev/hda1 /hd1/particao1
      # mount -t ext3 /dev/hda3 /hd1/particao3
      # mount -t ext3 /dev/hdb1 /hd2/particao1
      # mount -t ext3 /dev/hdb3 /hd2/particao3
    
  5. Tudo isso para, FINALMENTE, chegarmos ao que interessa: a cópia!
      # cp -av /hd1/particao1/* /hd2/particao1
      # cp -av /hd1/particao3/* /hd2/particao3
    
  6. (obrigatório apenas para Fedora) Concluída a cópia, use o comando e2label para verificar os labels (nomes) das partições e os anote (se houver):
      # e2label /dev/hda1 (resultado: /boot)
      # e2label /dev/hda3 (resultado: /)
    
    Vamos colocar os mesmos nomes para as partições do HD2
      # e2label /dev/hdb1 /boot
      # e2label /dev/hdb3 /
    
  7. (Recomendação para o Fedora) É certo que haverá problemas acessando a partição swap pelo label, que é o padrão no Fedora (já que o label para partições swap é sempre um conjunto ilegível de caracteres - algo como IÏÌ+D²ùIÏÌIi²ù). Isso é facilmente solucionável editando-se o arquivo /etc/fstab do HD2:

      # vi /hd2/particao3/etc/fstab
    

    Altere a linha semelhante à abaixo:

      LABEL=IÏÌ+D²ùIÏÌIi²ù swap swap defaults 0 0
    

    Para

      /dev/hda2 swap swap defaults 0 0
    

    Obs.: Lembre-se: a linha acima começa com /dev/hda2, e não com /dev/hdb2

  8. Desmonte as partições, por segurança:
      # umount /hd1/particao1
      # umount /hd1/particao3
      # umount /hd2/particao1
      # umount /hd2/particao3
    
  9. É preciso fazer o gerenciador de boot funcionar. Tentei vários métodos para isso, mas o menos problemático me pareceu o seguinte:

  • Desligue a máquina, desconecte o HD1 e coloque o HD2 em seu lugar (em nosso exemplo, ele deixará de ser slave e passará a ser master na IDE0);

  • Inicialize a máquina com a distro live-on-cd novamente. Criaremos uma estrutura para montarmos os sistemas de arquivos como ele ficaria na prática. Isso é preciso para que o gerenciador de boot seja instalado adequadamente.
      # mkdir /hd_copiado (ponto de montagem para a partição 3)
      # mkdir /hd_copiado/boot (ponto de montagem para a partição 1)
    
  • Montando... (Note que, agora, o HD2 passou a ser o /dev/hda, já mudamos ele de lugar)
      # mkdir -t ext3 /dev/hda3 /hd_copiado 
      (``/`` é sempre montado antes)
      # mkdir -t ext3 /dev/hda1 /hd_copiado/boot
    
  • Daremos um chroot para acessar essa instalação como se a pasta /hd_copiado fosse a raiz:

      # chroot /hd_copiado
    

  • Por último, reinstalaremos o gerenciador de boot:

    Se você usa o GRUB, digite:

      # grub-install /dev/hda
    

    Se você usa o LILO, digite:

      # lilo
    

E pronto! Desmonte as partições, reinicialize a máquina, remova o CD do drive e a inicilização do sistema deverá ocorrer normalmente, utilizando o HD-Clone.



Veja a relação completa dos artigos de Luís Fernando C. Talora

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script