LVM (Logical Volume Manager)

Publicado por Evandro Figueiredo de Oliveira em 03/05/2013

[ Hits: 72.666 ]

 


LVM (Logical Volume Manager)



Introdução

O LVM (Logical Volume Manager) é um recurso incluído no kernel Linux a partir da versão 2.4, que cria uma camada de abstração entre o sistema operacional e os HDs.

Imagine que, no LVM, o sistema não vê HDs e partições, mas um ou mais volumes lógicos. Cada volume se comporta como se fosse uma partição, que é formatada e montada da forma usual.

Estes volumes são agrupados em um grupo de volumes lógicos (Logical Volume Group) que se comporta de forma similar a um HD.

O grupo de volumes lógicos pode combinar o espaço de vários HDs e ser modificados conforme necessário, incorporando mais HDs. Os volumes lógicos dentro dele, também podem ser redimensionados livremente, conforme for necessário.

Exemplo: se você precisa de mais espaço dentro do volume referente à pasta "/home", por exemplo, você poderia reduzir o tamanho de um dos outros volumes do sistema (que estivesse com espaço vago*) e aumentar o tamanho do volume referente ao /home, tudo isso com o servidor operante.

* Dica: não reduzir para um tamanho menor do que esteja em uso, caso isso aconteça, você perderá seus dados.
Linux: LVM (Logical Volume Manager)

Logical Volume Manager

É importante enfatizar que o LVM é apenas uma mudança na forma como o sistema acessa os discos, ele não é um substituto para o RAID.

No LVM, você pode agrupar vários HDs em um único grupo de volumes lógicos, mas se um dos HDs apresentar defeito, o servidor ficará inoperante e você perderá os dados armazenados no disco afetado; diferente do RAID, onde você pode sacrificar parte do espaço para ter uma camada de redundância.

Baseado em: Entendendo o LVM - Dicas

Instalação (PV, GV, LV)

No ambiente para esta dica, digamos que vamos criar um LVM adicionando 100 GB. E este disco será o "/dev/sdb1" (este "device/partição" é apenas um exemplo, poderia ser "sdc1", "sdd1", etc).

Vamos instalar o LVM2, o software que irá gerenciar os discos LVM.

Em distribuições baseadas no Debian, execute:

# apt-get install lvm2

Inserindo o disco ao LVM:: Physical Volumes (PV):

# pvcreate /dev/sdb1

Este comando deve retornar:
Physical volume "/dev/sdb1"    successfully created

Para visualizar o disco adicionado, usamos o comando pv ou pvscan:

# pvscan
PV /dev/sdb1                   lvm2 [100,00 GiB]
Total: 1 [100,00 GiB] / in use: 0 [0   ] / in no VG: 1 [100,00 GiB]


# pvs
  PV                  VG        Fmt       Attr       PSize          PFree
/dev/sdb1            lvm2        a-      100,00g    100,00g


Acima, podemos observar que o PV lista o device (/dev/sdb1), mas ainda é preciso criar o VG (Volume Group).

Volume Group (VG)

É preciso dar um nome para o VG, com o comando:

# vgcreate nome_do_vg pv_device

Vamos criá-lo:

# vgcreate dados /dev/sdb1
Volume group "dados" successfully created


Logical Volumes (LV)

# lvcreate -L size -n nome_do_lv nome_do_vg

Onde:
  • -L :: Tamanho do volume logical
  • -n :: Nome do LV

Exemplo:

# lvcreate -L 100G -n cliente_x dados
Rounding up size to full physical extent 100,00 GiB
Logical volume "cliente_x"  created


Para visualizar o LV, usado o lvs ou lvscan:

# lvs
LV             VG        Attr   LSize
cliente_x     dados     -wi-a    100g


Com o lvscan podemos ver ser o LV esta ativo ou não:

# lvscan
ACTIVE            "/dev/dados/cliente_x" [100 GiB] inherit


Após a criação do PV, VG e LV, precisamos formatar este disco novo:

# mkfs.ext4 /dev/samba_vg/samba_lv

Vamos montar o LV criado no servidor:

# mkdir /Arquivos
# mount /dev/mapper/dados-cliente_x /Arquivos


Visualizar o conteúdo dos sistemas de arquivos:

