gas*_*ter 41 partition lvm scientific-linux
[root@localhost ~] vgdisplay
--- Volume group ---
VG Name vg_root
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 297,59 GiB
PE Size 4,00 MiB
Total PE 76182
Alloc PE / Size 59392 / 232,00 GiB
Free PE / Size 16790 / 65,59 GiB
VG UUID XXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
光伏:
[root@localhost ~] pvdisplay
--- Physical volume ---
PV Name /dev/mapper/udisks-luks-uuid-ASDFASDF
VG Name vg_root
PV Size 297,59 GiB / not usable 2,00 MiB
Allocatable yes
PE Size 4,00 MiB
Total PE 76182
Free PE 16790
Allocated PE 59392
PV UUID YYYYYYYYYYY
Run Code Online (Sandbox Code Playgroud)
所以我有一个有 65 GB 可用空间的 VG。但是当我想缩小这个卷组大约 50 GB 时:
pvresize -tv --setphysicalvolumesize 247G /dev/mapper/udisks-luks-uuid-ASDFASDF
Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
Using physical volume(s) on command line
Test mode: Skipping archiving of volume group.
/dev/mapper/udisks-luks-uuid-ASDFASDF: Pretending size is 517996544 not 624087040 sectors.
Resizing volume "/dev/mapper/udisks-luks-uuid-ASDFASDF" to 624087040 sectors.
Resizing physical volume /dev/mapper/udisks-luks-uuid-ASDFASDF from 0 to 63231 extents.
/dev/mapper/udisks-luks-uuid-ASDFASDF: cannot resize to 63231 extents as later ones are allocated.
0 physical volume(s) resized / 1 physical volume(s) not resized
Test mode: Wiping internal cache
Wiping internal VG cache
Run Code Online (Sandbox Code Playgroud)
所以错误信息是:
cannot resize to 63231 extents as later ones are allocated.
Run Code Online (Sandbox Code Playgroud)
问:如何对 vg_root 进行碎片整理,以便删除不需要的部分?
ps:我已经发现我只需要调整 PV 的大小来调整 VG 的大小,或者有没有更好的命令来调整 VG 的大小(例如:如果我在一个 PV 上有几个 VG,我该怎么办?... )?
小智 45
以下是调整 LVM 或 LVM2 分区大小所需的步骤:
sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root
sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5
Run Code Online (Sandbox Code Playgroud)
最后一个命令 ,pvresize可能会产生错误
/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.
Run Code Online (Sandbox Code Playgroud)
您必须重新排列 LVM 末尾的未分配空间。这意味着在 root 和 swap_1 分区之后。您可以使用此命令查看当前的空间排列
pvs -v --segments /dev/sda5
Run Code Online (Sandbox Code Playgroud)
pvs 将显示这样的输出
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy jjj swap 0 linear /dev/sda5:yyyy-end
Run Code Online (Sandbox Code Playgroud)
现在用于pvmove去除外部碎片:
sudo pvmove --alloc anywhere /dev/sda5:yyyy-end
Run Code Online (Sandbox Code Playgroud)
现在让我们看看移动交换卷是否成功。
pvs -v --segments /dev/sda5
Run Code Online (Sandbox Code Playgroud)
应该显示新的卷顺序:
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii swap 0 linear /dev/sda5:xxx+1-yyyy
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy+1 end 0 free
Run Code Online (Sandbox Code Playgroud)
之后,使用 GParted 并将 LVM 调整为最大使用区域。其余的将在未分配的空间中。
Sté*_*las 39
您可以使用pvmove将这些范围移动到设备或其他设备的开头:
sudo pvmove --alloc anywhere /dev/device:60000-76182
Run Code Online (Sandbox Code Playgroud)
然后pvmove选择将范围移动到的位置,或者您可以指定将它们移动到的位置。
查看pvs -v --segments /dev/device以查看当前分配了哪些范围。