Trabalhar com arquivo de imagem de dispositivo.
Autor: Cleber Ianes | Publicado: 2014-09-12T15:00:00-07:00


Quando copiamos o conteúdo de uma partição de disco em um arquivo através do comando dd, a montagem desse arquivo é bem simples, vejamos para exemplificar:



Tenho um disco com /dev/sda1 e /dev/sda2. Vou criar um arquivo com a imagem de cada partição com o seguinte comando:



# dd&nbsp; if=/dev/sda1&nbsp;&nbsp;&nbsp; of=arquivo_sda1.iso

# dd&nbsp; if=/dev/sda2&nbsp;&nbsp;&nbsp; of=arquivo_sda2.iso 



Claro que o bom senso diz que devemos fazer isso com o dispositivo desmontado e, principalmente, não ser o disco em uso no momento.



Para montar o arquivo e ler seu conteúdo em outro computador:



# mkdir /mnt/sda1

# mount -t auto -o loop arquivo_sda1.iso /mnt/sda1





# mkdir /mnt/sda2

# mount -t auto -o loop arquivo_sda2.iso /mnt/sda2



* Não vou entrar em detalhes sobre isso aqui porque tem milhões de tutoriais e explicações detalhadas sobre isso na internet, não vou plantar mais do mesmo.



O problema é quando copiamos o conteúdo de um dispositivo inteiro que está particionado. Isso não tem muitos tutoriais por aí. Por exemplo:



Um disco de sistema de 500 GB particionado assim:



/dev/sda1

/dev/sda2

/dev/sda3



Executamos a cópia assim:



# dd if=/dev/sda&nbsp; of=imagem_de_disco_sda.iso





Pronto, já temos a bomba!!!!! rsrsrs

Na hora de montar essas partições é que vem o problema pois é um único dispositivo.





Então vamos a solução tão simples que creio que por isso que tem tão pouco na internet.





# losetup -P /dev/loop0 imagem_de_disco_sda.iso&nbsp;



Com a opção -P (maiúscula) o sistema criar tantos dispositivos quantas forem as partições do disco da seguinte forma, no nosso caso:



/dev/loop0p1

/dev/loop0p2

/dev/loop0p3



Então para montar as partições:



# mkdir /mnt/loop0p1

# mount -t auto /dev/loop0p1 /mnt/loop0p1



# mkdir /mnt/loop0p2

# mount -t auto /dev/loop0p2 /mnt/loop0p2



# mkdir /mnt/loop0p3

# mount -t auto /dev/loop0p3 /mnt/loop0p3

&nbsp;



* a opção "-t auto" pode mudar dependendo do sistema de arquivo que existir na partição. Sugiro o uso do comando blkid para identificar os Sistemas de Arquivo de cada partição.

* A extensão ".iso" no arquivo de imagem é meramente ilustrativa, pode ser qualquer nome.





Um pouco mais...

Há casos que alguns sistemas operacionais não possuem o aplicativo losetup, em substituição vem o kpartx, como o CentOS 6.5. Então vou aproveitar e explicar como usar esse comando também:



# kpartx -av imagem_de_disco_sda.iso

Vai ser mostrada a seguinte saída: 



add map loop0p1 (253:4): 0 16002 linear /dev/loop0 63add map loop0p2 (253:5): 0 4415 linear /dev/loop0 16065



Diferente do losetup, ele não cria os atalhos /dev/loop0p1 e /dev/loop0p2. Mas observer uma sequência numérica na saída do comando, "253:4" e "253:5".

Se você listar o conteúdo de /dev/block, vai ver esses números lá apontando para dm-x que também tem links em /dev/mapper/loop0pX.

Tá, é uma confusão que não vem ao caso explicar agora.



A referência numéria no /dev/block é a que vai aparecer com mais frequência, então vamos utilizá-la para nosso exemplo:



Então, agora é só montar o dispositvo:



# mount -t auto /dev/block/253:4 /mnt/loop0p1

# mount -t auto /dev/block/253:5 /mnt/loop0p2





Pronto.

Já estão montados os dispositivos.