Mapeando partições em LVs LVM (kpartx)

Esta dica é especial para quem trabalha com virtualização (Xen/KVM), e faz muito uso de unidades lógicas LVM, mas não significa que não possa ser usada para outros fins …

Bom normalmente em ambientes de virtualização com XEN ou KVM utilizamos unidades lógicas LVM para servirem de disco para as VMs. Pois bem, isso leva a unidade LVM a ser formatada e particionada, tornando ela uma “mini fortaleza”, hehehe. Caso seja necessário visualizar e montar estas partições criadas na unidade lógica temos que mapea-las como device no S.O Linux. Para isso, podemos utilizar o comando kpartx, conforme sintaxe abaixo:kpartx -a /dev/NOME_VG/UNIDADE_LOGICA

Isso vai mapear e disponibilizar todas as partições desta unidade lógica para serem manipuladas a gosto… As partições, ficarão visíveis em /dev/mapper/UNIDADE_LOGICA1, /dev/mapper/UNIDADE_LOGICA2, /dev/mapper/UNIDADE_LOGICA3 e assim por diante.

Um exemplo rápido.

Criamos uma unidade lógica LVM com o nome cialinux:

[root@xen01 mapper]# lvcreate -L5G LVM -n cialinux
Logical volume “cialinux” created

Nela criamos 3 partições com o fdisk:

[root@xen01 mapper]# fdisk -l /dev/LVM/cialinux

Disk /dev/LVM/cialinux: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/LVM/cialinux1               1          13      104391   83  Linux
/dev/LVM/cialinux2              14          76      506047+  82  Linux swap / Solaris
/dev/LVM/cialinux3              77         652     4626720   83  Linux

Agora vamos mapear as partições que criamos para poder formata-las:

kpartx -a /dev/LVM/cialinux

Isso nos disponibiliza:

[root@xen01 mapper]# ls -l /dev/mapper/cialinux*
brw-rw—- 1 root disk 253,  8 Aug 23 14:05 /dev/mapper/cialinux1
brw-rw—- 1 root disk 253,  9 Aug 23 14:05 /dev/mapper/cialinux2
brw-rw—- 1 root disk 253, 10 Aug 23 14:05 /dev/mapper/cialinux3

Agora podemos fazer oque quiser com estas partições. Vamos criar um sistema de arquivos ext3 na partição 3, e depois monta-la em /mnt/cialinux:

[root@xen01 mapper]# mkfs.ext3 -v /dev/mapper/cialinux3

[root@xen01 mapper]# mount /dev/mapper/cialinux3 /mnt/cialinux/

E o resultado…

[root@xen01 mapper]# df -h /mnt/cialinux
Filesystem                                      Size  Used Avail Use% Mounted on
/dev/mapper/cialinux3             4.4G  137M  4.0G   4% /mnt/cialinux

Para retirarmos o mapeamento destas unidades, basta usar a opção -d do comando kpartx (com tas as partições desmontadas):

[root@xen01 mapper]# kpartx -d /dev/LVM/cialinux

Era isso pessoal. Abraços..!

Por: Franklin Moretti

4 thoughts on “Mapeando partições em LVs LVM (kpartx)

  1. E se a unidade LVM estiver dentro de um arquivão maquina_virtual.img por exemplo?

    Pelo que percebi, o ‘kpartx -a’ não consegue enchergar os lvs dentro do arquivo pra poder mapear em /dev e disponibilizar para montagem…

    Sabe se existe alguma forma ou algum comando lvm para fazer com que as partições LVM de dentro do arquivo fiquem disponível fora dele (na hospedeira)?

    Obs.: Eu utilizaria por exemplo, para poder fazer na própria hospedeira, um simples “fsck /dev/vg10/raiz”, sendo que esse vg10 fica dentro do arquivão que é o disco da VM…
    Sem essa funcionalidade, tive que bootar a VM com um live-cd em linux-single, dizendo que a VM tem um disco /storage/maquina_virtual.iso, e então fazer fsck na raiz do disco virtual.. resolveu, mas levou mais tempo pois tive que achar um live-cd, criar uma vm de teste com cdrom, com boot-sequence setado pra bootar pelo CD, esperar o live carregar.. etc…

  2. O mano velho, pelo que entendi, é uma unidade LVM dentro do Disco virtual de uma VM. O kpartx consegue enchergar a partição de uma unidade, porém no seu caso, pelo que entendi, é uma unidade lógica LVM dentro de um disco Virtual… Confeço que nunca necessitei dar um kpartx para um arquivão, somente para unidades lógicas LVM (gerenciadas pelo DOM0, não dentro de um outro arquivão). Como é uma situação inusitada, creio que a melhor opção foi mesmo esta de bootar com um RESCUE-CD live, “enchergar” o LV dentro da imagem do disco virtual, e realizar a manutenção necessária. Lembrando que o kpartx não mapeia somente unidades LVM, e sim qualquer partição presente em uma unidade de disco (nunca testei com arquivão).

    Abraços..!

    1. Na verdade o trabalho do kpartx é verificar a existencia de partições no disco informado, e criar os devices no sistema caso necessário. o Kpartx pode ser usado em um disco físico…

      O redimencionamento é um recurso do LVM, não do kpartx..

      Abraços..!

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *