Tentativa de espelho LVM resulta em “Espaço livre insuficiente”

5

A tentativa de adicionar um disco para espelhar um volume LVM no CentOS 7 sempre falha com "Espaço livre insuficiente: 1 extensão necessária, mas apenas 0 disponível". Tendo procurado por uma solução, eu tentei especificar discos, várias opções de log, adicionando 3ª partição de log, mas não encontrei uma solução

Não tenho certeza se estou cometendo um erro de novato ou há algo mais sutil errado (estou mais familiarizado com o ZFS, novo no uso do LVM):

# lvconvert -m1 centos_bi/home
  Insufficient free space: 1 extents needed, but only 0 available  
# lvconvert -m1 --corelog centos_bi/home
  Insufficient free space: 1 extents needed, but only 0 available
# lvconvert -m1 --corelog --alloc anywhere centos_bi/home
  Insufficient free space: 1 extents needed, but only 0 available
# lvconvert -m1 --mirrorlog mirrored --alloc anywhere centos_bi/home /dev/sda2
  Insufficient free space: 1 extents needed, but only 0 available  
# lvconvert -m1 --corelog --alloc anywhere centos_bi/home /dev/sdi2 /dev/sda2
  Insufficient free space: 1 extents needed, but only 0 available

Os dois discos são do mesmo tamanho e têm layouts de partição idênticos via "sfdisk -d / dev / sdi > part_table; sfdisk / dev / sda < part_table". A configuração atual é detalhada abaixo.

# pvs
  PV         VG        Fmt  Attr PSize   PFree
  /dev/sda1  centos_bi lvm2 a--  496.00m 496.00m
  /dev/sda2  centos_bi lvm2 a--  465.27g 465.27g
  /dev/sdi2  centos_bi lvm2 a--  465.27g      0

# vgs
  VG        #PV #LV #SN Attr   VSize   VFree
  centos_bi   3   3   0 wz--n- 931.02g 465.75g 

# lvs -a -o +devices
  LV   VG        Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert Devices
  home centos_bi -wi-ao---- 391.64g                                              /dev/sdi2(6050)
  root centos_bi -wi-ao----  50.00g                                              /dev/sdi2(106309)
  swap centos_bi -wi-ao----  23.63g                                              /dev/sdi2(0)


# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdi2
  VG Name               centos_bi
  PV Size               465.27 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              119109
  Free PE               0
  Allocated PE          119109

  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos_bi
  PV Size               465.27 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              119109
  Free PE               119109
  Allocated PE          0

  --- Physical volume ---
  PV Name               /dev/sda1
  VG Name               centos_bi
  PV Size               500.00 MiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              124
  Free PE               124
  Allocated PE          0

# vgdisplay
  --- Volume group ---
  VG Name               centos_bi
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               931.02 GiB
  PE Size               4.00 MiB
  Total PE              238342
  Alloc PE / Size       119109 / 465.27 GiB
  Free  PE / Size       119233 / 465.75 GiB

# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos_bi/swap
  LV Name                swap
  VG Name                centos_bi
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-07 16:34:34 -0400
  LV Status              available
  # open                 2
  LV Size                23.63 GiB
  Current LE             6050
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos_bi/home
  LV Name                home
  VG Name                centos_bi
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-07 16:34:35 -0400
  LV Status              available
  # open                 1
  LV Size                391.64 GiB
  Current LE             100259
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/centos_bi/root
  LV Name                root
  VG Name                centos_bi
  LV Write Access        read/write
  LV Creation host, time localhost, 2014-08-07 16:34:37 -0400
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
    
por MattK 21.08.2014 / 17:15

1 resposta

11

Desde setembro de 2013, o tipo de segmento de espelho padrão em lvm2 foi "raid1" (não "espelho"). Isso torna as opções --corelog e --mirrorlog disk/core/mirrored inaplicáveis neste caso padrão, porque o tipo de segmento raid1 sempre armazena seus logs (na verdade, subvolumes de metadados) no disco no mesmo PV (s) que o LV sendo espelhado. Você não precisa mais de um terceiro PV para o registro ou para armazenar o registro na memória.

Existem duas outras implicações. Primeiro, o comando para criar o espelho é simplificado, porque há apenas a necessidade de especificar o LV a ser espelhado, e o (geralmente um) PV no qual o segmento de espelho será armazenado: # lvconvert -m1 /dev/my_vg/my_lv /dev/my_new_pv

Em segundo lugar, há algumas considerações de espaço. Você precisa ter:

  • obviamente, espaço no espelho PV para armazenar a cópia do LV original,
  • mas também, 1 LE adicional no espelho PV, para armazenar o log,
  • E TAMBÉM (e este é o ponto que eu perdi por algum tempo), 1 LE adicional no original PV, para armazenar o log (desde que o log é armazenado em ambos o PV original eo novo PV).

Geralmente, esse requisito de espaço adicional original-PV causa um problema porque não há espaço no PV existente para que até 1 novo LE seja alocado para o log. Nesse caso, você pode receber um erro do tipo OP encontrado, por exemplo, 1 extents needed, but only 0 available .

O remédio, como indicado acima por outros, é redimensionar (encolher, após encolher o sistema de arquivos) o LV existente, para que haja espaço para o registro ser alocado no mesmo PV. Se você não puder fazer isso, poderá usar --type mirror para forçar o tipo de segmento 'espelho' herdado.

    
por 04.01.2015 / 02:22

Tags