LVM: Overview

Conceito de LVM:

O LVM(Logical Volume Manager – Gerenciador de Volume Lógico) é um tipo de sistema de arquivos que consegue adicionar ou remover espaço do disco de amazenamento de forma simples.

Diferentemente do particionamento convencional, em que diretórios ocupam um tamanho fixo, no LVM os diretórios são volumes lógicos que podem ter seu tamanho aumentado ou diminuído conforme a demanda. Essa ideia também é válida para os discos de armazenamento: todos os discos são enxergados pelo sistema como um único grande disco. Por exemplo, um pendrive de 40Gb e Hd externo de 60GB serão vistos pelo sistema como um único dispositivo de 100GB.

Como não há distinção entre tipos de dispositivos de armazenamento(pendrive,HD, cartões SSD etc), o LVM categoriza cada dispositivo de armazenamento como um volume físico(Chamado de PV – Physical Volume). Os volumes físicos(PV) são formados por pequnas unidades do mesmo tamanho(PE- Physical Extend).

Para administrar todos os volumes físicos(PV), o grupo de volume é criado(VG- VOlume Group). Assim, um grupo de volume comporta os volumes físicos. Por exemplo, três volumes físicos(PV) são identificados dentro de um único grupo de volumes(VG).

O grupo de Volumes(VG) cria e divide as antigas partições como volumes lógicos(LV- Logical Volume). Assim os diretórios /etc,/home,/root,/bin são criados como volumes lógicos(LV). Os volumes lógicos são formados por pequenas unidades de mesmo tamanho(LE- Logical Extend).

O diretório /boot não deve ser incluido como volume lógico. Isso porque os bootloaders não reconhecem o diretório /boot dentro de um grupo de volume. Nunca formate esse diretório como LVM.

Caso acabe todo o espaço disponível no grupo de volume(VG), um novo dispositivo de armazenamento pode ser adicionado: o LVM classifica o dispositivo como volume físico(PV), inserindo-o dentro de um grupo de volume(VG), podendo ser usado pelos volumes lógicos(LV).

Exemplo de VG

Então resumindo até aqui, um esquema LVM pode ser dividido em cinco elementos fundamentais:

  • VG(Volume Group): Nível mais alto de abstração do LVM. Reúne a coleção de volumes lógicos(LV) e volumes físicos(PV) em uma unidade administrativa;
  • PV(Physical Volume): Tipicamente um disco rígido, uma partição ou qualquer dispositivo de armazenamento da mesma natureza, como um dispositivo RAID;
  • LV(Logical Volume): O Equivalente a uma partição de disco tradicional. Como o LV age como uma partição tradicional, pode conter um sistema de arquivos;
  • PE(Physical Extend): Cada volume físico é dividido em pequenos “pedaços” de dados, conhecidos como PE. Possuem o mesmo tamanho do LE(Logical extend)
  • LE(Logical Extend): Cada volume lógico é dividido em pequenos “pedaços” de dados conhecidos como LE. Seu tamanho é o mesmo para todos os volumes lógicos;

Existem três tipos de LVM:

  • Linear: Nesse modelo, os dados fornecidos pelos volumes físicos são tratados de forma linear. Isso significa que por mais que se tenha 3 dispositivos no volume, ele só vai começar a utilizar o segundo quando o primeiro for ocupado completamente, assim como só usará o terceiro quando o segundo for ocupado completamente.
  • Mirrored(espelhado): Nesse modelo, os dados são tratados de forma espelhada entre volumes físicos(PV). Ou seja, você tem dois dispositivos, os dados gravados no dispositivo A serão espelhados no dispositivo B. Claro que os dispositivos devem ter o mesmo tamanho.
  • Striped(repartido): Nesse modelo, os dados são repartidos entre os volumes físicos(PV). Os dados são gravados de forma alternada entre os dispositivos.

Comparativo entre Linear e Striped

Implementação:

Sistema Operacional:

O sistema qual vou realizar o experimento é um Debian 9.3, conforme o output abaixo:


root@dns-cacheonly:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 9.3 (stretch)
Release:	9.3
Codename:	stretch
Partições Cobaias:

