为 KVM 客户机调整 LVM 分区大小

为 KVM 客户机调整 LVM 分区大小

我已经为 KVM 客户机创建了 LVM 分区。KVM 客户机本身也在使用 LVM 分区。

在虚拟机管理程序上,客户机的 LVM 分区的初始大小为 160GB。我已扩展到 200GB。

我重新启动了客户端并且它识别了新的尺寸:

    # fdisk -l

Disk /dev/vda: **214.7 GB**, 214748364800 bytes
16 heads, 63 sectors/track, 416101 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c1b11

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           3        1018      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/vda2            1018      332882   167259136   8e  Linux LVM
Partition 2 does not end on cylinder boundary.

Disk /dev/mapper/vg_main-lv_root: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_main-lv_root doesn't contain a valid partition table

Disk /dev/mapper/vg_main-lv_swap: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_main-lv_swap doesn't contain a valid partition table

Disk /dev/mapper/vg_main-lv_mysql: 158.4 GB, 158385307648 bytes
255 heads, 63 sectors/track, 19255 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_main-lv_mysql doesn't contain a valid partition table

但是我无法扩展物理卷来为客户机上的 LVM 分配新的空间 (/dev/mapper/vg_main-lv_mysql):

# pvresize -v /dev/vda2
Using physical volume(s) on command line
Archiving volume group "vg_main" metadata (seqno 17).
Resizing volume "/dev/vda2" to 334516224 sectors.
No change to size of physical volume /dev/vda2.
Updating physical volume "/dev/vda2"
Creating volume group backup "/etc/lvm/backup/vg_main" (seqno 18).
Physical volume "/dev/vda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized

答案1

/dev/vda2您还需要调整分区大小,因为您的物理卷位于分区中。您可以使用parted在线调整分区大小。调整分区大小后,您可以使用 调整 pv 的大小pvresize,然后使用 调整 LV 的大小lvextend

最好的,

福尔克

答案2

Falk 说得对,你可以调整分区大小,但一个更安全的方法,并且通常不需要重启,是使用 parted 创建一个新的分区,然后创建一个新的 PV,将其添加到 VG,然后扩展 LV,最后 resize2fs FS。

只是想让你知道,方法不止一种。

答案3

添加新的物理卷将增加碎片,另外这不是您可以定期执行的操作,否则最终会导致过多的 PV。

增加 /dev/vda2 的大小,使其覆盖(当前)未分区的空间,这是正确的做法。如果您查看分区表,会发现 /dev/vda2 只有 160GB 大,而磁盘有 216GB。

有一个很棒的工具叫虚拟调整大小(libguestfs 工具的一部分)它完全可以满足您的需要。

它必须在 KVM 主机本身上使用,而不是在客户机内部使用。

如果 KVM 主机运行的是 Debian wheezy 或更高版本,则可以使用以下命令安装此工具:

apt-get install libguestfs-tools
apt-get update (without this, update-guestfs-appliance might fail)
update-guestfs-appliance

如果你正在使用其他发行版,请参阅http://libguestfs.org/guestfs-faq.1.html#binaries

假设包含客户的 LV 的名称是 /dev/vg/guest,您必须运行:

lvrename /dev/vg/guest /dev/vg/guest-backup
lvcreate -n guest -L 200G /dev/vg
virt-resize /dev/vg/guest-backup /dev/vg/guest --expand /dev/vda2 

virt-resize 会将旧 LV 中的所有数据复制到新 LV,并扩展分区 /dev/vda里面LV。当然,这假设您在 KVM 主机的 vg 中有 200GB 可用空间。

如果没有,那么您必须按照 Chopper3 的建议进行操作:更新客户机的分区表,以便分区 /dev/vda2 的“最后”扇区是 /dev/vda 的最后一个扇区。

相关内容