LVM 问题:无法调整为 N 个扩展区,因为已分配 M 个

LVM 问题:无法调整为 N 个扩展区,因为已分配 M 个

我使用 LVM 设置了默认的 Fedora 分区。现在,我想缩小我的分区以创建 1 个新分区。您能帮我理解为什么我会收到这样的错误吗?

[root@host]# lvm pvresize /dev/sda2 --setphysicalvolumesize 60G
  /dev/sda2: cannot resize to 1919 extents as 22340 are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized

关于我的分区的一些细节:

[root@host]# lvm pvs
  PV         VG        Fmt  Attr PSize   PFree
  /dev/sda2  vg_andrew lvm2 a--  698.12g    0

[root@host]# pvs --segments
  PV         VG        Fmt  Attr PSize   PFree Start SSize
  /dev/sda2  vg_andrew lvm2 a--  698.12g    0      0   310
  /dev/sda2  vg_andrew lvm2 a--  698.12g    0    310 20430
  /dev/sda2  vg_andrew lvm2 a--  698.12g    0  20740  1600

[root@host]# df -h
Filesystem                     Size  Used Avail Use% Mounted on
rootfs                          50G  6.5G   43G  14% /
devtmpfs                       3.9G     0  3.9G   0% /dev
tmpfs                          3.9G  816K  3.9G   1% /dev/shm
tmpfs                          3.9G  1.1M  3.9G   1% /run
/dev/mapper/vg_andrew-lv_root   50G  6.5G   43G  14% /
tmpfs                          3.9G     0  3.9G   0% /sys/fs/cgroup
tmpfs                          3.9G     0  3.9G   0% /media
/dev/sda1                      485M   96M  364M  21% /boot
/dev/mapper/vg_andrew-lv_home  629G   53G  545G   9% /home

抱歉,如果答案很明显,我是 LVM 新手。谢谢你的帮助。

答案1

首先,如果您已从物理卷启动,则无法调整物理卷的大小。从救援 CD 启动,运行 pvscan、vgscan 和 lvscan,然后按照以下步骤操作:

  1. 调整卷组中所有逻辑卷的文件系统大小vg_andrew
  2. 调整逻辑卷的大小,使所有卷的总和小于所需的物理卷的大小
  3. 现在调整卷组的大小vg_andrew(它是所有逻辑卷的容器)
  4. 现在您可以调整物理卷本身的大小。之后您仍需要调整保存物理卷的分区的大小。

总而言之,这不是一项简单的任务。您必须小心谨慎地正确调整逻辑卷中的文件系统大小,以免丢失任何数据。

如果您发布输出lvdisplay,我们vgdisplay也许pvdisplay能够提供进一步的详细信息,但我上面描述的过程是正确的方法。

答案2

我个人的方法;我喜欢使用 KDE 进行partitionmanager大部分磁盘工作;它甚至可以应对缩小的 LV 及其中的文件系统同时。我使用它来缩小 LV,以便能够回收一​​些空间。

现在我遇到了 OP 的问题——PV 大小调整失败。

那么,让我们看看正在使用的范围:

******# pvs -v --segments /dev/sda3                 
  PV         VG         Fmt  Attr PSize   PFree   Start SSize LV   Start Type   PE Ranges            
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g     0  3239 var      0 linear /dev/sda3:0-3238     ******
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g  3239  3436          0 free                        
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g  6675  9680 usr      0 linear /dev/sda3:6675-16354 
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g 16355  8360          0 free                        
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g 24715   476 tmp      0 linear /dev/sda3:24715-25190
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g 25191 12800 home     0 linear /dev/sda3:25191-37990
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g 37991  1053 tmp    476 linear /dev/sda3:37991-39043
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g 39044  2128 root     0 linear /dev/sda3:39044-41171
  /dev/sda3  metabox-vg lvm2 a--  237.73g 122.98g 41172 19688          0 free

我查看了最后的非可用空间:

39044  2128 root     0 linear /dev/sda3:39044-41171

以及第一个空闲空间

 3239  3436          0 free 

然后我跑

******# pvmove --alloc anywhere /dev/sda3:39044+2128 /dev/sda3:3239+2128

将末尾的块移动到第一个空闲块。

然后重复...

现在,在 SSD 上,您可能不介意将单个 LV 的范围分割开来。您可能惯于不会在 HDD 上执行此操作 - 在这种情况下,您必须权衡您回收的空间量、您对 LV 碎片的容忍度以及您愿意等待“完整碎片整理”可能需要的所有位整理的时间。

当你移动部分 LV 时,一些 bash 数学也会派上用场:

***# pvmove --alloc anywhere /dev/sda3:$((37990-8359))+8359 /dev/sda3:16355+8359

答案3

最好的方法是执行以下操作:

# yum install system-config-lvm
...
# system-config-lvm

然后通过 GUI 进行操作),但在进行 LVM 等更改时要小心(确保您已备份!)

相关内容