terça-feira, 25 de fevereiro de 2014

Manipulando arquivos de vhd VMware iSCSI, Mounting partitions of files VHDs iSCSI VMWARE.



Objetivo: 

Esse rascunho tem a finalidade de reunir informações necessárias para manipulação de arquivos de discos virtuais, como por exemplo, vhds do vmware, arquivo de disco gerado pelo protocolo iSCSI. Possibilitar a detecção e montagem de partições contidas nesses arquivos. 
O estudo surgiu com a ideia de indisponibilidade total de uma storage iSCSI, onde o único meio para recuperação de arquivos seria a retirada de disco para a  manipulação do arquivo que armazena as informações do protocolo. 
Espero com esse documento poder ajudar de alguma forma pessoas que assim como eu passaram por essa necessidade.

1 - Listando e criando dispositivos loops(/dev/loop*)

#Caso não tenham dispositivos loops ativos pode criar com o comando:
#Listar dispositivos loops existentes "ls -la /dev/loop*"
#Criando dispositivos loops. 
ex: para criar /dev/loop3
"mknod -m660 /dev/loop3 b 7 3"
ex: para criar /dev/loop8
"mknod -m660 /dev/loop8 b 7 8"
#References
http://www.tldp.org/HOWTO/CDServer-HOWTO/addloops.html


2 - Manipulando arquivos de discos virtuais com ferramenta "losetup".


- Carregue o arquivo para o dispositivo de blocos:
losetup /dev/loop0 /var/lib/vz/teste
Obs: (/var/lib/vz/teste, arquivo  do disco iSCSI que foi criado automaticamente no servidor iSCSI, com o nome de teste).

- Listando partições carregadas no dispositivo /dev/loop0  
fdisk -lu /dev/loop0 

- Resultado:<
Disk /dev/loop0: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x46a6c0d0

Device Boot            Start         End      Blocks   Id  System
/dev/loop0p1             128      204927      102400    7  HPFS/NTFS/exFAT
/dev/loop0p2          204928      512127      153600    7  HPFS/NTFS/exFAT
:>

- Depois gere um ponto de montagem para cada partição encontrada, multiplicando o inicio de cada partição (offset) x 512
losetup -o {offset partição 1}x512 /dev/loop1 /dev/loop0 = losetup -o 65536 /dev/loop1 /dev/loop0
losetup -o {offset partição 2}x512 /dev/loop2 /dev/loop0 = losetup -o 104923136 /dev/loop2/dev/loop0
- Se preferir ainda monte direto somente a partição desejada, passando o parâmetro de qual setor ela inicia.
Ex: Montada a partição 1, 512x128=65536
losetup -o 65536 /dev/loop0 /var/lib/vz/teste
- Concluído o carregamento do ponto de montagem monte a partição de acordo com o sistema de arquivos, ex:
mount.ntfs3g /dev/loop0 /mnt/teste | mount /dev/loop1 /mnt/teste1


#É necessária a ferramenta ntfs-tools instalada no Linux, "apt-get install ntfs-3g" para manipular 
#partições ntfs. 

#Para encerrar o carregamento do dispositivo loop entre com o comando "losetup -d /dev/loop0" por #exemplo.
#Ver status do dispositivo de loop "losetup /dev/loop0" por exemplo.


Referências losetup:
http://varghese85-cs.blogspot.com.br/2008/11/mouting-partitions-with-losetup.html
http://cromoteca.com/en/blog/mountflatvmwarediskimagesunderlinux/


By:- Pedro Alex | pedroalex@gmail.com
25/02/2014