A respeito de Logical Volume Management (LVM)

O LVM gerencia as unidades de disco. Ele permite que várias unidades e partições sejam combinadas em grupos de volumes maiores; ajuda na produção de cópias de segurança por meio de um instantâneo e permite o redimensionamento dinâmico do volume. Ele também pode fornecer espelhamento semelhante a uma matriz RAID 1.

Uma discussão completa do LVM está além do escopo desta introdução, mas os conceitos básicos são apresentados abaixo.

Para executar qualquer dos comandos apresentados aqui, o pacote LVM2-2.03.26 precisa estar instalado. Todos os comandos precisam ser executados como o(a) usuário(a) root.

O gerenciamento de discos com LVM é realizado usando os seguintes conceitos:

volumes físicos

Esses são discos físicos ou partições, como /dev/sda3 ou /dev/sdb.

grupos de volumes

Esses são grupos nomeados de volumes físicos que podem ser manipulados pelo(a) administrador(a). O número de volumes físicos que compõem um grupo de volumes é arbitrário. Os volumes físicos podem ser adicionados ou removidos dinamicamente a partir de um grupo de volumes.

volumes lógicos

Os grupos de volumes podem ser subdivididos em volumes lógicos. Cada volume lógico pode então ser formatado individualmente como se fosse uma partição normal do Linux. Os volumes lógicos podem ser redimensionados dinamicamente pelo(a) administrador(a) de acordo com a necessidade.

Para dar um exemplo concreto, suponha que você tenha dois discos de 2 TB. Suponha também que uma quantidade realmente grande de espaço seja exigida para uma base de dados muito grande, montada em /srv/mysql. É assim que o conjunto inicial de partições se pareceria:

Partição  Uso    Tamanhp      Tipo da Partição
/dev/sda1  /boot  100MB     83 (Linux)
/dev/sda2  /       10GB     83 (Linux)
/dev/sda3  swap     2GB     82 (Swap)
/dev/sda4  LVM    remainder 8e (LVM)
/dev/sdb1  swap     2GB     82 (Swap)
/dev/sdb2  LVM    remainder 8e (LVM)

Primeiro, inicialize os volumes físicos:

pvcreate /dev/sda4 /dev/sdb2
[Nota]

Nota

Um disco inteiro pode ser usado como parte de um volume físico, mas esteja ciente de que o comando pvcreate destruirá qualquer informação de partição nesse disco.

Em seguida, crie um grupo de volumes chamado lfs-lvm:

vgcreate lfs-lvm /dev/sda4 /dev/sdb2

O situação do grupo de volumes pode ser verificada executando-se o comando vgscan. Agora crie os volumes lógicos. Como existe cerca de 3.900 GB disponíveis, deixe cerca de 900 GB livres para expansão. Observe que o volume lógico chamado mysql é maior que qualquer disco físico.

lvcreate --name mysql --size 2500G lfs-lvm
lvcreate --name home --size 500G lfs-lvm

Finalmente, os volumes lógicos podem ser formatados e montados. Neste exemplo, o sistema de arquivos jfs (jfsutils-1.1.15) é usado para o propósito de demonstração.

mkfs -t ext4 /dev/lfs-lvm/home
mkfs -t jfs /dev/lfs-lvm/mysql
mount /dev/lfs-lvm/home /home
mkdir -p /srv/mysql
mount /dev/lfs-lvm/mysql /srv/mysql

Possivelmente seja necessário ativar esses volumes lógicos, para que apareçam em /dev. Todos eles podem ser ativados ao mesmo tempo emitindo-se, como o(a) usuário(a) root:

vgchange -a y

Um volume lógico LVM pode hospedar um sistema de arquivos raiz, mas exige o uso de um initramfs (sistema de arquivos RAM inicial). O initramfs proposto em “A respeito do initramfs” permite passar o volume LVM na chave root= da linha de comando do núcleo.

Se não usar um initramfs, existe uma condição de corrida no systemd impedindo a montagem de volumes lógicos por meio de /etc/fstab. Você precisa criar uma unidade mount (veja-se systemd.mount(5)), como no seguinte exemplo, que monta o diretório /home automaticamente na inicialização:

cat > /etc/systemd/system/home.mount << EOF
[Unit]
Description=Monta o volume lvm /dev/lfs-lvm/home em /home

[Mount]
What=/dev/lfs-lvm/home
Where=/home
Type=ext4
Options=default

[Install]
WantedBy=multi-user.target
EOF
[Nota]

Nota

O nome da unidade precisa ser o nome do ponto de montagem com o caractere `/' substituído por `-', omitindo o inicial.

Em seguida, a unidade precisa ser habilitada com:

systemctl enable home.mount

Para mais informação a respeito do LVM, veja-se o LVM HOWTO e as páginas de manual do lvm. Um bom e detalhado guia está disponível a partir da RedHat®, embora às vezes ele faça referência a ferramentas proprietárias.