扩展 lvm 时,合适的可分配范围不足

gio*_*nda 7 lvm

我有一个大约 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*ian 6

数据 VG 中的 LV 使用“继承”策略。VG 的策略是 cling,它尝试从同一个 PV 分配新的范围。详情请参阅lvm(8)

要覆盖,您可以lvextend使用附加--alloc normal选项运行命令,或者更改默认运行vgchange --alloc normal data

  • 是的,你是对的!vgs 命令上的那个小属性字母 (l) 是关键。我有点困惑,因为我希望对于自行车政策,会使用字母“c”,但该字母保留给“(c)ontiguous。我在任何地方都使用了“--alloc”并工作得很好。谢谢! (2认同)
  • 警告:在任何地方使用都可能是危险的,特别是如果您有 RAID 卷 - 您最终可能会在同一个磁盘上有多个分支 (2认同)

小智 6

当我尝试扩展我的 LV 之一时,我收到了同样的错误消息。该政策已被设置为“正常”。就我而言,问题出在条纹上。我在两个 PV 之上构建了 VG,并且 LV 在这两个 PV 上呈条纹状。当我再添加一个 PV 时,我无法再扩展 LV,因为它没有两个可用的 PV 来维持条带化。

条纹设置的可用选项:

  1. 始终按组添加 PV 以匹配条带化(即,如果您有两条带 LV,则添加两个新的 PV)。
  2. (如果上述方法不可能)通过禁用条带化 ( lvextend -L+1G data -i1) 来扩展 LV。这将创建另一个 #Str=1 的段,如lvs --segments输出中所示。请注意,访问数据时可能会存在一些性能差异,具体取决于数据所在的段。