Categoria: Linux(Storaging)

Assuntos relacionados a armazenamento em linux. Seja ZFS, snapshots, LVM, pendrive, tudo que for relacionado a dicas de armazenamento, enquadra-se nesta categoria.

Como fazer commit e rollback de snapshot de LVM

Escrevo pra responder a pergunta que o Alan fez no POST Compreendendo-o-uso-de-snapshots-de-unidades-lvm. Muito boa pergunta por sinal.

Ele havia ficado com algumas dúvidas:

1º – Vamos supor que possua um LVMRAIZ para a partição /. Então crio um LVMRAIZ-SNAP. Depois faço um upgrade do SO, mas alguns pacotes estão com problema, se eu remover o LVMRAIZ-SNAP, meu SO volta para a versão anterior?
# lvcreate -L10G vg01 -n LVMRAIZ
# lvcreate -L40M -s /dev/vg01/LVMRAIZ -n LVMRAIZ-SNAP
# yum -y upgrade
# lvremove /dev/vg01/LVMRAIZ-SNAP

2º Imagine o mesmo cenário acima, mas não ocorreu nenhum problema na atualização do SO. Neste caso eu gostaria de consolidar os dados gravados LVMRAIZ-SNAP para LVMRAIZ e então remover o LVMRAIZ-SNAP.
Qual seria o comando?

Como o POST está meio extenso (simplesmente porque eu gosto de usar meu tempo lendo e escrevendo), para ir direto ao ponto, sem precisar ler o post todo:

TL;DR

1º Para voltar atrás, supondo que deu tudo errado na atualização: umount /dev/vg01/LVMRAIZ && lvconvert –merge /dev/vg01/LVMRAIZ-SNAP
2º Qual seria o comando? R: lvremove /dev/vg01/LVMRAIZ-SNAP para descartar o snapshot, tudo correu bem, e seguir adiante.

Para leigos, e para quem tiver tempo pra ler e constatar tudo timtim por timtim, resolvi responder assim pois ambas as perguntas da pra responder com uma simulação pequena!

Então, usei um antigo pendrive de 1GB aqui como teste. Identificado como /dev/sdb.
Percebí isso através do resultado do comando ‘fdisk -l‘ que lista pra mim as informações de disco.

Então, mãos à obra: Criação do volume físico (PV):

vostrolab tmp # pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created

Veja o amigo aí:

vostrolab tmp # pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 a– 982,50m 982,50m

Informações mais detalhadas sobre o PV podem ser obtidas através do ‘pvdisplay‘.

Agora vamos à criação do volume lógico (VG) que é criado em cima do PV:

vostrolab tmp # vgcreate vg01 /dev/sdb
Volume group “vg01” successfully created

Aí está:

vostrolab tmp # vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 0 0 wz–n- 980,00m 980,00m

Informações mais detalhadas sobre o VG podem ser obtidas através do ‘vgdisplay‘.

Criei também o volume lógico (LV), tudo conforme nomenclatura sugerida pelo Alan.

vostrolab tmp # lvcreate -L100M vg01 -n LVMRAIZ
Logical volume “LVMRAIZ” created

Aí está:

vostrolab tmp # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 -wi-a—- 100,00m

Informações mais detalhadas sobre o LV podem ser obtidas através do ‘lvdisplay‘.

Escreví o sistema de arquivos ext4 no LV raiz recém criado, montei e criei alguns arquivos para simular como se fosse meu sistema que quero atualizar os pacotes:

vostrolab tmp # mkfs.ext4 /dev/vg01/LVMRAIZ
vostrolab tmp # mount /dev/vg01/LVMRAIZ /mnt
vostrolab tmp # cd /mnt
vostrolab mnt # echo “numero um” > um.txt
vostrolab mnt # echo “numero dois” > dois.txt
vostrolab mnt # echo “numero tres” > tres.txt
vostrolab mnt # cat *.txt
numero dois
numero tres
numero um

