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

Недостаточно подходящих выделяемых экстентов при расширении lvm

У меня есть группа томов (vg) со свободным пространством около 127 ГБ. Я пытаюсь расширить логический том до +50 ГБ, но получаю

недостаточно подходящих для размещения экстентов

Это довольно странно, поскольку в VG достаточно места для его выделения. Ниже вы можете найти информацию о моей настройке LV:

root@server:~# df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/dm-0                          19G  4.3G   15G  23% /
udev                               10M     0   10M   0% /dev
tmpfs                              19G  341M   19G   2% /run
tmpfs                              48G     0   48G   0% /dev/shm
tmpfs                             5.0M     0  5.0M   0% /run/lock
tmpfs                              48G     0   48G   0% /sys/fs/cgroup
/dev/mapper/data-lvm1   158G  135G   24G  86% /srv/mongodb/lvm1
/dev/mapper/data-lvm2  543G  509G   35G  94% /srv/mongodb/lvm2

root@server:~# lvs
  LV             VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvm1  data  -wi-ao---- 160.00g                                                    
  lvm2  data  -wi-ao---- 551.00g                                                    
  root  local -wi-ao----  19.31g                                                    
  swap  local -wi-ao----  11.18g                                                    

root@server:~# vgs
  VG    #PV #LV #SN Attr   VSize   VFree  
  data    2   2   0 wz--l- 838.24g 127.24g
  local   1   2   0 wz--n- 136.70g 106.21g

root@server:~# pvs
  PV         VG    Fmt  Attr PSize   PFree  
  /dev/sda1  local lvm2 a--  136.70g 106.21g
  /dev/sdb   data  lvm2 a--  279.36g 119.36g
  /dev/sdc   data  lvm2 a--  558.88g   7.88g

root@server:~# lvextend -L +50G /dev/data/lvm2 
  Insufficient suitable allocatable extents for logical volume lvm2: 10783 more required

root@server:~# vgscan 
  Reading all physical volumes.  This may take a while...
  Found volume group "data" using metadata type lvm2
  Found volume group "local" using metadata type lvm2

root@server:~# pvscan 
  PV /dev/sdb    VG data    lvm2 [279.36 GiB / 119.36 GiB free]
  PV /dev/sdc    VG data    lvm2 [558.88 GiB / 7.88 GiB free]
  PV /dev/sda1   VG local   lvm2 [136.70 GiB / 106.21 GiB free]
  Total: 3 [974.94 GiB] / in use: 3 [974.94 GiB] / in no VG: 0 [0   ]

root@server:~# lvscan 
  ACTIVE            '/dev/data/lvm1' [160.00 GiB] inherit
  ACTIVE            '/dev/data/lvm2' [551.00 GiB] inherit
  ACTIVE            '/dev/local/root' [19.31 GiB] inherit
  ACTIVE            '/dev/local/swap' [11.18 GiB] inherit

LV в VG данных используют «унаследованную» политику. Политика VG - цепляние, которая пытается выделить новые экстенты из того же PV. Видеть lvm(8) для подробностей.

Чтобы переопределить, вы можете запустить lvextend команда с дополнительными --alloc normal вариант или изменить запуск по умолчанию vgchange --alloc normal data.

Я получил такое же сообщение об ошибке, когда попытался расширить один из моих LV. Политика уже была установлена ​​на «нормальную». В моем случае проблема была в чередовании. Я построил VG поверх двух PV, а LV был разделен на эти два PV. Когда я добавил еще один PV, я больше не мог расширять LV, так как у него не было двух свободных PV для поддержания чередования.

Доступные варианты для полосатой настройки:

  1. всегда добавляйте PV в группы, чтобы они соответствовали чередованию (т.е. добавляйте два новых PV, если у вас есть LV с двумя полосами).
  2. (если это невозможно) расширить LV с отключенным чередованием (lvextend -L+1G data -i1). Это создаст еще один сегмент с # Str = 1, как видно на lvs --segments вывод. Обратите внимание, что при доступе к данным, вероятно, будет небольшая разница в производительности в зависимости от сегмента, в котором они расположены.