我使用 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,然后按照以下步骤操作:
- 调整卷组中所有逻辑卷的文件系统大小
vg_andrew
- 调整逻辑卷的大小,使所有卷的总和小于所需的物理卷的大小
- 现在调整卷组的大小
vg_andrew
(它是所有逻辑卷的容器) - 现在您可以调整物理卷本身的大小。之后您仍需要调整保存物理卷的分区的大小。
总而言之,这不是一项简单的任务。您必须小心谨慎地正确调整逻辑卷中的文件系统大小,以免丢失任何数据。
如果您发布输出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 等更改时要小心(确保您已备份!)