Linux Volume Manager (LVM)

De Eriberto Wiki
Ir para navegação Ir para pesquisar
ATENÇÃO: Grande parte deste artigo foi adaptado a partir do Capítulo 36 do Livro Descobrindo o Linux (2ª edição), de João Eriberto Mota Filho. Editora Novatec, ano 2007.

by (C) João Eriberto Mota Filho <eriberto (a) eriberto pro br>

Artigo criado em: 01 de maio de 2007.

Última atualização: veja o rodapé desta página.

Tiny URL ou bit.ly: http://tiny.cc/lvm



LVM é a abreviatura de Linux Volume Manager. O LVM é um recurso que permite criar volumes lógicos (uma espécie de particionamento virtual). Com o LVM é possível, por exemplo, criar mais de 15 "partições" em discos SCSI e SATA. Também é possível dizer que uma "partição" irá ocupar dois ou mais HDs.

O funcionamento do LVM

O LVM funciona com três elementos básicos: o PV (Physical Volume ou Volume Físico), o VG (Volume Group ou Agrupamento de Volumes) e o LV (Logical Volume ou Volume Lógico). O PV é o elemento que balizará a área do HD (ou dos HDs) que será utilizada com o LVM. O VG é uma subdivisão do PV. Funciona como uma partição estendida, que irá receber vários LV, que trabalham como se fossem partições lógicas. Poderemos ter vários PVs, VGs e LVs na mesma máquina.

A implementação do LVM

Pré-requisitos

Para criar volumes lógicos utilizando o LVM versão 2, será necessário ter uma partição do HD livre para poder receber volumes lógicos. Essa partição deverá estar criada (exemplo: /dev/hda5), mas não precisará estar formatada.

Instalação do LVM2

# apt-get install lvm2

Criação dos volumes físicos (PV)

Com a partição que receberá os volumes lógicos desmontada, crie um volume físico (PV) com o seguinte comando (considerando que tal partição seja a /dev/hda5):

# pvcreate /dev/hda5

Para ver o PV criado, utilize o comando:

# pvs

Criação dos agrupamentos de volumes (VG)

A seguir, crie um agrupamento de volumes (VG), denominado teste, com o comando:

# vgcreate teste /dev/hda5

Se você tivesse criado um PV em /dev/hda5 e outro em /dev/hdc2 (partição em outro HD), você poderia unir os dois em um só VG, com o comando:

# vgcreate teste /dev/hda5 /dev/hdc2
IMPORTANTE: A qualquer momento você poderá acrescer ou retirar uma PV de um VG.

Para ver o VG criado, utilize o comando:

# vgs

Criação dos volumes lógicos (LV)

Para criar um volume lógico com 200 MB, com o nome de documentos, dentro do VG teste, utilize o seguinte comando:

# lvcreate -L200M -n documentos teste

Para ver o volume criado, utilize o comando:

# lvs

Para criar um volume com GB (gigabyte) de tamanho, utilize G. Exemplo: 2G. Para MB, utilize M e assim por diante. Caso deseje criar um volume com tamanho com valor fracionário, utilize vírgula. Exemplo: 5,5G.

Caso deseje criar um volume lógico que ocupe todo o espaço livre do VG, inicialmente, emita o comando:

# vgdisplay

Procure pela linha Free PE / Size. Nesta linha aparecerá o número de extents (algo como blocos) livres. Exemplo:

Free  PE / Size    114788 / 448,39 GB

A seguir, considerando o valor 114788, emita o comando:

# lvcreate -l114788 -n documentos teste

A utilização dos volumes lógicos

Para serem utilizados, cada um dos volumes lógicos deverá ser formatado. Quando geramos o VG chamado teste, foi criado automaticamente o diretório /dev/teste. Quando criamos o LV documentos, foi criado o arquivo /dev/teste/documentos. Ou seja, a partir de agora poderemos formatar o dispositivo /dev/teste/documentos, como se fosse uma partição comum, como /dev/hda1. Exemplo:

# mkfs.reiserfs /dev/teste/documentos

Finalmente, monte o volume lógico em algum diretório para poder utilizá-lo. Exemplo:

# mkdir /docs
# mount /dev/teste/documentos /docs
# df -h

Adição de PVs ao VG

Agora, vamos criar um PV em /dev/hdc2 e vamos adicioná-lo ao VG teste. Inicialmente, vamos criar o PV:

# pvcreate /dev/hdc2

A seguir, vamos criar um VG, denominado teste2, dentro do novo PV:

# vgcreate teste2 /dev/hdc2

Por último, vamos inserir teste2 no fim de teste. Note que há uma ordem para os nomes dos VGs a serem colocados no comando. Primeiro virá o nome que irá vigorar após a junção. Veja o comando:

# vgmerge teste teste2

Ou seja: teste2 será inserido no fim de teste e o nome final da junção será teste. Não se esqueça que, anteriormente, criamos um filesystem dentro do volume lógico. Se o volume lógico aumentar de tamanho, o filesystem também terá que sofrer um aumento. Cada filesystem possui um comando para fazer isso. Para o ReiserFS, por exemplo, veja o manual on-line do comando resize_reiserfs. Nada impede que você faça um backup dos dados e, simplesmente, formate novamente o volume lógico.