Eu adicionei 4 discos nesse servidor(é virtual, então foi só criar o volume e dar attach na vm), estão em negrito conforme o output abaixo:


root@dns-cacheonly:~# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    254:0    0  20G  0 disk 
└─vda1 254:1    0  20G  0 part /
vdb    254:16   0  50G  0 disk 
vdc    254:32   0  10G  0 disk 
vdd    254:48   0  10G  0 disk 
vde    254:64   0  10G  0 disk 

No caso então serão utilizadas: vdb,vdc,vdd e vde.

Pacotes:

# apt install lvm2
SetUP:
VGSCAN

O primeiro passo é atualizar o cache do LVM e criar o arquivo /etc/lvm/lvm.conf básico. Isso é feito simplesmente rodando o comando vgscan.


root@dns-cacheonly:~# vgscan 
  Reading volume groups from cache.
FDISK

Apesar de ser possível utilizar um disco inteiro não particionado, é recomendável criar uma partição e só então iniciá-la. Se o disco utilizado não for antes particionado, outros sistemas operacional que tiveram acesso ao disco podem enxergar o disco como vazio e sobrescrever os dados nele.

O particionamento do disco pode ser feito com o próprioc omando fdisk. O id da partição deve ser o 8e


 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden or  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC b
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f4  SpeedStor      
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      f2  DOS secondary  
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fc  VMware VMKCORE 
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fd  Linux raid auto
1c  Hidden W95 FAT3 75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot    ff  BBT            

Conforme o output acima, o 8e representa uma partição do tipo Linux LVM.

Então vamos formatar os discos:


root@dns-cacheonly:~# fdisk /dev/vde

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xac181efe.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): [ HIT ENTER ]
First sector (2048-20971519, default 2048): [ HIT ENTER ]
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): [ HIT ENTER AGAIN ]

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): t
Selected partition 1
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Depois de ter particionado todos os discos(vdb/vdc/vdd/vde), listei com o lsblk só pra ter certeza que estamos nos trilhos:


root@dns-cacheonly:~# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    254:0    0  20G  0 disk 
└─vda1 254:1    0  20G  0 part /
vdb    254:16   0  50G  0 disk 
└─vdb1 254:17   0  50G  0 part 
vdc    254:32   0  10G  0 disk 
└─vdc1 254:33   0  10G  0 part 
vdd    254:48   0  10G  0 disk 
└─vdd1 254:49   0  10G  0 part 
vde    254:64   0  10G  0 disk 
└─vde1 254:65   0  10G  0 part 

Dá para ver que todos os discos citados estão com as devidas partições criadas.

PVCREATE

Agora vamos criar os PV, utlizando o comando pvcreate da seguinte forma:


root@dns-cacheonly:~# pvcreate /dev/vdb1
  Physical volume "/dev/vdb1" successfully created.
root@dns-cacheonly:~# pvcreate /dev/vdc1
  Physical volume "/dev/vdc1" successfully created.
root@dns-cacheonly:~# pvcreate /dev/vdd1
  Physical volume "/dev/vdd1" successfully created.
root@dns-cacheonly:~# pvcreate /dev/vde1
  Physical volume "/dev/vde1" successfully created.
VGCREATE

Agora é necessário criar o VG(Volume Group), é utilizado o comando vgcreate:


root@dns-cacheonly:~# vgcreate PseudoStorage /dev/vdb1 /dev/vdc1 /dev/vdd1 /dev/vde1
  Volume group "PseudoStorage" successfully created

Outros argumentos interessantes para a criação de um VG:

  • -s/–physicalextentsize -> Pode ser especificado um tamanho de PE(Physical Extend) diferente do padrão de 4MB com a opção -s.
  • -t/–test -> Auto explicativo
  • -v/–verbose -> Auto explicativo
  • -l, –maxlogicalvolumes MaxLogicalVolumes -> Define o número máximo de volumes lógicos(LV) aceitos nesse volume group(VG).

Para mais informações, consulte o man

VGCHANGE

Por fim, é necessário ativar o novo grupo com o comando vgchange:


root@dns-cacheonly:~# vgchange -a y PseudoStorage
  0 logical volume(s) in volume group "PseudoStorage" now active
VGDISPLAY

