ฉันได้สร้างพาร์ติชัน LVM สำหรับแขก KVM แล้ว แขก 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
answer

คุณต้องปรับขนาดพาร์ติชั่น/dev/vda2ด้วย เนื่องจากฟิสิคัลวอลุ่มของคุณอยู่ในพาร์ติชั่น คุณสามารถใช้partedเพื่อปรับขนาดพาร์ติชันออนไลน์ได้ เมื่อคุณปรับขนาดพาร์ติชั่นแล้ว คุณสามารถปรับขนาด pv ด้วยpvresizeและหลังจากนั้น LV ด้วยlvextend.

ดีที่สุด,

Falk

Falk ถูกแล้วที่คุณสามารถปรับขนาดพาร์ติชั่นได้ แต่เป็นวิธีที่ปลอดภัยกว่า และแบบที่ใช้งานได้ปกติโดยไม่ต้องรีบูตคือใช้ parted เพื่อสร้างพาร์ติชั่นใหม่จากนั้นสร้าง PV ใหม่ เพิ่มลงใน VG จากนั้นขยาย LV และสุดท้าย ปรับขนาด2fs 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

สมมติว่าชื่อ 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 แน่นอนว่าสิ่งนี้ถือว่าคุณมี 200GB ใน vg ของโฮสต์ KVM

หากคุณไม่ทำเช่นนั้น คุณต้องทำตามที่ Chopper3 แนะนำ: อัปเดตตารางพาร์ติชั่นของแขกเพื่อให้เซกเตอร์ "สุดท้าย" ของพาร์ติชั่น /dev/vda2 เป็นเซกเตอร์สุดท้ายของ /dev/vda