# df -h
Sist. Arq.                   Size  Used  Avail  Use%   Mounted on
/dev/sda1                    77G   800M    73G    2%   /
tmpfs                        61M      0    61M    0%   /lib/init/rw
udev                         57M   164K    57M    1%   /dev
tmpfs                        61M      0    61M    0%   /dev/shm
/dev/mapper/dados-cliente_x  100G    0M   100G    0%   /Arquivos


fstab

Configurando o fstab para quando iniciar a máquina, o volume já estiver montado.

Acrescentar na última linha do arquivo "/etc/fstab":

/dev/mapper/dados-cliente_x  /Arquivos   ext4    defaults    0    0


Exemplo:

# /etc/fstab: static file system information.
#
# Use "blkid" to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system>                              <mount point>      <type>         <options>         <dump>    <pass>
proc                                            /proc            proc          defaults             0        0
# / was on /dev/sda1 during installation
UUID=31688aa8-a395-498a-bb10-524839a97665       /                ext3          errors=remount-ro    0        1
# swap was on /dev/sda5 during installation
UUID=e4e960af-85b4-4453-96be-fb6590edbb95       none             swap          sw                   0        0
/dev/scd0                                       /media/cdrom0    udf,iso9660   user,noauto          0        0
/dev/mapper/dados-cliente_x                     /Arquivos        ext4          defaults             0        0


O LV (/dev/mappar/dados-cliente_x) será montado em "/Arquivos", e o sistema de arquivos está no formato ext4.

Valeu pessoal, espero ter ajudado.

Dica também publicada em: LVM (Logical Virtual Manager) « evandrofigueiredo.valogexpress.com.br

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Guia de instalação do Arch Linux

Algumas dicas para novatos

Epsxe de forma simples

Squid com Delay Pool + Dansguardian

Criando swap em arquivo

  

Comentários
[1] Comentário enviado por phoemur em 03/05/2013 - 23:38h

muito boa a sua dica

[2] Comentário enviado por xgrind em 04/05/2013 - 12:32h

Tenho 4 partições: / , /home, swap e ntfs. As 4 estão como partição primária, mas gostaria de redimensionar a / porque não sei qual motivo deixei 40Gb ;x

Quando criei as partições, eu não criei como LVM. Tem como eu alterar agora? Será que perco as coisas que tenho?

[3] Comentário enviado por vandomen em 05/05/2013 - 17:19h

Olá xgrind, infelizmente não conheço uma forma de você redimencionar suas partições sem ter criado o LVM na instalação do Linux. Isto já aconteceu comigo, o que fiz foi adicionar um disco, e montei o meu /var no meu disco novo, isto me liberou 50% do / .. foi uma saída. Ou então você pode apagar alguns logs para liberar espaço, ou usar o apt-get clean se for Debian/Ubuntu para limpar o diretório de download (/var/cache/apt/archives). Flw, boa sorte.

[4] Comentário enviado por daniel goes em 15/08/2013 - 19:08h

Estou configurando um servidor com 1Tera de HD (Raid1), fiz a instalação e configuração sem usar o LVM, usei ext4. Uso o CentOS6.4. É recomendado excluir e refazer usando o LVM?

[5] Comentário enviado por vandomen em 15/08/2013 - 19:37h

Ola Daniel Goes, em ambiente corporativo, LVM mesmo que você não use para gerenciar os volumes, É BOM TER! Por quê assim, você vai atender com falicidade a demanda futura, principalmente se seu Server for um Filers (servidor de arquivos). Se for possível, você reinstalar, eu faria isso. Abraços

[6] Comentário enviado por yros em 30/09/2013 - 21:56h

Muito bom brother ... parabens mano .. sucesso ...

[7] Comentário enviado por sampaloid em 23/01/2014 - 09:41h

Saudações! excelente how to!

