Gerenciamento eficiente de discos em Linux com LVM: Guia passo a passo

Gerenciamento eficiente de discos em Linux com LVM: Guia passo a passo

O gerenciamento de discos em ambientes linux utilizando o LVM fornece uma visão de alto nível à estrutura de discos presentes em um sistema. Isso dá muito mais flexibilidade na alocação do armazenamento para aplicativos e usuários. Volumes criados usando LVM podem ser redimensionados e movidos quase que à vontade.

Neste post vamos ver como mover um volume group (VG) completo (incluindo seus volumes lógicos) para um outro servidor. Essa é uma técnica que é util em ambientes físicos, virtuais ou até mesmo em ambientes de cloud quando temos um volume muito grande grande que precisa ser movido entre instâncias, por exexmplo um ponto de montagem usado para realização de backups que devem ser movidos e restaurados em outra máquina para se criar um ambiente de dev.

Visão geral do ambiente

Vamos usar a GCP nesse post mas o passo a passo pra mover um VG de um servidor pra outro são os mesmos para qualquer ambiente (físico, virtual, cloud) os passos de “desapresentar” os discos “físicamente” de um servidor e apresentá-los a outro servidor é que vão ser específicos a depender da plataforma que estiver sendo utilizada.

No nosso ambiente de laboratório vamos utilizar duas instâncias CE (Compute Engine): server1 e server2, são duas VMs ubuntu:

1gcloud compute instances list

gcloud compute instances list

No server1 foram adicionados 3 discos de 30GB:

1root@server1:~# lsblk
2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
3...
4sdb 8:16 0 10G 0 disk
5sdc 8:32 0 10G 0 disk
6sdd 8:48 0 10G 0 disk
7root@server1:~#

Esses discos fazem parte do VG (dados) e do LV (backups):

1root@server1:~# pvs
2PV VG Fmt Attr PSize PFree
3/dev/sdb dados lvm2 a-- <10.00g 0
4/dev/sdc dados lvm2 a-- <10.00g 0
5/dev/sdd dados lvm2 a-- <10.00g 0
6root@server1:~#
1root@server1:~# lvs
2LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
3backups dados -wi-a----- <29.99g
4root@server1:~#

O volume está utilizando um sistemas de arquivo xfs e esta montado em /mnt. O xfs é uma boa opção para sitemas de arquivos que tendem a crescer pois permite arquivos de até 500TB e sistemas de arquivos de até 8 EB:

01root@server1:~# df -h
02Filesystem Size Used Avail Use% Mounted on
03udev 282M 0 282M 0% /dev
04tmpfs 59M 4.0M 55M 7% /run
05/dev/sda1 9.7G 1.5G 7.8G 16% /
06tmpfs 291M 0 291M 0% /dev/shm
07tmpfs 5.0M 0 5.0M 0% /run/lock
08tmpfs 291M 0 291M 0% /sys/fs/cgroup
09/dev/sda15 124M 5.7M 119M 5% /boot/efi
10tmpfs 59M 0 59M 0% /run/user/1000
11/dev/mapper/dados-backups 30G 63M 30G 1% /mnt
12root@server1:~#

Vamos criar um pequeno arquivo contendo o backup do nosso diretório /etc, que será movido para o server2, juntamente com o VG:

1root@server1:~# tar czf /mnt/backup-etc-server1.tar.gz /etc/
2tar: Removing leading `/' from member names
3root@server1:~# ls -lh /mnt/
4total 396K
5-rw-r--r-- 1 root root 396K Dec 23 12:49 backup-etc-server1.tar.gz
6root@server1:~#

Novamente, estamos usando discos pequenos apenas a título de exemplo, mas os passos utilizados aqui são os mesmos que podem ser utilizados quando estamos trabalhando com discos de grandes, inclusive é justamente esse o caso de uso mais comum para esse processo, mover grandes quantidades de dados entre servidores rapidamente e com segurança.

Exportando e importando os discos em outro servidor

1. Desmontar o sistema e arquivos:

1root@server1:~# umount /mnt/

2. Marcar o volume como inativo:

1root@server1:~# vgchange -an dados
20 logical volume(s) in volume group "dados" now active
3root@server1:~#

3. Exportar o VG:

1root@server1:~# vgexport dados
2Volume group "dados" successfully exported
3root@server1:~#

4. Via console da GCP “desatachar” os discos do server1:

Console GCP - desatachar discos

5. Validar que os discos não estão mais apresentados ao server1:

1root@server1:~# lsblk
2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
3sda 8:0 0 10G 0 disk
4|-sda1 8:1 0 9.9G 0 part /
5|-sda14 8:14 0 3M 0 part
6`-sda15 8:15 0 124M 0 part /boot/efi
7root@server1:~#

