Pesquisa de site

LFCS: Como gerenciar e criar LVM usando os comandos vgcreate, lvcreate e lvextend - Parte 11


Devido às mudanças nos requisitos do exame LFCS em vigor em fevereiro. 2 de fevereiro de 2016, estamos adicionando os tópicos necessários à série LFCS publicada aqui. Para se preparar para este exame, é altamente recomendável usar a série LFCE também.

Uma das decisões mais importantes ao instalar um sistema Linux é a quantidade de espaço de armazenamento a ser alocado para arquivos do sistema, diretórios pessoais e outros. Se você cometer um erro nesse ponto, aumentar uma partição que ficou sem espaço pode ser trabalhoso e um tanto arriscado.

O Gerenciamento de Volumes Lógicos (também conhecido como LVM), que se tornou um padrão para a instalação da maioria (se não de todas) das distribuições Linux, tem inúmeras vantagens sobre o gerenciamento de particionamento tradicional. Talvez a característica mais distintiva do LVM seja que ele permite que divisões lógicas sejam redimensionadas (reduzidas ou aumentadas) à vontade, sem muitos problemas.

A estrutura do LVM consiste em:

  1. Um ou mais discos rígidos ou partições inteiros são configurados como volumes físicos (PVs).
  2. Um grupo de volumes (VG) é criado usando um ou mais volumes físicos. Você pode pensar em um grupo de volumes como uma única unidade de armazenamento.
  3. Vários volumes lógicos podem então ser criados em um grupo de volumes. Cada volume lógico é equivalente a uma partição tradicional – com a vantagem de poder ser redimensionado à vontade, como mencionamos anteriormente.

Neste artigo usaremos três discos de 8 GB cada (/dev/sdb, /dev/sdc e /dev /sdd) para criar três volumes físicos. Você pode criar os PVs diretamente no dispositivo ou particioná-lo primeiro.

Embora tenhamos optado pelo primeiro método, se você decidir pelo segundo (conforme explicado na Parte 4 – Criar partições e sistemas de arquivos no Linux desta série), certifique-se de configurar cada partição como tipo 8e.

Criando volumes físicos, grupos de volumes e volumes lógicos

Para criar volumes físicos sobre /dev/sdb, /dev/sdc e /dev/sdd, faça:

pvcreate /dev/sdb /dev/sdc /dev/sdd

Você pode listar os PVs recém-criados com:

pvs

e obtenha informações detalhadas sobre cada PV com:

pvdisplay /dev/sdX

(onde X é b, c ou d)

Se você omitir /dev/sdX como parâmetro, você obterá informações sobre todos os PVs.

Para criar um grupo de volumes chamado vg00 usando /dev/sdb e /dev/sdc (salvaremos /dev/sdd para ilustrar posteriormente a possibilidade de adicionar outros dispositivos para expandir a capacidade de armazenamento quando necessário):

vgcreate vg00 /dev/sdb /dev/sdc

Assim como foi o caso dos volumes físicos, você também pode visualizar informações sobre este grupo de volumes emitindo:

vgdisplay vg00

Como vg00 é formado por dois discos de 8 GB, ele aparecerá como uma única unidade de 16 GB:

Quando se trata de criar volumes lógicos, a distribuição do espaço deve levar em consideração as necessidades atuais e futuras. É considerada uma boa prática nomear cada volume lógico de acordo com o uso pretendido.

Por exemplo, vamos criar dois LVs chamados vol_projects (10 GB) e vol_backups (espaço restante), que podemos usar posteriormente para armazenar a documentação do projeto e backups do sistema, respectivamente.

A opção -n é usada para indicar um nome para o LV, enquanto -L define um tamanho fixo e -l (L minúsculo) é usado para indicar uma porcentagem do espaço restante no contêiner VG.

lvcreate -n vol_projects -L 10G vg00
lvcreate -n vol_backups -l 100%FREE vg00

Como antes, você pode visualizar a lista de LVs e informações básicas com:

lvs

e informações detalhadas com

lvdisplay

Para visualizar informações sobre um único LV, use lvdisplay com VG e LV como parâmetros, conforme a seguir:

