调整KVM guest虚拟机的LVM分区大小

我为KVM来宾创build了LVM分区。 KVM客户端也使用LVM分区。

虚拟机pipe理程序中客户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 

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

最好,

福尔克

Falk的权利,你可以调整分区,但一个潜在的更安全的方式,一般没有重新启动的工作将是使用parted创build一个新的分区,然后创build一个新的PV,将其添加到VG,然后扩展LV,最后resize2fs的FS。

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

添加新的物理卷会增加碎片,也不是您可以定期执行的操作,否则会导致太多的PV。

增加/ dev / vda2的大小以覆盖(当前)未分区的空间是正确的方法。 如果你看看你的分区表,/ dev / vda2只有160GB大,而磁盘是216GB。

有一个叫做virt-resize (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

假设包含该guest虚拟机的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,并在LV内扩展分区/ dev / vda。 当然这假设你在KVM主机的vg中有200GB的可用空间。

如果你不这样做,那么你必须按照Chopper3的build议来做:更新客户机的分区表,以便分区/ dev / vda2的“最后”扇区是/ dev / vda的最后一个扇区。