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:
- Um ou mais discos rígidos ou partições inteiros são configurados como volumes físicos (PVs).
- 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.
- 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
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.