Mas preciso de uma ajudinha ... tenho apenas acesso remoto e preciso saber quais são os discos fisicos... e se estão ou não em raid... :( - Pra completar não tenho acesso via IDRAC

Disk /dev/sda: 146.1 GB, 146163105792 bytes
47 heads, 36 sectors/track, 168720 cylinders
Units = cylinders of 1692 * 512 = 866304 bytes

Device Boot Start End Blocks Id System
/dev/sda1 2 243 204732 de Dell Utility
/dev/sda2 244 6441 5243508 8e Linux LVM
/dev/sda3 * 6442 6683 204732 83 Linux
/dev/sda4 6684 168720 137083302 5 Extended
/dev/sda5 6684 168720 137083284 8e Linux LVM
[root@XXX]# pvscan
PV /dev/sda5 VG VolGroup00 lvm2 [130.72 GB / 0 free]
PV /dev/sda2 VG VolGroup00 lvm2 [5.00 GB / 0 free]
Total: 2 [135.72 GB] / in use: 2 [135.72 GB] / in no VG: 0 [0 ]


Desde já agradeço !
Sampa

[8] Comentário enviado por vandomen em 24/01/2014 - 11:06h


[7] Comentário enviado por sampaloid em 23/01/2014 - 09:41h:

Saudações! excelente how to!

Mas preciso de uma ajudinha ... tenho apenas acesso remoto e preciso saber quais são os discos fisicos... e se estão ou não em raid... :( - Pra completar não tenho acesso via IDRAC

Disk /dev/sda: 146.1 GB, 146163105792 bytes
47 heads, 36 sectors/track, 168720 cylinders
Units = cylinders of 1692 * 512 = 866304 bytes

Device Boot Start End Blocks Id System
/dev/sda1 2 243 204732 de Dell Utility
/dev/sda2 244 6441 5243508 8e Linux LVM
/dev/sda3 * 6442 6683 204732 83 Linux
/dev/sda4 6684 168720 137083302 5 Extended
/dev/sda5 6684 168720 137083284 8e Linux LVM
[root@XXX]# pvscan
PV /dev/sda5 VG VolGroup00 lvm2 [130.72 GB / 0 free]
PV /dev/sda2 VG VolGroup00 lvm2 [5.00 GB / 0 free]
Total: 2 [135.72 GB] / in use: 2 [135.72 GB] / in no VG: 0 [0 ]


Desde já agradeço !
Sampa


Ola Sampa,

Provavelmente se tiver RAID a nível de hardware, você consegue verificar na hora do boot, pela controladora. Mas como esta acessando remoto, achei um link que pode te ajudar a checkar o RAID na controladora: http://www.cyberciti.biz/faq/linux-checking-sas-sata-disks-behind-adaptec-raid-controllers/

Se tiver RAID a nível de software, pode checar com #raiddev /dev/md0 ou #cat /proc/mdstat ou #mdadm --detail /dev/md0
Pelo jeito, você tem apenas 1 disco (sda), pode checkar com #fdisk -l
Neste disco parece que esta com 5 partições, pode checkar com #cat /proc/partitions

Espero ter ajudado!
Abs.


[9] Comentário enviado por hugobcar em 01/04/2014 - 10:06h

Bom dia.

Tem algum motivo de eu particionar um disco para incluir ele no LVM ? Não posso apenas incluir o disco inteiro /dev/sda ao invés de particioná-lo /dev/sda1 para incluir no LVM ?

Pergunto isso porque sempre adiciono o disco inteiro sem particioná-lo, e sempre vejo o pessoal particionando mesmo que tenha apenas uma partição o disco.



Att,
Hugo

[10] Comentário enviado por yros em 01/04/2014 - 12:00h

Oi,

Com o particionamento voce consegue criar diferentes PVs, e adicioná-los a diferentes VGs.

Espero ter ajudado.




[11] Comentário enviado por hugobcar em 02/04/2014 - 17:16h

Boa tarde, yros.

Concordo com voce, mas no caso que mencionei onde e utilizado todo o disco, nao faz sentido fazer particionamentos. Nesse caso poderia apontar o disco inteiro. De qualquer forma, mesmo que utilize o disco inteiro, sempre vejo o pessoal particionando, por isso da duvida.


Att,

[12] Comentário enviado por pattyladislau em 27/08/2014 - 11:08h

Cara obrigada! Ajudou bastante em um procedimento na minha empresa!

[13] Comentário enviado por vandomen em 23/10/2014 - 19:25h


[12] Comentário enviado por pattyladislau em 27/08/2014 - 11:08h:

Cara obrigada! Ajudou bastante em um procedimento na minha empresa!


Patty, fico feliz em ter ajudado!
#vivaolinux

[14] Comentário enviado por AprendiNoLinux em 20/12/2014 - 15:26h

Fantástico artigo mas o debilóide atrás do teclado não consegue reduzir as partições LVM para colocar outras....


[code]
comando: [i][b]lvsan[/b][/i]

ACTIVE '/dev/ubuntu-vg/root' [293,90 GiB] inherit
ACTIVE '/dev/ubuntu-vg/swap_1' [3,93 GiB] inherit
[/code]

Hoje está definida para a raiz apenas e para swap.
Queria definir um tamanhos para:

/home
/var
/usr

Motivo: Utilizar outras distribuições em paralelo.

[15] Comentário enviado por jfernandes em 23/12/2014 - 22:28h

Amigo,
Muito obrigado pelo seu tempo em desenvolver esse post, muito útil pra mim, fiz e deu tudo certo, agora vou praticar mais, dar uma olhada em outras distribuições.

Valeu mesmo.

[16] Comentário enviado por vandomen em 19/06/2015 - 12:58h


[4] Comentário enviado por daniel goes em 15/08/2013 - 19:08h

Estou configurando um servidor com 1Tera de HD (Raid1), fiz a instalação e configuração sem usar o LVM, usei ext4. Uso o CentOS6.4. É recomendado excluir e refazer usando o LVM?


Ola Daniel Goes, em ambiente corporativo, LVM mesmo que você não use para gerenciar os volumes, É BOM TER! Por quê assim, você vai atender com falicidade a demanda futura, principalmente se seu Server for um Filers (servidor de arquivos). Se for possível, você reinstalar, eu faria isso. Abraços

[17] Comentário enviado por rasec_lc em 09/06/2016 - 06:15h

Agradeço se puder me ajudar a resolver esse problema.

Eu precisei reinstalar o sistema e o disco que tenho meus dados esta em formato LVM2.
Após instalar novamente o sistema "Ubuntu Server 16.4, observei que as unidades não foram montadas, como as demais que estavam em EXT4.

Segui a instruções conforme este link:
https://quonn.wordpress.com/2010/12/01/how-to-mount-lvm-partition-on-ubuntu/

Tudo correu bem até o ponto do comando: "vgchange -a y"
Observei que todos os exemplos mostravam "logical volume" com 1 ou 2
Mas no meu caso apresenta: "0 logical volume(s) in volume group “BackUp” now active"

Após isto, quando sigo e executo o comando: "lvscan" , nada aparece, disponiblizando o cursor para novos comandos na linha debaixo.

Não consigo completar a instrução para montar o LVM.

O que posso fazer para montar estas unidades?
Ou ao menos, uma forma de acessar os dados para backup.

Agradeço imensamente a ajuda de vocês...


[18] Comentário enviado por guilessa em 22/08/2018 - 15:00h

Olá, consegui realizar as configurações, porém estou tendo problemas com a configuração do fstab.
Ao reiniciar a máquina, o linux não conclui a inicialização. Para na tela de Ctrl + D para continuar ou logar como root.
O erro no log de inicialização é o seguinte:
Timeout waiting for device "/dev/mapper/dados-cliente_x" (meu caminho);
Dependencie failed for /<meudiretório>
Dependencie failed for local filesystem

Poderia me ajudar?

[19] Comentário enviado por vandomen em 22/08/2018 - 15:23h


[18] Comentário enviado por guilessa em 22/08/2018 - 15:00h

Olá, consegui realizar as configurações, porém estou tendo problemas com a configuração do fstab.
Ao reiniciar a máquina, o linux não conclui a inicialização. Para na tela de Ctrl + D para continuar ou logar como root.
O erro no log de inicialização é o seguinte:
Timeout waiting for device "/dev/mapper/dados-cliente_x" (meu caminho);
Dependencie failed for /&lt;meudiretório&gt;
Dependencie failed for local filesystem

Poderia me ajudar?


Olá guilessa,

Parece que declarou o /etc/fstab errado, segue exemplo:

/dev/mapper/dados-cliente_x /path_onde_vai_montar_volumer ext4 defaults 0 0

OU

/dev/vg/lv /path_onde_vai_montar_volumer ext4 defaults 0 0


Espero ter ajudado!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts