我已经为 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 的最后一个扇区。