Acceder a LVM en .img

Continuando con la entrada anterior, ahora surge la necesidad de de acceder a dispositivos LVM en un fichero .img

Primero y antes de nada necesitamos tener instalada la aplicación ‘kpartx’ para ello:

[root@server ~]# yum install kpartx
Loaded plugins: rhnplugin
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package kpartx.x86_64 0:0.4.9-46.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package      Arch         Version             Repository                  Size
================================================================================
Updating:
 kpartx       x86_64       0.4.9-46.el6        rhel-x86_64-server-6        46 k

Transaction Summary
================================================================================
Install       0 Package(s)
Upgrade       1 Package(s)

Total download size: 46 k
Is this ok [y/N]: y
Downloading Packages:
kpartx-0.4.9-46.el6.x86_64.rpm                           |  46 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : kpartx-0.4.9-46.el6.x86_64                               1/2 
  Cleanup        : kpartx-0.4.9-31.el6.x86_64                               2/2 
rpm -ql kpart
Updated:
  kpartx.x86_64 0:0.4.9-46.el6                                                  

Complete!

Tras esto podemos analizar los grupos de volúmenes que hay en el fichero .img, en mi caso produjo la siguiente salida:

[root@server ~]# kpartx -av /targets/client2.img 
add map loop0p1 (253:3): 0 204800 linear /dev/loop0 2048
add map loop0p2 (253:4): 0 307200 linear /dev/loop0 206848
add map loop0p3 (253:5): 0 100352 linear /dev/loop0 514048

Ahora escaneamos los grupos de volumenes de nuestro sistema:

[root@server ~]# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "vg_prueba" using metadata type lvm2
  Found volume group "vg_iscsi" using metadata type lvm2
  Found volume group "vg_server" using metadata type lvm2

Una vez identificado activamos el grupo de volumenes;

[root@server ~]# vgchange -ay vg_prueba
  1 logical volume(s) in volume group "vg_prueba" now active

Como ya lo tenemos activo ahora buscaremos el volumen lógico a montar:

[root@server ~]# lvscan
  ACTIVE            '/dev/vg_prueba/lv_prueba' [72,00 MiB] inherit
  ACTIVE            '/dev/vg_iscsi/lv_iscsi' [3,00 GiB] inherit
  ACTIVE            '/dev/vg_server/lv_root' [13,18 GiB] inherit
  ACTIVE            '/dev/vg_server/lv_swap' [1,46 GiB] inherit

Y por último sólo nos queda montarlo:

[root@server /]# mount /dev/vg_prueba/lv_prueba /mnt/
[root@server /]# ls /mnt/
10-autohint.conf      10-sub-pixel-bgr.conf  lost+found
10-no-sub-pixel.conf  10-sub-pixel-rgb.conf

Listo, ya hemos accedido a LVM en un fichero .img

 

 

 

Acceder a partición en .img

He estado montando 3 VM con RHEL6 para realizar diversas pruebas con ellas. Un ejemplo es el montar un PORTAL de TARGETS ISCSI con los dispositivos en ficheros img en vez de particiones físicas o volúmenes lógicos.
Hace poco un alumno me preguntó acerca de los datos en los dispositivos ISCSI, que si sería posible verlos dentro del servidor, a lo que respondí que sí pero que buscaría información al respecto.
Bueno pues ahí va:

[root@server ~]# fdisk -cul /targets/client1.img
  Debe establecer cilindros.
  Puede efectuar esta operación desde el menú de funciones adicionales.
Disco /targets/client1.img: 0 MB, 0 bytes
  7 heads, 4 sectors/track, 0 cylinders, 0 sectores en total
  Units = sectores of 1 * 512 = 512 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disk identifier: 0x57dbb67b
Disposit. Inicio               Comienzo      Fin             Bloques        Id       Sistema
/targets/client1.img1       2048             409599       203776         83      Linux

Con esto lo que hacemos es identificar la tabla de particiones del fichero de imagen para continuar seleccionando la partición que deseemos, que en mi caso sólo hay una.

Cogemos el sector de comienzo de la partición para realizar el montaje, pero como el comando mount va a esperar los datos en bytes, tendremos que multiplicar los sectores por los bytes que lo conforman. En mi caso estos datos son “Sector de comienzo: 2048” “Bytes por sector: 512”

[root@server ~]# mount -o loop,offset=$((2048*512)) /targets/client1.img /mnt/
[root@server ~]# ls -l /mnt/
total 16
drwx------. 2 root root 12288 dic 10 10:02 lost+found
-rw-r--r--. 1 root root     5 dic 10 10:03 try
-rw-r--r--. 1 root root     5 dic 10 10:07 try1

Y listo, aí podemos acceder a los datos de un TARGET ISCSI ofrecido por nuestro , PORTAL a un cliente quien ha particionado, formateado, montado y ha guardado datos en el dispostivo .img que le hemos ofrecido.