Lvm

擴展 lvm 時合適的可分配範圍不足

  • October 30, 2019

我有一個大約 127GB 可用空間的捲組 (vg)。我正在嘗試將邏輯卷擴展到 +50GB 但是我得到了

合適的可分配範圍不足

這很奇怪,因為 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

數據 VG 中的 LV 使用“繼承”策略。VG 的策略是緊貼的,它試圖從同一個 PV 分配新的範圍。詳情請參閱lvm(8)

要覆蓋,您可以lvextend使用附加--alloc normal選項執行命令,或者更改預設執行vgchange --alloc normal data

當我嘗試擴展我的一個 LV 時,我收到了相同的錯誤消息。該政策已設置為“正常”。就我而言,問題在於條帶化。我在兩個 PV 之上建構了 VG,並且 LV 在這兩個 PV 上進行了條帶化。當我再添加一個 PV 時,我無法再擴展 LV,因為它沒有兩個可用的 PV 來維持條帶化。

條帶設置的可用選項:

  1. 始終在組中添加 PV 以匹配條帶化(即,如果您有兩個條帶 LV,則添加兩個新 PV)。
  2. (如果上述方法不可行)使用禁用條帶擴展 LV ( lvextend -L+1G data -i1)。這將創建另一個 #Str=1 段,在lvs --segments輸出中可見。請注意,根據數據所在的段訪問數據時,可能會有一些性能差異。

引用自:https://serverfault.com/questions/829372