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