Mais Populares

29 de maio de 2014

Como clonar um disco rígido no linux

Neste tutorial, segue alguns comandos básicos que podem ser executados na maioria das distribuições Linux mais conhecidas, pois o comando utilizado é bem simples e disponível na maioria das versões desde as mais minimalistas, as mais populares até as mais robustas.

Antes de começar, verifique se seu computador tem as portas disponíveis e conectores de energia disponíveis para ligação dos discos para serem clonados.





Após a ligação, recomenda-se que o principal disco esteja de fato na primeira porta da placa mãe, para que no Linux seja identificado como /dev/sda, e o segundo como /dev/sdb.

Ao executar um Live CD, geralmente a memória RAM criada pelo sistema temporário é criado após os discos físicos, ou seja, se tem dois discos, a área virtual passa a ser chamada de /dev/sdc, mas isto pode variar conforme o ponto de montagem de cada distribuição, lembrando que você pode montar um volume de um dispositivo aonde desejar.

Neste tutorial, não iremos montar um volume, iremos trabalhar com ele em modo RAW, ou seja, o que tiver lá no disco rígido, será totalmente copiado para o outro, inclusive os binários e setores que existem no disco mas que na tabela de partição de arquivo já não existe mais, ou seja, recupera-se até os arquivos deletados (utilizando ferramenta específica de varredura de disco rígido para recuperar os arquivos removidos que já não existem na tabela de alocação de arquivos).

Ao iniciar um clone de um disco, certifique-se que o disco de destino tenha a mesma ou maior capacidade de armazenamento que o primeiro, ou então dados poderão ser corrompidos.

Não interrompa a tarefa de cópia, ela parece não exibir nada e aparentemente não há trabalho nos discos rígidos mas sim, ela está em execução. É uma tarefa demorada, mesmo com devidos ajustes, um disco de 2 TB leva cerca de 6 a 8 horas para ser totalmente clonado.

Existem outras formas de criar imagens de disco rígido baseando-se apenas na leitura da tabela de alocação de arquivos, mas neste tutorial irei explicar o formato mais simples para tirar uma cópia de um disco rígido incluindo todos os dados seja ele qual for, não importando se é FAT, NTFS, ZFS, RaiserFS, EXT4, etc. o modo da cópia é simplesmente copiar setor por setor de um disco para o outro em leitura e gravação totalmente sequencial (e por isto o motivo dos discos rígidos clonados não apresentarem barulhos, afinal não estão indo para o início do disco para efetuar a leitura da tabela de alocação de arquivos).

Como já deixei claro no início, estamos trabalhando em modo RAW, onde partição, bootloader, entre outras informações são apenas bytes.

Após identificado os discos rígidos, existem as seguintes formas para cópia:
- Partição para partição.
- Disco completo para outro disco (incluindo MBR e partições).

Partição para partição:
Se ambos os discos já estão particionados, certifique-se que a partição de destino tenha a mesma ou capacidade superior para armazenamento dos dados.

dd if=/dev/sda1 of=/dev/sdb1 bs=65535

if = Input File. Origem. Pode ser de um arquivo. Ex.: /home/disk.img
of = Output File. Destino. Pode ser para um arquivo. Ex.: /home/disk.img
bs = Buffer Size. Tamanho de leitura que entra no buffer do disco para tráfego. Ou seja, você irá copiar o disco rígido de blocos em blocos, nunca exatamente byte por byte pois o processo seria muito lento pois para cada byte o disco rígido tem um overhead de ler 4096 bytes físicos de um determinado setor para converter ao sistema operacional em 512 bytes lógicos por setor. Então sugere-se que para aproveitar o uso do buffer de disco, comece fazendo testes pequenos para testar a velocidade de leitura gravação.

dd if=/dev/sda1 of=/dev/sdb1 bs=65535 count=10000

Ele irá copiar apenas os 10 mil primeiros blocos de 64 KB de dados, e irá apresentar a taxa de transferência deste teste.

Mude os blocos e veja qual situação tem um melhor ganho de velocidade. Em um teste usando um disco rígido da Seagate de 2TB e outro de 3TB, obtive 93.3 MB/s com um buffer size (bs) de 32768.

Para copiar clonando todas as informações de um disco no outro, incluindo as partições:

dd if=/dev/sda of=/dev/sdb bs=65535

Ressalta-se que o processo leva horas para ser concluído, mas copia também informações em que existem fisicamente no disco em que não foram sobrescritas e com software específico será possível recuperar os mesmos.

E agora, terminou o processo com sucesso? Parabéns, acabou de clonar por completo um disco. Ocorreu algum erro? As vezes podem ocorrer problemas durante a cópia decorridas de um disco rígido de origem ou de destino com unidades de setores danificadas.

dd if=/dev/sda of=/dev/sdb bs=65535 conv=notrunc,noerror,sync

Desta forma, os flags acima fazem com que o comando dd mesmo que encontre erros, continue copiando o restante dos dados disponíveis no disco, corrompendo apenas determinado arquivo que enfrentou o problema durante o acesso, e marca que faça o possível para não corromper os arquivos, além de manter sincronizado a cópia para que pule os bits com problemas igualmente no destino.

Com o comando DD, também é possível fazer um backup da MBR do disco, assim como gravar outra versão de MBR como desejar. Entretanto certifique-se que seu disco rígido trabalhe com GUID ou não (apesar do esquema GUID fisicamente ter a área da MBR, porém o código de programação não é o mesmo de um sistema com MBR comum).

Para entender um pouco melhor, MBR é o esquema tradicional da BIOS tradicional de um computador, que enxerga até 4 partições de dados. No novo modelo, a área da MBR possui um gancho para a primeira partição que tem 100 Mb de áreas programáveis, e para a BIOS, o restante do disco não tem mais outras partições, mas para a inicialização do computador e o código de programação na primeira partição iniciar a executar, as partições de GUID passam à existir, pois elas passam a ser reconhecidas apenas por este software que à gerencia.

dd if=/dev/sda of=/home/mbr.img bs=512 count=1

Pronto, com o comando à seguir, você fez um backup da MBR (com as partições do disco, cuidado ao restaurar se as partições estiverem em outras áreas do disco pois isto pode fazer com que dados sejam perdidos!)

Também é possível fazer o backup apenas da área programável da MBR, mantendo as partições como estão no disco.

Antes de tudo, saiba que a MBR é dividida em 3 partes:
- 446 bytes iniciais do bootloader (área programável de inicialização da sua máquia)
- 64 bytes para informação das partições e suas localizações.
- 2 bytes para identificação ( em hexa, geralmente são os bytes 55 AA para indicar final da área da MBR ).

dd if=/dev/sda of=/home/mbr.img bs=446 count=1

Para restaurar, só trocar o "if" pelo "of".

dd if=/home/mbr.img of=/dev/sda bs=446 count=1

Observação: Se você utiliza disco rígido do tipo IDE, ele pode ser reconhecido em algumas distribuições linux como /dev/hda ou /dev/hdb ao invés.

Fonte de referência:
https://wiki.archlinux.org/index.php/Disk_Cloning
http://www.cse.scu.edu/~tschwarz/COEN252_09/Lectures/MBR-Example.html

Nenhum comentário :

Postar um comentário

Deixe seu comentário abaixo e curta Tutorial TI no facebook!