Agora vamos ao ponto: A criação do snapshot e, para responder a primeira parte da questão, a simulação do corrompimento dos pacotes e em seguida o descarte do snapshot.

vostrolab mnt # lvcreate -L40M -s /dev/vg01/LVMRAIZ -n LVMRAIZ-SNAP
Logical volume “LVMRAIZ-SNAP” created

Aí está nosso snapshot (leia logo mais abaixo para entender porquê grifei em vermelho o 0,03):

vostrolab mnt # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 owi-aos– 100,00m
LVMRAIZ-SNAP vg01 swi-a-s– 40,00m LVMRAIZ 0,03

Agora é hora do ‘yum -y upgrade‘ ou ‘apt-get upgrade‘ para os debian lovers. Ou seja, vamos atualizar e simular como se tivesse corrompido tudo! Fim de carreira? R: Para quem não conhece os snapshots! =) Veja:

vostrolab mnt # echo ‘atualizei e corrompeu’ >> um.txt
vostrolab mnt # echo ‘atualizei e corrompeu’ >> dois.txt
vostrolab mnt # echo ‘atualizei e corrompeu’ >> tres.txt
vostrolab mnt # cat *.txt
numero dois
atualizei e corrompeu
numero tres
atualizei e corrompeu
numero um
atualizei e corrompeu

Note que depois de houveram alteraçoes nos arquivos, o snapshot também apresenta alterações na coluna Data% (0,03 para 0,10):

vostrolab mnt # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 owi-aos– 100,00m
LVMRAIZ-SNAP vg01 swi-a-s– 40,00m LVMRAIZ 0,10

Ferrou tudo, essa mensagem que coloquei dentro dos txt é como se tivesse corrompido geral meu sistema. Pacotes errados, dependencias mal resolvidas e um monte de problemas. Cenário raro, mas, sejamos francos, também acontece no ambiente Linux. E agora como voltar atrás?

Primeiro passo é desmontar a unidade e em seguida ‘lvconvert –merge’:

vostrolab / # umount /dev/vg01/LVMRAIZ
vostrolab / # lvconvert –merge /dev/vg01/LVMRAIZ-SNAP
Merging of volume LVMRAIZ-SNAP started.
LVMRAIZ: Merged: 100,0%
Merge of snapshot into logical volume LVMRAIZ has finished.
Logical volume “LVMRAIZ-SNAP” successfully removed

Pronto! Snapshot já não existe mais:

vostrolab / # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 -wi-a—- 100,00m

E o sistema voltou a ser o que era antes de corromper, e-x-a-t-a-m-e-n-t-e como era no momento em que fiz o snapshot.

vostrolab / # mount /dev/vg01/LVMRAIZ /mnt
vostrolab / # cd mnt
vostrolab mnt # cat *.txt
numero dois
numero tres
numero um

Mas ok, até agora fizemos um ‘rollback’ por assim dizer.
E digamos que atualizamos os pacotes de uma outra maneira, de um jeito que deu tudo certo! E agora queremos (e devemos) remover o snapshot de um jeito que as alterações que fizemos no sistema continuem.
Digo ‘devemos’ pois já serviu para o proposto, queremos manter nosso ambiente digital limpo, sem lixo, e como os snapshots tem um limite, a medida que usamos, este limite vai incrementando até que chega o momento que vai inutilizar o snapshot. É sempre bom mantê-los em ordem.

É fácil, e não requer desmontar a unidade. Simplesmente remover com ‘lvremove‘:

vostrolab mnt # lvremove /dev/vg01/LVMRAIZ-SNAP
Do you really want to remove and DISCARD active logical volume LVMRAIZ-SNAP? [y/n]: y
Logical volume “LVMRAIZ-SNAP” successfully removed

Era isso, nossos arquivos permanecem alterados (como se fossem os pacotes atualizados):

vostrolab mnt # cat *.txt
numero dois
atualizei e deu tudo certo
numero tres
atualizei e deu tudo certo
numero um
atualizei e deu tudo certo