Para verificar o número total de PE disponíveis no grupo, utilize o comando vgdisplay:


root@dns-cacheonly:~# vgdisplay 
  --- Volume group ---
  VG Name               PseudoStorage
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               79,98 GiB
  PE Size               4,00 MiB
  Total PE              20476
  Alloc PE / Size       0 / 0   
  Free  PE / Size       20476 / 79,98 GiB
  VG UUID               rc50VJ-CFtH-rmOX-AW2J-8KYb-qvdE-TVrm4G
PVDISPLAY

Os volumes físicos(PV) podem ser consultados com o comando pvdisplay da seguinte forma:


root@dns-cacheonly:~# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/vdb1
  VG Name               PseudoStorage
  PV Size               50,00 GiB / not usable 3,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              12799
  Free PE               12799
  Allocated PE          0
  PV UUID               uUrHrh-7YBo-lwXf-kuCH-4iYl-Wvy9-CSWKyi
   
  --- Physical volume ---
  PV Name               /dev/vdc1
  VG Name               PseudoStorage
  PV Size               10,00 GiB / not usable 3,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               bghSeG-ugh5-p1sB-pjpe-106i-DmF4-BfcKOW
   
  --- Physical volume ---
  PV Name               /dev/vdd1
  VG Name               PseudoStorage
  PV Size               10,00 GiB / not usable 3,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               M7knBk-EerA-t2t8-Ieic-ZSO3-EoHP-KYjOER
   
  --- Physical volume ---
  PV Name               /dev/vde1
  VG Name               PseudoStorage
  PV Size               10,00 GiB / not usable 3,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              2559
  Free PE               2559
  Allocated PE          0
  PV UUID               xrN3We-Q6Pp-FvWR-VxcZ-1nFK-PUPd-VdxfSM
LVCREATE

A partir de agora podem ser criados os LV. Na hora de criar um volume lógico temos que ter em mente o tamanho máximo dos PE, que pode ser obtido com o comando vgdisplay, observe o campo do output do comando vgdisplay:


Free  PE / Size       20476 / 79,98 GiB 

Isso significa que podemos criar um volume de 79,98Gb ou vários volumes até somar 79,98Gb

Para criar os LV, utiliza-se o comando lvcreate. Nesse exemplo irei criar 2 volumes lógicos, o primeiro chamado de BlackOps e o segundo de WhiteOps. Posteriomente vou fazer uns testes de resize nesses volumes por questões didáticas. Então vamos ao terminal:


root@dns-cacheonly:~# lvcreate -L 10G -n BlackOps PseudoStorage
  Logical volume "BlackOps" created.
root@dns-cacheonly:~# lvcreate -L 10G -n WhiteOps PseudoStorage
  Logical volume "WhiteOps" created.

Alguns argumentos que podem ser utilizados:

  • -L|–size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} -> Define o tamanho do Volume medindo em bits/bytes/mega/etc.
  • -l|–extents LogicalExtentsNumber[%{VG|PVS|FREE}] -> Também define o tamanho do Volume atráves do número de PE
  • -n|–name LogicalVolumeName -> Define um nome pro volume. Caso não definido o valor assumido é “lvol0”

