Home > Server > Montare la partizione LVM di una VM guest in XenServer 5.6 SP2

Montare la partizione LVM di una VM guest in XenServer 5.6 SP2

Montare la partizione di una VM  ospite così da poter interagire con il file system recuperando eventualmente alcuni file. Il metodo sfrutta il fatto che Dom0 ( host machine ) si comporta come una VM quindi è possibile per la disk image virtuale (VDI) di una VM creare una nuovo VDB e quindi connettere la VDI all’host. LO stesso metodo è usato quando una VDI viene connessa a qualsiasi altro guest.

Glossario

dom0  = dominio privilegiato.  E’  la Virtual Machine (VM) creata dall’Hypervisor di XenServe al boot. Il dominio privilegiato è  l’unico che ha accesso diretto all hardware e che si occupa di lanciare le altre VM .
domU = dominio non privilegiato .  Tutte le altre istanze di macchina virtuale (VM) in esecuzione diverse da dom0  sono dominioU:  viene creato un distinto dominio per ogni istanza.
Host:  la machine che esegure XenServer
Guest: una Virtual Machine  eeeguita dentro XenServer.
VM : Virtual Machine, in XenServer è identificata da uno specifico uuid è ospitata in una Virtual Disk Image con un proprio vdi-uuid ed è connessa al dom0 grazie a un VBD con un suo vdb-uuid.
VDI:  Virtual Disk Image, un immagine o file che rappresenta un hard disk virtual.
VDB: Virtual Block Device, un modo per connettere una VDI a una virtual machine
UUID: Universally unique identifier. Una stringa di caratteri che XenServer, in this case, per idenficare in modo univoco un particolare oggetto. You can read more at http://en.wikipedia.org/wiki/UUID

Montaggio della partizione LVM di una VM

Dalla console di XenServer host (dom0) ricerchiamo l’UUID della stessa Dom0 VM:

xe vm-list | grep -B 1 -e Control
[root@localhost ~]#  xe vm-list | grep -B 1 -e Control
uuid ( RO)           : bddad094-84a3-49ef-89c9-8f26fe88200d
     name-label ( RW): Control domain on host: xenserver-jlvuukyx

Dalla console di XenServer host (dom0) ricerchiamo l’UUID del VDI della VM alla quale dobbiamo accedere. Esistono più metodi questo consente di ottenere il VBD e il VDI della specifica VM

xe vm-list name-label=<vm-name>
o
 xe vm-disk-list uuid=<vm-uuid>
[root@localhost ~]# xe vbd-list vm-name-label="Ubuntu Precise Pangolin 12.04 (64-bit)] (1)"
uuid ( RO)             : fc7be39f-661a-4efb-52ba-dba755c944c0   (VBD)
          vm-uuid ( RO): f09353ee-f7bd-3825-5fb2-6e97cfb7356a    
    vm-name-label ( RO): Ubuntu Precise Pangolin 12.04 (64-bit)] (1)
         vdi-uuid ( RO): ecc801e0-f24c-4b31-a391-2e10bc9baeeb
            empty ( RO): false
           device ( RO): xvda

uuid ( RO)             : 6dbe9231-c24a-f736-7b8e-0446509184e4    
          vm-uuid ( RO): f09353ee-f7bd-3825-5fb2-6e97cfb7356a
    vm-name-label ( RO): Ubuntu Precise Pangolin 12.04 (64-bit)] (1)
         vdi-uuid ( RO): 
            empty ( RO): true
           device ( RO): xvdd

o

[root@localhost ~]#  xe vm-disk-list uuid=f09353ee-f7bd-3825-5fb2-6e97cfb7356a
Disk 0 VBD:
uuid ( RO)             : fc7be39f-661a-4efb-52ba-dba755c944c0
    vm-name-label ( RO): Ubuntu Precise Pangolin 12.04 (64-bit)] (1)
       userdevice ( RW): 0

Disk 0 VDI:
uuid ( RO)             : ecc801e0-f24c-4b31-a391-2e10bc9baeeb
       name-label ( RW): Ubuntu Precise Pangolin 12.04 (64-bit)] (1) 0
    sr-name-label ( RO): Local storage
     virtual-size ( RO): 8589934592

Creiamo un nuovo VBD per il virtual disk (VDI) della VM guest in oggetto. Il comando ritornera l’uuid del VBD creato.

xe vbd-create device=0 vm-uuid=<uuid-dom0>  vdi-uuid=<uuid-vm-disk>
[root@localhost]# xe vbd-create vm-uuid=bddad094-84a3-49ef-89c9-8f26fe88200d vdi-uuid=ecc801e0-f24c-4b31-a391-2e10bc9baeeb device=autodetect 
4e55fd78-d367-ccc0-dfc8-f06557080217

