0

[SysAdmin] Clonando Disco Rígido com DD

7 Flares 7 Flares ×

Um utilitário padrão do Linux para realizar cópias binarias, partições ou mesmo arquivos. O comando dd presente nos ambiente Unix-Like é um acrônimo de “data duplicator”.  Ferramenta de baixo nível muito poderosa. O comando sempre é chamado com argumentos de entrada de dados (if, de input flow) e de saída de dados (of, de output flow) que pode realizar tarefas como:

  • Backup e Restorer de todo o disco rígido ou a partição.
  • Backup do MBR (Master Boot Record)
  • Pode copiar e converter formato de fita magnética, converter formatos ASCII e EBCDIC e Swap.
  • Também pode ser usado pelo kernel Linux para criar arquivos de imagens de inicialização.

Entre outras tarefas que possa ter esquecido de mencionar aqui. Mais importante ainda, no entanto, o comando dd é a ferramenta de imagem de disco mais antiga ainda em uso. Por sua facilidade no dia a dia, confiável e muito poderosa.

Neste breve post, irei demonstrar como clonar um disco rígido para outro disco rígido. Esse processo de criar um clone é para podemos restaurar o mesmo a partir de um arquivo de imagem escrita.

Devo alerta, prossiga com cuidado !!!

A primeira coisa que precisamos fazer é subir o sistema em LiveCD. Não importa qual distribuição você está usando, quase todos os sabores do Linux incluem o comando dd. Subir em livecd é importante,  assim como o device de origem desmontado, dessa forma eliminamos problema com algum dados corrompido. Inicie o sistema com o livecd, monte o HD Externo. Melhor usar um HD vazio e formatado para este proposito, alem de ter pelo menos o dobro do espaço do disco rígido a ser clonado.

Tenha ciência, que tal procedimento irar gerar uma demanda alta de processamento, aconselho realizar em horário de menos acesso, isso claro, se você optar em seguir a quente, com o sistema de arquivo montado.

Verifique se o disco rigido a ser clonado é, de fato, identificada como sda. Podemos fazer isso de diversas formas, fdisk, dmidecode e entre outras. A maioria das distribuições modernas, já contam com o comando lshw, optei pela simplicidade, caso você não tenha. Para sistemas baseado em Debian (sudo apt install lshw) para sistema baseado em RedHat (yum install lshw).

Exemplo do comando lshw para verificar o device. A saída será algo como:

# lshw -c disk
  *-disk                  
       descrição: ATA Disk
       produto: HGST HTS725050A7
       ID físico: 0.0.0
       informações do barramento: scsi@0:0.0.0
       nome lógico: /dev/sda
       versão: A890
       serial: RCF50ACE3G1MLM
       tamanho: 465GiB (500GB)
       capacidades: partitioned partitioned:dos
       configuração: ansiversion=5 logicalsectorsize=512 sectorsize=4096 signature=566eb5f9

Clonado um Disco

Vamos assumir que nosso alvo é /dev/sda. Podemos copiar uma única partição  (digamos, /dev/sda1, ou até mesmo /dev/mapper/vg00_lvroot, etc…). Neste post vamos nos concentrar em copia toda unidade. Iremos clonar o sda para um arquivo de imagem, isso torna o processo de restorer muito mais simples e cria um arquivo muito menor para o armazenamento.

Para criar uma imagem executamos o comando dd da seguinte forma:

# dd if=/dev/sda conv=sync,noerror bs=64K | gzip -1 - > bkp_server-image.gz
327680+0 registros de entrada
327680+0 registros de saída
21474836480 bytes (21 GB) copiados, 389,18 s, 55,2 MB/s

As opções acima são o seguinte:

  • bs: Defina o tamanho do bloco para cópia (o padrão é 512 bytes, não funciona bem para unidades maiores).
  • noerror: instrui o dd para continuar a operação, ignorando todos os erros de leitura.
  • sync: Instrua o dd para preencher blocos de entrada com zero se houver algum erro de leitura
  • O comando gzip é usado para comprimir os dados em um arquivo.

Se preferir, caso não tenha espaço ou não tenha o HD externo, podemos executar o comando remotamente, e esta image será copiado no servidor remoto. Certifique-se que o mesmo tenha espaço suficiente para armazenar o arquivo de imagem.

ssh user_ssh@remote-server "dd if=/dev/sda | gzip -1 -" | dd of=/path/remote/to/bkp_server-image.gz

Bem, isso poderá demora dependendo do tamanho do disco. Sugiro ir tomar um café !!!

 

Teste de Integridade

Finalizando o processo, podemos verificar a integridade desta image com o comando gzip.

# gzip -t -v bkp_server-image.gz 
bkp_server-image.gz:	 OK

 

Restore da image

Uma vez que o comando dd foi finalizado com sucesso, termos uma arquivo chamado bkp_server-image.gz. Para restaurar em um novo device, sendo este deverá ser exatamente o mesmo tamanho que o dispositivo clonado.

Presumo que você já tenha seu sistema inicializado em livecd, e montou o HD com a image de backup. Certifique-se que o device de destino não esteja montado, execute o comando como se segue:

[root@livecd ~]# gunzip -c /mnt/bkp_server-image.gz | dd of=/dev/sda
41943040+0 registros de entrada
41943040+0 registros de saída
21474836480 bytes (21 GB) copiados, 605,158 s, 35,5 MB/s

Assim como a copia, esse processo levará um tempo para concluir. Quando finalizar, teremos um dispositivo perfeitamente bootavel, uma copia exata do sistema original.

Perceba que o estado do device mudou, agora temos o mesmo com a partição primaria criada e o seu tipo definido, bem como o original.

[root@livecd ~]# fdisk -l /dev/sda 

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004cfce

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          39      307200   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              39        2611    20663296   8e  Linux LVM

Pronto. Reinicie o seu sistema clonado !! 🙂

:wq!

Jonatas Lopes

Sempre aprendendo coisas novas e passando o conhecimento adiante !!!

Dúvidas? Deixe seu comentário ou entre em contato.