6. Apresentar os discos no server2:

Apresentar discos no server2 - console GCP

7. Escanear o servidor para validar o volume importado:

1root@server2:~# pvscan
2PV /dev/sdb is in exported VG dados [<10.00 GiB / 0 free]
3PV /dev/sdd is in exported VG dados [<10.00 GiB / 0 free]
4PV /dev/sdc is in exported VG dados [<10.00 GiB / 0 free]
5Total: 3 [<29.99 GiB] / in use: 3 [<29.99 GiB] / in no VG: 0 [0 ]
6root@server2:~#

8. Importar o volume:

1root@server2:~# vgimport dados
2Volume group "dados" successfully imported
3root@server2:~#

9. Ativar o volume:

1root@server2:~# vgchange -ay dados
21 logical volume(s) in volume group "dados" now active
3root@server2:~#

10. Montar o sistema de arquivos:

01root@server2:~# mount /dev/dados/backups /mnt/
02root@server2:~# df -h
03Filesystem Size Used Avail Use% Mounted on
04udev 282M 0 282M 0% /dev
05tmpfs 59M 4.0M 55M 7% /run
06/dev/sda1 9.7G 1.5G 7.8G 16% /
07tmpfs 291M 0 291M 0% /dev/shm
08tmpfs 5.0M 0 5.0M 0% /run/lock
09tmpfs 291M 0 291M 0% /sys/fs/cgroup
10/dev/sda15 124M 5.7M 119M 5% /boot/efi
11tmpfs 59M 0 59M 0% /run/user/1000
12/dev/mapper/dados-backups 30G 64M 30G 1% /mnt
13root@server2:~#

11. Validar e desempacotar o arquivo de backup:

1root@server2:/mnt# tar xzf backup-etc-server1.tar.gz
2root@server2:/mnt# ls
3backup-etc-server1.tar.gz etc
4root@server2:/mnt#

Conclusão

Diferente de quando trabalhamos com volumes pequenos e podemos utilizar, sem grandes preocupações, diversos LVs (Volumes Lógicos) em um mesmo VG, quando estivermos projetando volumes para grandes quantidades de dados é importante pensarmos com cautela a respeito do design dos VGs e LGs, para que possamos utilizar facilidades do LVM como a que tratamos aqui.

Referências

https://tldp.org/HOWTO/LVM-HOWTO/recipemovevgtonewsys.html

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Automatize processos com Ansible e otimize seu tempo de trabalho
Próxima Entenda o que é API e como ela funciona no mundo digital

About author

Anderson Bispo
Anderson Bispo 5 posts

Formado em Sistemas de Informação, pela Universidade Salvador. Possui especialização em Gestão e Governança de TI e MBA em BI/DW. Atua com TI desde 2001 principalmente como SysAdmin Unix/Linux, DBA Oracle e Cloud Architect. Possui certificações ITIL, Scrum Master, Oracle OCP, Oracle Cloud Architect, Google Cloud Engineer, entre outras. Atualmente é servidor público do Tribunal de Justiça da Bahia e consultor, instrutor e conteudista da 4Linux.

View all posts by this author →

Você pode gostar também

DevOps

Monitoramento de Dados: Como Utilizar o PostgreSQL e o PgPool com Zabbix

Com o mercado tecnológico cada vez mais crescente, o volume de dados aumenta significativamente a cada minuto, e esse volume é armazenado em diversos sistemas de banco de dados distribuídos.

Infraestrutura TI

Criando imagens personalizadas com Packer para Google Cloud Platform

Olá pessoal, hoje no blog da 4Linux, vamos falar dessa ferramenta sensacional que é o Packer da HashiCorp. Bora lá. O que é o Packer O Packer é uma ferramenta

Infraestrutura TI

Aprenda a usar o comando chattr para bloquear arquivos e diretórios

Nesta dica da semana da 4Linux, iremos aprender o comando chattr, utilizado para bloquear arquivos e diretórios, ou seja criar restrições de acesso a diretórios e arquivos. O que é?