attacchiamo a dom0 il VDI grazie al nuovo VBD

xe vbd-plug uuid=uuid-del-nuovo-vbd
xe vbd-plug uuid=4e55fd78-d367-ccc0-dfc8-f06557080217

A questo punto dovrebbe già essere possibile il mount delle partizioni del VDI.
( In alternativa continuare con il device mapping vedi sotto )
Con fdisk -l sarà possibile visualizzare le partizioni del device /dev/xvdc
che potranno essere montate in modo classico con mount

[root@localhost ~]# fdisk -l
....
....
Partition table entries are not in disk order

Disk /dev/xvdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdc1   *           1          32      248832   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/xvdc2              32        1045     8136705    5  Extended
/dev/xvdc5             980        1045      522240   82  Linux swap / Solaris
/dev/xvdc6              32         980     7614464   83  Linux

Partition table entries are not in disk order

con blkid

....
/dev/xvdc1: UUID="35541399-3d95-4062-a01f-4a4e422a923a" TYPE="ext4" 
/dev/xvdc5: TYPE="swap" UUID="a0e6a65f-7bb4-4fc8-9552-ced71d1605f3" 
/dev/xvdc6: UUID="dd26435b-c609-45ae-b474-bffc88350a14" TYPE="ext4"

Montaggio ad esempio

mkdir /tmp/c-boot
mkdir /mnt/c-root
mount /dev/xvdc1  /mnt/c-boot
mount /dev/xvdc6  /mnt/c-root

Per analizzare la situazione delle partizioni in gioco utilizzare i comandi

fdisk -l 
df -a
blkid

Ripristino condizione iniziale

Terminata l’azione sul file system bisogna ripristino delle condizioni iniziali diversamente la VM non può essere avviata.

Smontare i volumi logici con

umount /tmp/c-boot
umount /tmp/c-root

controllare l’esistenza di ulteriori punti di mount con

  df -a

disconnettere il VBD

xe vbd-unplug uuid=VBD-uuid
[root@localhost /]# xe vbd-unplug uuid=4e55fd78-d367-ccc0-dfc8-f06557080217

Eliminare il VBD

xe vbd-destroy uuid=VBD-uuid
[root@localhost /]# xe vbd-destroy uuid=4e55fd78-d367-ccc0-dfc8-f06557080217

Aternativa: continuare con il device mapping

Per confermare che il device creato (xvdc)

[root@localhost tmp]# xe vbd-list uuid=4e55fd78-d367-ccc0-dfc8-f06557080217 params=device --minimal
xvdc

Quindi utilizziamo kpartx per effettuare il mounting delle partizioni del disco virtuale (VDI)

kpartx -a /dev/xvda
root@localhost /]# kpartx /dev/xvdc 
xvdc1 : 0 497664 /dev/xvdc 2048
xvdc5 : 0 1044480 /dev/xvdc 15730688
xvdc6 : 0 15228928 /dev/xvdc 501760

Effettuare lo scan dei volumi fisici :
# pvscan

[root@localhost /]# pvscan
  PV /dev/sda3   VG VG_XenStorage-2963fe01-920a-b067-6880-3dcff67dea31   lvm2 [923.86 GB / 34.55 GB free]
  Total: 1 [923.86 GB] / in use: 1 [923.86 GB] / in no VG: 0 [0   ]

Attivare il volume group con:
vgchange -ay VG-name

 vgchange -ay VG_XenStorage-2963fe01-920a-b067-6880-3dcff67dea31

Montare il volume logico con i files ai quali si desidera accedere:

mount /dev/VG-name/LV-name  /tmp/mnt/

A questo punto è possibile accedere ai files in libertà.

Terminata l’azione sui files ricordarsi di ripristare la situaizone iniziale diversamente la Vm non può essere avviata. Allla procedura evidenziata sopra va aggiunta sola la rimozione del device mapping. Quindi evindeziando tutti i passaggi:

Smontare i volumi logici con

umount /tmp/c-boot
umount /tmp/c-root

controllare l’esistenza di ulteriori punti di mount con

 
df -a

se è stato fatto il device mapping rimuoverlo con

kpartx -d /dev/xvdc

sconnetere il VBD

xe vbd-unplug uuid=VBD-uuid

Eliminare il VBD

xe vbd-destroy uuid=VBD-uuid

ATTENZIONE

Prima di riprendere la normale attività e bene sempre controllare ancora una volta
l’esistenza di VBD facenti capo al dom0 con

xe vbd-list  uuid = uuid_dom0

se esistono ancora VBD non previsti procedere con l’unplug e il destroy del vbd come precisato sopra

 

Altre risorse nle blog:

 

Annunci
  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: