Назад | Перейти на главную страницу

Попытка зеркала LVM приводит к «Недостаточно свободного места»

Попытка добавить диск для зеркалирования тома LVM в CentOS 7 всегда терпит неудачу с сообщением «Недостаточно свободного места: требуется 1 экстент, но доступно только 0». После поиска решения я попытался указать диски, несколько параметров ведения журнала, добавить третий раздел журнала, но не нашел решения.

Не уверен, делаю ли я ошибку новичка или есть что-то более незаметное (я больше знаком с ZFS, впервые использую 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

Два диска имеют одинаковый размер и имеют идентичную структуру разделов через "sfdisk -d / dev / sdi> part_table; sfdisk / dev / sda <part_table". Текущая конфигурация подробно описана ниже.

# 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

Примерно с сентября 2013 года типом зеркального сегмента по умолчанию в lvm2 является raid1 (а не «зеркало»). Это делает --corelog и --mirrorlog disk/core/mirrored параметры неприменимы в этом случае по умолчанию, потому что тип сегмента raid1 всегда хранит свои журналы (фактически, подтомы метаданных) на диске в тех же PV, что и зеркалируемый LV. Вам больше не нужен третий PV для журнала или для хранения журнала в памяти.

Есть еще два вывода. Во-первых, упрощается команда для создания зеркала, потому что необходимо указать только логический том, который нужно отразить, и (обычно один) PV, на котором будет храниться зеркальный сегмент: # lvconvert -m1 /dev/my_vg/my_lv /dev/my_new_pv

Во-вторых, есть пара соображений по поводу места. Тебе нужно иметь:

  • очевидно, место на зеркальном PV для хранения копии оригинального LV,
  • но также 1 дополнительный LE на зеркальном PV для хранения журнала,
  • И ТАКЖЕ (и это то, что я пропустил некоторое время), 1 дополнительный LE на оригинал PV, чтобы хранить журнал (поскольку журнал хранится ОБЕИМ на исходном и новом PV).

Часто это дополнительное пространство, необходимое для исходного PV, вызывает проблему, потому что в существующем PV нет места даже для 1 нового LE, который можно было бы выделить для журнала. В этом случае вы можете получить ошибку типа OP, т. Е. 1 extents needed, but only 0 available.

Решение, как указано выше другими, состоит в том, чтобы изменить размер (сжать после сжатия файловой системы) существующего LV, чтобы было место для журнала, которое будет размещено на том же PV. Если вы не можете этого сделать, вы можете использовать --type mirror для принудительного использования устаревшего типа сегмента «зеркало».