miércoles, 26 de junio de 2019

Montar partición LVM2 de disco virtual vmdk

Montar partición LVM2 de disco virtual vmdk Si queremos montar una partición vmdk y nos da el siguiente error LVM2_member entonces es que la máquina virtual está particionada utilizando LVM. Lo que nos lleva a realizar el siguiente procedimiento para poder montar la misma.
Utilizando las siguientes herramientas:
  • vmware-mount
  • vmware-vdiskmanager
  • losetup
  • fdisk
Lo primero que tenemos que hacer es listar las particiones existentes en la imagen de nuestra máquina virtual.

# vmware-mount -p <maquina_virtual>.vmdk
# vmware-mount -p <virt_machine>.vmdk
Nr      Start       Size Type Id Sytem
-- ---------- ---------- ---- -- ------------------------
 1         63     401562 BIOS 83 Linux
 2     401625   10072755 BIOS 8E Unknown

En el listado podemos observar que la partición que estamos buscando es la número 2, ya que es la que tiene marcada el Id 8E (8E stands for Linux LVM) . El siguiente paso será montar la imagen vmware, para ello ejecutaremos el siguiente comando:

# vmware-mount -f <maquina_virtual>.vmdk <mountpoint>
# ls <mountpoint>
flat
Se nos generará en el punto de montaje un archivo llamado flat.Que utilizaremos para poder montar las particiones LVM.

Nota: Si nos diera error de que el archivo está dañado o corructo, con un error por ejemplo 16006. Debemos reparar la imagen ejecutando la siguiente línea de comando:
 
# vmware-vdiskmanager -R <maquina_virtual>.vmdk

Sobre el archivo flat ejecutaremos fdisk para inspeccionar su contenido.

# fdisk -lu <mountpoint>/flat
You must set cylinders.
You can do this from the extra functions menu.

Disk <mountpoint>/flat: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x0006a266

         Device Boot      Start         End      Blocks   Id  System
<mountpoint>/flat1   *          63      401624      200781   83  Linux
<mountpoint>/flat2          401625    10474379     5036377+  8e  Linux LVM
Ahora que tenemos la direcciópn de inicio y final, podemos calcular el offset para montar la partición LVM. Para ello tomamos nota de la dirección de incio y aplicamos la siguiente ecuación:

echo $(( 401625 * 512 ))
205632000
Conocido el offset podemos montar en un dispostivo del tipo loop para poder mapear las unidades vinculadas al mismo.

losetup -o 205632000 /dev/loop0 <mountpoint>/flat
Para ver los dispositivos asociados con el volumen físico ejecutamos el siguiente comando:

# pvdisplay /dev/loop0
  --- Physical volume ---
  PV Name               /dev/loop0
  VG Name               VolGroup00
  PV Size               4,80 GB / not usable 22,34 MB
  Allocatable           yes
  PE Size (KByte)       32768
  Total PE              153
  Free PE               1
  Allocated PE          152
  PV UUID               MUKx5v-ukpq-fJis-GjpB-Z7dE-nIsI-Xr4bYd

# lvscan
  ACTIVE            '/dev/vg1/isos' [111,79 GB] inherit
  ACTIVE            '/dev/vg0/root' [10,00 GB] inherit
  ACTIVE            '/dev/vg0/swap' [8,00 GB] inherit
  ACTIVE            '/dev/vg0/home' [50,00 GB] inherit
  ACTIVE            '/dev/vg0/data' [164,41 GB] inherit
  inactive          '/dev/VolGroup00/LogVol00' [4,00 GB] inherit
  inactive          '/dev/VolGroup00/LogVol01' [768,00 MB] inherit
El siguiente paso es activar el volumen lógico para poder montarlo:

lvchange -ay /dev/VolGroup00/LogVol00
Ahora ya podemos montar los volumenes para analizarlos:

mount /dev/VolGroup00/LogVol00 <mountpoint>
Para desmontar la unidad seguiremos los siguientes pasos:

umount <mountpoint> # Desmontamos la unidad
lvchange -an /dev/VolGroup00/LogVol00 # Desactivamos el volumen lógico
losetup -d /dev/loop0 # Desmontamos el loop
vmware-mount -d <mountpoint> # Desmontamos la imagen de Disco de vmdk