LVM no Linux, o que é e como utilizar

Caso você já tenha passado por uma situação onde era necessária a repartição do seu HD (ou criação de link simbólico) por que sua partição estava cheia, nunca se perguntou “Poxa, como seria bom se eu pude-se apenas redimensionar as partições…”? Ou você tem um monte de HD sobrando de 80Gb e pensa: “Será que eu consigo juntar todos em um só ou tenho que ter uma partição/diretório para cada um deles e colocar meus dados bem separados?”, ou ainda, comprou aquele super ultra-hd de 320GB e quer trocar seu antigo HD de 80GB, mas pensa a mesma coisa, “Será que eu não consigo apenas juntar os dois?”. Pois bem, com o LVM você pode fazer tudo isso sem ter RAID via hardware (atenção LVM não é uma alternativa ao RAID, ele apenas apresenta algumas características similares), e muito mais (como clonagem de hd para backup, ou stripping por exemplo), vou mostrar em um sistema Slackware recem-instalado (não full-install, porém com as ferramentas necessárias que existem em praticamente todas as distribuições) como fazer um array de dados básico em um HD, e depois adicionar um HD para o mesmo array sem perder os dados.

Pré-requisitos

Últimamente a grande maioria dos sistemas Linux já possuem o LVM2 instalado por default, isso por que você pode fazer a sua partição /home em LVM por exemplo, mas caso a sua não possua, você deve instalar o LVM seguindos os passas apresentados na documentação oficial. Novamente reforço que isso será bem difícil de acontecer.

Vantagens/Desvantagens

Algumas vantagens que podemos listar:

  • Redimensionamento de partições em tempo real
  • Junção de várias partições em uma única
  • Junção de vários HDs para um grande espaço interno
  • Stripping
  • Criação de imagens de backup
  • Mirroring

Como desvantagens (nada é perfeito):

  • Acoplado ao Kernel (sem LVM para /boot por exemplo, e não recomendado fazer para /)
  • Acesso mais lento

Primeiros passos

Antes de mais nada devemos definir algumas nomenclaturas:

Volume Group (VG): É o grupo que contém o LVM em sí

Physical Volume (PV): O HD físico

Physical Extent (PE): Divisão de cada PV em chuncks (pedaços)

Logical Volume (LV): É o volume lógico que você pode utilizar (sua nova “partição”)

Logical Extent (LE): A divisão de cada LV em chuncks (pedaços)

O funcionamento pode ser demonstrado por esse ASCII art pego da documentação oficial:

+-- Volume Group --------------------------------+

| |

| +----------------------------------------+ |

| PV | PE | PE | PE | PE | PE | PE | PE | PE | |

| +----------------------------------------+ |

| . . . . |

| . . . . |

| +----------------------------------------+ |

| LV | LE | LE | LE | LE | LE | LE | LE | LE | |

| +----------------------------------------+ |

| . . . . |

| . . . . |

| +----------------------------------------+ |

| PV | PE | PE | PE | PE | PE | PE | PE | PE | |

| +----------------------------------------+ |

| |

+------------------------------------------------+

Utilização básica (array de dados)

Vamos lá então, LVM instalado e sabendo o que é cada nomenclatura, vamos inicializar o nosso Slackware e adicionar dois HDs de 1GB cada para criar uma partição lógica de 2GB (simples, sem stripping).

Inicialmente, precisamos rodar o comando vgscan, para que o sistema guarde as informações do LVM

root@Slackware:~# vgscan

Com Slackware inicializado e os HDs instalados, vamos particionar os mesmos, antes de mais nada vamos descobrir onde estão os HDs, caso você não saiba:

root@Slackware:~# fdisk -l

Disk /dev/hda: 8589 MB, 8589934592 bytes

16 heads, 63 sectors/track, 16644 cylinders

Units = cylinders of 1008 * 512 = 516096 bytes

Disk identifier: 0x9fc2e51d

Device Boot      Start         End      Blocks   Id  System

/dev/hda1               1        1041      524632+  82  Linux swap

Partition 1 does not end on cylinder boundary.

/dev/hda2            1042       16644     7863912   83  Linux

Partition 2 does not end on cylinder boundary.

Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x00000000

Disk /dev/sda doesn't contain a valid partition table

Page 1 of 3 | Next page