Altera um LVM LV não distribuído para um LV distribuído

5

Atualmente, tenho vários volumes lógicos (LVs) em um grupo de volumes (VG). Este VG está hospedado em um único volume físico (PV). Eu tenho uma unidade de reposição que eu posso usar para embaralhar os dados.

Agora também tenho uma nova unidade que corresponde ao meu drive PV original. Eu gostaria de mover os LVs existentes e acabar com os LVs sendo distribuídos pelos dois PVs. Isso é possível? Como você faz isso?

    
por Jon Pawley 29.02.2012 / 06:19

1 resposta

6

Parece que isso não é possível a partir da linha de comando. striping é bem diferente do esquema de alocação linear padrão. Portanto, embora você possa desenvolver um sistema de arquivos em vários volumes físicos ( PV ), não obtém as vantagens de "equilíbrio de carga" do striping.

Para aumentar o sistema de arquivos, você faria algo assim:

pvcreate /dev/mapper/md2_crypt
vgextend crypto /dev/mapper/md2_crypt
umount /dev/mapper/crypto-srv
fsck.ext4 -C0 -f /dev/mapper/crypto-srv
lvresize -l +100%FREE /dev/mapper/crypto-srv
resize2fs /dev/mapper/crypto-srv
mount /srv

No exemplo acima, md2_crypt é um volume criptografado na parte superior de uma matriz RAID-1, mas pode ser qualquer dispositivo. crypto é o grupo de volumes ( VG ) e crypto-srv é o volume lógico que mantém o sistema de arquivos montado em /srv .

Reminder: you should really use at least a RAID-1 array because if a PV fails in a linear logical volume (LV), you can loose all the data.

Isso não fará com que a partição /srv seja distribuída pelos PVs. Isso ocorre porque não há ferramentas da terra de usuário para oferecer suporte a linear a striped conversions . Logicamente, isso seria no comando lvconvert , mas isso só suporta a movimentação de linear para mirror mode e de volta, por exemplo. E com todo o novo desenvolvimento indo para BTRFS , eu ficaria surpreso se isso fosse documentado.

Uma coisa que você pode fazer, no entanto, é que os dados novos na unidade sejam distribuídos. Isso é bastante complicado, mas pode ser feito. Vamos supor que queremos distribuir crypto-tmp , o LV por /tmp . Primeiro precisamos liberar espaço para as listras no primeiro PV:

pvmove -n crypto/tmp /dev/mapper/md1_crypt

Isto irá realocar o LV através dos PVs, no meu caso ele moveu tudo para o segundo PV:

root@foo:~# pvs --segments -o+lv_name,seg_start_pe,segtype
  PV                    VG     Fmt  Attr PSize PFree  Start SSize  LV   Start Type
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g     0   2384 root     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g  2384    256 swap     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g  2640   2560          0 free
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 10.00g  5200 709901 srv      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t  1.81t     0   2560 tmp      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t  1.81t  2560 474077          0 free

Agora você pode aumentar o sistema de arquivos (digamos que dobremos de tamanho) e informar ao LVM para distribuir os novos dados:

root@foo:~# lvresize -i 2 -l 5120 /dev/crypto/tmp
  Using default stripesize 64.00 KiB
  Extending logical volume tmp to 20.00 GiB
  Logical volume tmp successfully resized

Agora, os novos dados de /tmp estão divididos nos dois PVs:

root@foo:~# pvs --segments -o+lv_name,seg_start_pe,segtype
  PV                    VG     Fmt  Attr PSize PFree Start SSize  LV   Start Type
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g     0   2384 root     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  2384    256 swap     0 linear
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  2640   1280 tmp   2560 striped
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  3920   1280          0 free
  /dev/mapper/md1_crypt crypto lvm2 a--  2.73t 5.00g  5200 709901 srv      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t 1.80t     0   2560 tmp      0 linear
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t 1.80t  2560   1280 tmp   2560 striped
  /dev/mapper/md2_crypt crypto lvm2 a--  1.82t 1.80t  3840 472797          0 free

Mas os dados originais ainda estão no modo linear . Pode ser possível mover o sistema de arquivos para as extensões listradas, mas considere que um exercício para o leitor neste momento. :)

Veja também Crescimento de um volume LVM com striping e Redhat LVM mudando listras? .

Observe também que o inverso (convertendo striped para linear ) é possível, no entanto: É possível converter o volume lógico distribuído em volume lógico linear? .

    
por 18.02.2014 / 02:12

Tags