Removendo volumes lógicos

As remoções deverão ser feitas de trás para frente. Ou seja: se você criou um PV, em seguida um VG e em seguida um LV, você deverá remover o LV, para depois remover o VG, para depois remover o PV. Vamos remover todos os elementos criados até agora. Inicialmente, deveremos desmontar os LVs montados. Para isso, execute:

# df -h

Um dos resultados será:

/dev/mapper/teste-documentos 200M 33M 168M 17% /docs

Então, desmonte o volume com o comando:

# umount /docs

A seguir, liste os volumes para descobrir quais são eles:

# lvs

LV VG Attr LSize Origin Snap% Move Log Copy%
documentos teste -wi-a- 200,00M

Em seguida, remova o LV, utilizando a referência VG/LV:

# lvremove teste/documentos

Agora liste os VGs e remova-os:

# vgs
VG #PV #LV #SN Attr VSize VFree
teste 2 0 0 wz--n- 11,68G 11,68G

# vgremove teste

Faça o mesmo com os PVs:

# pvs
PV VG Fmt Attr PSize PFree
/dev/hda5 lvm2 -- 9,32G 9,32G
/dev/hdc2 lvm2 -- 2,37G 2,37G
# pvremove /dev/hda5 /dev/hdc2

Com essas ações, toda a estrutura de volumes lógicos foi removida.

Outras possibilidades de comandos com o LVM

Existem diversas possibilidades para a manipulação de volumes lógicos. O comando # lvm help mostrará um resumo de todos as opções. É possível, por exemplo, renomear os volumes lógicos (LV) ou os VGs. Também é possível fazer um backup das configurações.

lvm help
 Available lvm commands:
 Use 'lvm help <command>' for more information

 dumpconfig      Dump active configuration
 formats         List available metadata formats
 help            Display help for commands
 lvchange        Change the attributes of logical volume(s)
 lvcreate        Create a logical volume
 lvdisplay       Display information about a logical volume
 lvextend        Add space to a logical volume
 lvmchange       With the device mapper, this is obsolete and does nothing.
 lvmdiskscan     List devices that may be used as physical volumes
 lvmsadc         Collect activity data
 lvmsar          Create activity report
 lvreduce        Reduce the size of a logical volume
 lvremove        Remove logical volume(s) from the system
 lvrename        Rename a logical volume
 lvresize        Resize a logical volume
 lvs             Display information about logical volumes
 lvscan          List all logical volumes in all volume groups
 pvchange        Change attributes of physical volume(s)
 pvcreate        Initialize physical volume(s) for use by LVM
 pvdata          Display the on-disk metadata for physical volume(s)
 pvdisplay       Display various attributes of physical volume(s)
 pvmove          Move extents from one physical volume to another
 pvremove        Remove LVM label(s) from physical volume(s)
 pvs             Display information about physical volumes
 pvscan          List all physical volumes
 segtypes        List available segment types
 vgcfgbackup     Backup volume group configuration(s)
 vgcfgrestore    Restore volume group configuration
 vgchange        Change volume group attributes
 vgck            Check the consistency of volume group(s)
 vgconvert       Change volume group metadata format
 vgcreate        Create a volume group
 vgdisplay       Display volume group information
 vgexport        Unregister volume group(s) from the system
 vgextend        Add physical volumes to a volume group
 vgimport        Register exported volume group with system
 vgmerge         Merge volume groups
 vgmknodes       Create the special files for volume group devices in /dev
 vgreduce        Remove physical volume(s) from a volume group
 vgremove        Remove volume group(s)
 vgrename        Rename a volume group
 vgs             Display information about volume groups
 vgscan          Search for all volume groups
 vgsplit         Move physical volumes into a new volume group
 version         Display software and driver version information

Checagem e correção do filesystem nos volumes lógicos

A checagem de filesystem nos volumes lógicos poderá ser realizada normalmente. Para tanto, considerando um filesystem ReiserFS, com o volume lógico fora do ar (e a sua partição desmontada), utilize o comando:

# reiserfsck /dev/<volume lógico>

Exemplo:

# reiserfsck /dev/vm/vm1.raiz

Utilize o comando de checagem específico para cada tipo de filesystem.

Links externos


Fonte original


Comentários, sugestões e controle de acessos

Por favor, deixe os seus comentários e sugestões sobre este artigo no meu Blog Técnico. Para isto, clique aqui.


<absHTML>

<a href="http://www2.clustrmaps.com/counter/maps.php?url=http://www.eriberto.pro.br/wiki/index.php?title=lvm" id="clustrMapsLink"><img src="http://www2.clustrmaps.com/counter/index2.php?url=http://www.eriberto.pro.br/wiki/index.php?title=lvm" /> </a>


Consulte também o contador abaixo, iniciado em 01 mai. 07, além do gráfico acima.

</absHTML>