Agora sim, com pacotes atualizados, tocamos a vida adiante.

Por: Hudson Murilo dos Santos
Referências: http://www.thegeekstuff.com/2010/08/how-to-create-lvm
https://www.tecmint.com/take-snapshot-of-logical-volume-and-restore-in-lvm/

Compreendendo o uso de SNAPSHOTs em unidades LVM

Olá pessoal,

Ha algum tempo atrás (ha um ano talvez) venho utilizando LVM2 para quase tudo. Este “cara” é simplesmente fantástico. Mas para muitos pode ficar algumas perguntas (que eu me fiz umas 400 vezes) …

Como funciona a utilização do espaço reservado para um SNAPSHOT de unidades LVM? Porque temos que informar um tamanho para esta “foto”? Em fim…

O tamanho que informamos no comando de criação de um SNAPSHOT (lvcreate -LXX{M,G,T…} -s /dev/VGNAME/LVNAME) é a quantidade de physical extents (PE, ou tamanho em Mb, Gb, etc) que reservamos no VG da unidade LVM para que seja armazenado os metadados das alterações que são sofridas na unidade LVM após a criação do SNAP.

Exemplo:

Read More

Mapeando partições em LVs LVM (kpartx)

Esta dica é especial para quem trabalha com virtualização (Xen/KVM), e faz muito uso de unidades lógicas LVM, mas não significa que não possa ser usada para outros fins …

Bom normalmente em ambientes de virtualização com XEN ou KVM utilizamos unidades lógicas LVM para servirem de disco para as VMs. Pois bem, isso leva a unidade LVM a ser formatada e particionada, tornando ela uma “mini fortaleza”, hehehe. Caso seja necessário visualizar e montar estas partições criadas na unidade lógica temos que mapea-las como device no S.O Linux. Para isso, podemos utilizar o comando kpartx, conforme sintaxe abaixo:

Read More

LVM como disco em maquinas virtuais VMWare

O VMware por padrão não consegue tratar unidades lógicas LVM como dispositivos físicos ao utilizar um disco virtual do tipo “Physical”. Para contornar este comportamento, podemos “enganar” o VMWARE com os seguintes passos:

Damos permissão 755 para o diretório de mapeamento do Volume-Group do LVM. Supondo que temos o VG denominado LVM teríamos o seguinte:

chmod 755 /dev/LVM

Depois devemos dar permissão 666 para o Logical-Volume a ser utilizado como disco virtual na VM. Considerando que temos o logical volume nomeado como VM01_raiz teríamos o seguinte:

Read More

01 – Criando e excluindo volumes de discos ZFS, uma abordagem inicial ao ZPOOL

Bom, este é o começo da utilização do ZFS, saber criar os POOLs, ou seja, os grupos de discos (ou o disco) para abrigar os sistemas de arquivos ZFS. É meio complicado entender de cara isso, mas no decorrer deste primeiro artigo garanto que isso ficará claro.

Para o melhor entendimento, vamos simular uma situação comum de hoje. Possuímos 4 discos rígidos (Hds) de 750Gb cada, e desejamos criar um sistema RAID e tornar destes 4 discos um só volume possuindo a soma do espaço em disco dos 4. Neste nosso caso teríamos 4 x 750, que seria aproximadamente 3Tb de espaço em disco, legal isso né?

Read More

Uma introdução ao ZFS

O ZFS (ZettaByte File System) é um sistema de arquivos muito moderno, apesar de não muito recente que implementa em seu funcionamento vários recursos extraordinários, normalmente encontrados somente em STORAGES avançados, tais como suporte a snapshots, RAID 0 e 1 para desempenho e proteção de dados (espelhamento), suporte a hotspare, checksum anti-corrompimento, controle de quota e alocação de espaço em disco, volumes lógico (LUN) para alocamento de espaço em disco, dentre muitos outros adicionais, como compactação a quente de sistemas de arquivos, compartilhamentos dos volumes de dados, controles de permissões, e muito mais.

Read More