Depois da criação dos volumes é possível utilizar o mesmos que estão localizado em /dev/PseudoStorage/*


root@dns-cacheonly:~# ls -l /dev/PseudoStorage/
total 0
lrwxrwxrwx 1 root root 7 mar  4 02:06 BlackOps -> ../dm-0
lrwxrwxrwx 1 root root 7 mar  4 02:07 WhiteOps -> ../dm-1

Lembrando que os volumes criados não estão formatados, logo precisariam ser formatados para utilização, posteriormente poderiam ser montados e até mesmo incluidos no /etc/fstab.

Formatando os Volumes:

Para essa tarefa podemos utilizar o fdisk da seguinte forma:


root@dns-cacheonly:~# mkfs.ext4 /dev/PseudoStorage/BlackOps 
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: fd4f31c8-c5b0-4230-9b71-2c84f762aeee
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

root@dns-cacheonly:~# mkfs.ext4 /dev/PseudoStorage/WhiteOps 
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: b8e638ad-2acd-40e4-ba44-2258d48ecd61
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 
Redimensionado os volumes

Para expandir ou diminuir um volume, podem ser utilizados os seguintes comandos:

      lvreduce
      lvresize
      lvextend

Antes de prosseguir, vamos utilizar o lvs para ter uma ídeia de como estão nossos volumes:


root@dns-cacheonly:~# lvs
  LV       VG            Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  BlackOps PseudoStorage -wi-a----- 10,00g                                                    
  WhiteOps PseudoStorage -wi-a----- 10,00g      

Agora vamos visualizar como está o VG para ter uma ideia de quanto podemos expandir nossos volumes utilizando o comando vgs:


root@dns-cacheonly:~# vgs
  VG            #PV #LV #SN Attr   VSize  VFree 
  PseudoStorage   4   2   0 wz--n- 79,98g 59,98g

Então com base no output do comando vgs podemos ver que temos 59,98G livres.

Vamos então expandir o volume BlackOps em 5G e o WhiteOps em 15G:


root@dns-cacheonly:~# lvextend -L+5G /dev/PseudoStorage/BlackOps 
  Size of logical volume PseudoStorage/BlackOps changed from 10,00 GiB (2560 extents) to 15,00 GiB (3840 extents).
  Logical volume PseudoStorage/BlackOps successfully resized.
root@dns-cacheonly:~# lvextend -L+15G /dev/PseudoStorage/WhiteOps 
  Size of logical volume PseudoStorage/WhiteOps changed from 10,00 GiB (2560 extents) to 25,00 GiB (6400 extents).
  Logical volume PseudoStorage/WhiteOps successfully resized.

Observação: Caso você não estipule o +, ele irá redimensionar, ou seja, se o comando para a expandir o BlackOps tivesse sido sem +, ele teria passado de 10G para 5G pois entederia que eu estou redimensionando para 5G ao invez de adicionando 5G.

Novamente vamos verificar com o vgs quanto espaço livre nós temos:


root@dns-cacheonly:~# vgs
  VG            #PV #LV #SN Attr   VSize  VFree 
  PseudoStorage   4   2   0 wz--n- 79,98g 39,98g

E agora com o lvs para verificar os volumes:


root@dns-cacheonly:~# lvs
  LV       VG            Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  BlackOps PseudoStorage -wi-a----- 15,00g                                                    
  WhiteOps PseudoStorage -wi-a----- 25,00g               

Contudo, depois de ter expandido o volume ainda será necessário expandir o filesystem daquele volume, para isso é utilizado o comando resize2fs da seguinte forma:


root@dns-cacheonly:~# resize2fs /dev/PseudoStorage/BlackOps 
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/PseudoStorage/BlackOps to 3932160 (4k) blocks.
The filesystem on /dev/PseudoStorage/BlackOps is now 3932160 (4k) blocks long.

root@dns-cacheonly:~# resize2fs /dev/PseudoStorage/WhiteOps 
resize2fs 1.43.4 (31-Jan-2017)
Resizing the filesystem on /dev/PseudoStorage/WhiteOps to 6553600 (4k) blocks.
The filesystem on /dev/PseudoStorage/WhiteOps is now 6553600 (4k) blocks long.

Agora sim ein!

Expandindo o VG

Por ultimo, vamos supor que por algum motivo alien o seu VG ocupou todo o espaço disponível e você precise de mais(MOREMOREMOREMROE), para isso é necessário seguir os seguintes passos já abordados nesse paper:

      Adicionar o disco no sistema, obviamente
      Criar o PV respectivo do disco
      Adicionar o PV ao VG

Eu adicionei mais um disco no volume: /dev/vdf
Vamos então formatar com o fdisk:


root@dns-cacheonly:~# fdisk /dev/vdf

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x8719b339.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-10485759, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): 

Created a new partition 1 of type 'Linux' and of size 5 GiB.

Command (m for help): t
Selected partition 1
Partition type (type L to list all types): 8e
Changed type of partition 'Linux' to 'Linux LVM'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Agora vamos criar o PV da partição formatada com ID 8e:


root@dns-cacheonly:~# pvcreate /dev/vdf1
  Physical volume "/dev/vdf1" successfully created.

Vamos verificar o tamanho do VG atual antes de adicionarmos o PV nele:


root@dns-cacheonly:~# vgdisplay 
  --- Volume group ---
  VG Name               PseudoStorage
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               79,98 GiB
  PE Size               4,00 MiB
  Total PE              20476
  Alloc PE / Size       10240 / 40,00 GiB
  Free  PE / Size       10236 / 39,98 GiB
  VG UUID               rc50VJ-CFtH-rmOX-AW2J-8KYb-qvdE-TVrm4G

Então temos ai 79,98GiB.

Agora vamos usar o vgextend para expandir o volume.


root@dns-cacheonly:~# vgextend PseudoStorage /dev/vdf1
  Volume group "PseudoStorage" successfully extended

E novamente vamos visualizar o VG:


root@dns-cacheonly:~# vgdisplay 
  --- Volume group ---
  VG Name               PseudoStorage
  System ID             
  Format                lvm2
  Metadata Areas        5
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                5
  Act PV                5
  VG Size               84,98 GiB
  PE Size               4,00 MiB
  Total PE              21755
  Alloc PE / Size       10240 / 40,00 GiB
  Free  PE / Size       11515 / 44,98 GiB
  VG UUID               rc50VJ-CFtH-rmOX-AW2J-8KYb-qvdE-TVrm4G

Então o VG foi expandido com sucesso!

SnapShot

Criar snapshots é uma funcionalidade bastante útil e utilizada do LVM. Um “snapshot” é uma imagem do volume lógico, virtual, onde o LVM pára o tempo do volume, deixando-o intacto para trabalhar enquanto o volume lógico “real” continua trabalhando e sendo modificado. Em outras palavras, quando se faz um LVM Snapshot, o LVM duplica o volume lógico e “congela” a duplicata.

Antes de começar, vamos entender como um snapshot funciona. Quando você pede para o LVM criar um snapshot, você vai especificar um certo tamanho para este snapshot e neste caso, você precisa se certificar de que existam PEs livres para este tamanho. Então supondo que criamos um snapshot de 100MB do volume lógico WhiteOps, o que significa? O LVM irá criar uma duplicata do WhiteOps, com o conteúdo exato do WhiteOps na hora da criação e sem mudanças posteriores. O espaço de 100MB necessários para o snapshot será utilizado para as posteriores gravações. Então enquanto você analiza e faz backup da duplicata, o LVM vai continuando a escrever as mudanças dos arquivos neste espaço de 100MB, que serve como um buffer. Se as mudanças acumularem e se tornarem maiores que 100MB, o snapshot se torna inválido.

Para criar o snapshot utiliza-se o lvcreate com a opção -s:


root@dns-cacheonly:/home/debian# lvcreate -s -L 100M -n WhiteOps_Snap /dev/PseudoStorage/WhiteOps
  Using default stripesize 64,00 KiB.
  Logical volume "WhiteOps_Snap" created.

Posteriormente o SnapShot ter sido criado, agora basta apenas montá-lo como qualquer outro volume e realizar o backup:

mount /dev/PseudoStorage/WhiteOps_Snap /mnt

O Backup pode ser feito da forma que você achar melhor, posteriormente basta desmontar o volume e remover o snapshot utilizando o lvremove:


root@dns-cacheonly:/home/debian# umount /mnt
root@dns-cacheonly:/home/debian# lvremove /dev/PseudoStorage/WhiteOps_Snap 
Do you really want to remove active logical volume PseudoStorage/WhiteOps_Snap? [y/n]: y
  Logical volume "WhiteOps_Snap" successfully removed
Conclusão:

O LVM é muito poderoso e deve ser utilizado nos servidores. Acredito que é trivial que se tenha uma maior flexibilidade em manutenção em partições, discos e dimensionamento em geral em relação à partição.

Fontes:

Certificação Linux LPIC-1
Certificação LPI-2
https://serverfault.com/questions/319427/how-to-remove-bad-disk-from-lvm2-with-the-less-data-loss-on-other-pvs
http://www.microhowto.info/howto/increase_the_size_of_an_lvm_logical_volume.html
https://www.tecmint.com/logical-volume-management-on-debian-linux/2/
https://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/
http://www.devin.com.br/lvm/

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.