lvdisplay vg00/vol_projects

Na imagem acima podemos ver que os LVs foram criados como dispositivos de armazenamento (consulte a linha LV Path). Antes que cada volume lógico possa ser usado, precisamos criar um sistema de arquivos sobre ele.

Usaremos ext4 como exemplo aqui, pois ele nos permite aumentar e reduzir o tamanho de cada LV (ao contrário do xfs que só permite aumentar o tamanho):

mkfs.ext4 /dev/vg00/vol_projects
mkfs.ext4 /dev/vg00/vol_backups

Na próxima seção explicaremos como redimensionar volumes lógicos e adicionar espaço de armazenamento físico extra quando for necessário fazê-lo.

Redimensionando volumes lógicos e estendendo grupos de volumes

Agora imagine o seguinte cenário. Você está começando a ficar sem espaço em vol_backups, enquanto tem bastante espaço disponível em vol_projects. Devido à natureza do LVM, podemos facilmente reduzir o tamanho deste último (digamos 2,5 GB) e alocá-lo para o primeiro, enquanto redimensionamos cada sistema de arquivos ao mesmo tempo.

Felizmente, isso é tão fácil quanto fazer:

lvreduce -L -2.5G -r /dev/vg00/vol_projects
lvextend -l +100%FREE -r /dev/vg00/vol_backups

É importante incluir os sinais de menos (-) ou de mais (+) ao redimensionar um volume lógico. Caso contrário, você estará definindo um tamanho fixo para o LV em vez de redimensioná-lo.

Pode acontecer que você chegue a um ponto em que o redimensionamento de volumes lógicos não possa mais resolver suas necessidades de armazenamento e você precise comprar um dispositivo de armazenamento extra. Para simplificar, você precisará de outro disco. Vamos simular esta situação adicionando o PV restante de nossa configuração inicial (/dev/sdd).

Para adicionar /dev/sdd a vg00, faça

vgextend vg00 /dev/sdd

Se você executar vgdisplay vg00 antes e depois do comando anterior, verá o aumento no tamanho do VG:

vgdisplay vg00

Agora você pode usar o espaço recém-adicionado para redimensionar os LVs existentes de acordo com suas necessidades ou para criar outros conforme necessário.

Montando volumes lógicos na inicialização e sob demanda

É claro que não faria sentido criar volumes lógicos se não formos realmente utilizá-los! Para identificar melhor um volume lógico, precisaremos descobrir qual é o seu UUID (um atributo inalterável que identifica exclusivamente um dispositivo de armazenamento formatado).

Para fazer isso, use blkid seguido do caminho para cada dispositivo:

blkid /dev/vg00/vol_projects
blkid /dev/vg00/vol_backups

Crie pontos de montagem para cada LV:

mkdir /home/projects
mkdir /home/backups

e insira as entradas correspondentes em /etc/fstab (certifique-se de usar os UUIDs obtidos antes):

UUID=b85df913-580f-461c-844f-546d8cde4646 /home/projects	ext4 defaults 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4	defaults 0 0

Em seguida, salve as alterações e monte os LVs:

mount -a
mount | grep home

Quando se trata de realmente usar os LVs, você precisará atribuir permissões ugo+rwx adequadas conforme explicado na Parte 8 – Gerenciar usuários e grupos no Linux desta série.

Resumo

Neste artigo apresentamos o Logical Volume Management, uma ferramenta versátil para gerenciar dispositivos de armazenamento que fornece escalabilidade. Quando combinado com RAID (que explicamos na Parte 6 – Criar e gerenciar RAID no Linux desta série), você pode desfrutar não apenas da escalabilidade (fornecida pelo LVM), mas também da redundância (oferecida pelo RAID).

Neste tipo de configuração, você normalmente encontrará o LVM em cima do RAID, ou seja, configure primeiro o RAID e depois configure o LVM em cima dele.

Se você tiver dúvidas sobre este artigo ou sugestões para melhorá-lo, sinta-se à vontade para entrar em contato conosco através do formulário de comentários abaixo.