Como experimentar o LVM em imagens de disco?

0

Eu quero escrever um script que trabalhe com o LVM (cria volumes físicos, grupos de volumes, etc) no computador com dois discos rígidos. No entanto, eu não tenho um segundo disco rígido no meu PC, nem quero adicionar um.

Existem maneiras de emular tais condições, além de usar o Virtual Box?

Eu quero poder manipular alguns volumes físicos virtuais, grupos de volumes, ou seja, usar pvcreate , vgcreate , lvcreate , etc.

    
por user4385124 13.06.2017 / 01:37

1 resposta

2

Usando arquivos esparsos em vez de discos

Se você quiser brincar com o LVM sem fazer alterações nas partições dos seus discos, sim, isso pode ser feito. Crie alguns arquivos esparsos que podem servir como seus "discos virtuais". Em seguida, crie as partições nesses arquivos e configure os dispositivos de loop usando suas imagens de disco. A partir daí, você pode brincar com o LVM nos dispositivos de loop que apontam para as imagens de disco.

Faça seus arquivos esparsos
Execute o seguinte em um terminal para criar dois arquivos esparsos. Arquivos esparsos sempre relatam que eles são um tamanho fixo predeterminado, mas, na realidade, eles usam inicialmente 0 bytes de espaço em disco. Como eles são escritos, eles podem crescer até que eles alcancem seu tamanho predeterminado ou o disco que os contém não tenha mais espaço.

  • truncate -s 1T /tmp/disk1.img
  • truncate -s 1T /tmp/disk2.img

Crie partições nas imagens de disco
Agora você tem dois arquivos que você pode tratar como discos. Use o fdisk para particionar essas imagens. Se você não sabe como usar o fdisk para criar partições, você pode conferir este tutorial ou execute os comandos abaixo que criarão duas partições de 512G cada nas duas imagens de disco.

sudo sfdisk /tmp/disk1.img <<< "$(base64 -d <<< "bGFiZWw6IGRvcwpsYWJlbC1pZDogMHhkODdlMWQ1MwpkZXZpY2U6IC90bXAvZGlzazEuaW1nCnVuaXQ6IHNlY3RvcnMKCi90bXAvZGlzazEuaW1nMSA6IHN0YXJ0PSAgICAgICAgMjA0OCwgc2l6ZT0gIDEwNzM3NDE4MjQsIHR5cGU9ODMKL3RtcC9kaXNrMS5pbWcyIDogc3RhcnQ9ICAxMDczNzQzODcyLCBzaXplPSAgMTA3MzczOTc3NiwgdHlwZT04Mwo=")"
sudo sfdisk /tmp/disk2.img <<< "$(base64 -d <<< "bGFiZWw6IGRvcwpsYWJlbC1pZDogMHg4ZWMwYWYyZgpkZXZpY2U6IC90bXAvZGlzazIuaW1nCnVuaXQ6IHNlY3RvcnMKCi90bXAvZGlzazIuaW1nMSA6IHN0YXJ0PSAgICAgICAgMjA0OCwgc2l6ZT0gIDEwNzM3NDE4MjQsIHR5cGU9ODMKL3RtcC9kaXNrMi5pbWcyIDogc3RhcnQ9ICAxMDczNzQzODcyLCBzaXplPSAgMTA3MzczOTc3NiwgdHlwZT04Mwo=")"

Configurar imagens em dispositivos de loop
Em seguida, vamos colocar nossas imagens de disco conectadas a alguns dispositivos de loop para que possamos trabalhar com as partições. Em um terminal, execute os seguintes comandos ( losetup -f retorna o próximo dispositivo de loop disponível)

  • sudo losetup -P $(losetup -f) /tmp/disk1.img
  • sudo losetup -P $(losetup -f) /tmp/disk2.img

Determine quais dispositivos nossas partições estão conectadas a
Agora precisamos descobrir quais dispositivos de loop apontam para nossas partições. Execute o seguinte em um terminal:

  • sudo losetup -a | grep -P "disk[12].img | cut -f1 -d:"
    Saída
    /dev/loop3
    /dev/loop4
    
    Estes são os dispositivos de loop de interesse que procuraremos na saída do próximo comando
  • sudo blkid
    Saída que corresponde aos meus dispositivos de loop
    /dev/loop3: PTUUID="d87e1d53" PTTYPE="dos"
    /dev/loop3p1: PARTUUID="d87e1d53-01"
    /dev/loop3p2: PARTUUID="d87e1d53-02"
    /dev/loop4: PTUUID="8ec0af2f" PTTYPE="dos"
    /dev/loop4p1: PARTUUID="8ec0af2f-01"
    /dev/loop4p2: PARTUUID="8ec0af2f-02"
    
    Portanto, minhas partições disk1 estão em /dev/loop3p1 e /dev/loop3p2 e minhas partições disk2 estão em /dev/loop4p1 e /dev/loop4p2 . Você provavelmente é bom para ir a partir daqui, mas vou continuar com um exemplo de configuração do LVM.

Exemplo de configuração do LVM
Eu só usarei o disk1, a partição 1 e o disco2 da partição 2 em minha configuração do LVM. Do terminal execute o seguinte, substituindo os caminhos para os dispositivos de loop, conforme necessário:

  • Configurar volumes físicos: sudo pvcreate /dev/loop3p1 /dev/loop4p2
  • Grupo de volumes de configuração: vgcreate my_volume_group /dev/loop3p1 /dev/loop4p2
  • Configure algumas partições:
    • Partição1: sudo lvcreate --name root --size 30G my_volume_group
    • Partição2: sudo lvcreate --name swap --size 4G my_volume_group
    • Partição3: sudo lvcreate --name home --extents +100%free my_volume_group

Agora eu tenho um único grupo de volumes com 1 TB de espaço que é tirado de 512G em disk1.img e 512G em disk2.img. Isso pode ser verificado executando:

  • sudo pvs quais saídas
    PV           VG              Fmt  Attr PSize   PFree
    /dev/loop3p1 my_volume_group lvm2 a--  512.00g    0 
    /dev/loop4p2 my_volume_group lvm2 a--  512.00g    0 
    
  • sudo vgs quais saídas
    VG              #PV #LV #SN Attr   VSize    VFree
    my_volume_group   2   3   0 wz--n- 1023.99g    0 
    
  • sudo lvs quais saídas
    LV   VG              Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
    home my_volume_group -wi-a----- 989.99g                                                    
    root my_volume_group -wi-a-----  30.00g                                                    
    swap my_volume_group -wi-a-----   4.00g                                                    
    
por b_laoshi 13.06.2017 / 03:35