คุณจะเพิ่มพื้นที่ดิสก์แขกของ KVM ได้อย่างไร


100

ฉันตั้งค่าผู้เยี่ยมชม Ubuntu บนโฮสต์ CentOS KVM ด้วยพื้นที่ดิสก์เริ่มต้น 6GB ฉันจะเพิ่มพื้นที่ดิสก์ของผู้เยี่ยมชม Ubuntu จากบรรทัดคำสั่งได้อย่างไร

แก้ไข # 1: ฉันใช้ไฟล์อิมเมจดิสก์ (qemu)


1
ปรับขนาดออนไลน์: serverfault.com/a/952868/30946
Mircea Vutcovici

คำตอบ:


115
  1. หยุด VM
  2. วิ่งqemu-img resize vmdisk.img +10Gเพื่อเพิ่มขนาดภาพ 10Gb
  3. เริ่มต้น VM ปรับขนาดพาร์ติชันและโครงสร้าง LVM ภายในปกติ

อ่าคุณชนะฉันไปแล้วฉันเพิ่งสังเกตเห็นตัวเลือกการปรับขนาดบน qemu-img ในหน้า man ดังนั้นนี่ช่วยประหยัดสองขั้นตอน ดี!
slm

1
ทำงานเพื่อปรับขนาด * .qcow2 img ของฉันอีกครั้งบน RHEL6.6 ขอบคุณ!
Jacob Goulden

8
start the VM, resize the partitions and LVM structure within it normallyทำอย่างไร? กรุณาอธิบาย
Waki

1
คุณไม่สามารถส่งทุกอย่างให้คุณบนแผ่นเสียง หากคุณได้ลองและไม่สามารถปรับขนาดพาร์ติชันหรือ LVs ให้เปิดคำถามใหม่อธิบายสิ่งที่คุณได้ลองและสิ่งที่ใช้งานไม่ได้
dyasny

4
ในการปรับขนาดพาร์ติชันและ LVM ให้ทำตามขั้นตอนทั้งหมดตามที่อธิบายไว้ในบทความที่ยอดเยี่ยมนี้: sandilands.info/sgordon/ …
skonsoft

32

วิธีการออนไลน์ (ใช้ qemu, libvirt และ virtio-block)

ดีขึ้นหรือแย่ลงคำสั่งด้านล่างจะทำงานแม้ว่าจะติดตั้งดิสก์เสมือนเป้าหมายแล้ว ซึ่งจะเป็นประโยชน์ในสภาพแวดล้อมที่ดิสก์ไม่สามารถเดินเท้า (เช่นพาร์ทิชันราก) ที่ VM จะต้องอยู่บนและเจ้าของระบบก็เต็มใจที่จะถือว่าความเสี่ยงของการทุจริตข้อมูล ในการลบความเสี่ยงนั้นคุณจะต้องเข้าสู่ระบบ VM และถอนการติดตั้งดิสก์เป้าหมายก่อนสิ่งที่ไม่สามารถทำได้

ทำสิ่งต่อไปนี้จาก KVM hypervisor

  1. เพิ่มขนาดของไฟล์อิมเมจของดิสก์เอง (ระบุจำนวนที่จะเพิ่ม):

    qemu-img resize <my_vm>.img +10G
    
  2. รับชื่อของอุปกรณ์ virtio ผ่านเชลล์ libvirt ( drive-virtio-disk0ในตัวอย่างนี้):

    virsh qemu-monitor-command <my_vm> info block --hmp
      drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
      drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
    
  3. ส่งสัญญาณไดรเวอร์ virtio เพื่อตรวจจับขนาดใหม่ (ระบุความจุใหม่ทั้งหมด):

    virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
    

จากนั้นเข้าสู่ระบบ VM การรันdmesgควรรายงานว่าดิสก์ virtio ตรวจพบการเปลี่ยนแปลงความจุ ณ จุดนี้ไปข้างหน้าและปรับขนาดพาร์ติชันและโครงสร้าง LVM ของคุณตามต้องการ


4
man page สำหรับ qemu-img (ของฉันลงวันที่ 2016-05-08) กล่าวว่า: " คำเตือน:อย่าใช้ qemu-img เพื่อแก้ไขภาพที่ใช้งานโดยเครื่องเสมือนที่ทำงานอยู่หรือกระบวนการอื่นใดซึ่งอาจทำลายภาพได้เช่นกัน โปรดทราบว่าการสอบถามรูปภาพที่กำลังถูกแก้ไขโดยกระบวนการอื่นอาจประสบกับสถานะไม่สอดคล้องกัน " ดังนั้นฉันไม่แน่ใจว่า (ขั้นตอนแรก) ปลอดภัยเมื่อเครื่องเสมือนยังทำงานอยู่หรือไม่
user44400

ไม่ทำงานบน centos7 + kvm
e-info128

1
มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน การใช้อุปกรณ์ ceph และ virtio block เราจัดเก็บข้อมูลแอปพลิเคชัน / ฐานข้อมูล MySQL บนพาร์ติชันแยกต่างหาก หยุดแอปพลิเคชันที่เข้าถึงพาร์ติชันนี้ ถอนติดตั้ง ปรับขนาด fsck จากนั้นติดตั้งอีกครั้งด้วยขนาดใหม่ ไม่จำเป็นต้องปิดระบบ
nelaaro

เช่นเดียวกับคำตอบนี้ แต่ใช้ libvirt แทนคอนโซลมอนิเตอร์: serverfault.com/a/952868/30946
Mircea Vutcovici

21

คำถามผิดพลาดของเซิร์ฟเวอร์เหล่านี้คล้ายกัน แต่มีความเฉพาะเจาะจงมากขึ้นดิสก์ปรับขนาดแบบออนไลน์ของ KVM? และCentos Xen ปรับขนาดพาร์ติชัน DomU และกลุ่มเสียง คำถามที่ 1 ถามถึงวิธีเพิ่มแขก KVM ในขณะที่ออนไลน์ขณะที่อันดับ 2 คือ XEN เฉพาะโดยใช้ LVM ฉันถามว่าจะทำอย่างไรให้สำเร็จในขณะที่ KVM ออฟไลน์

หมายเหตุ:การเชื่อมโยงนี้เป็นประโยชน์สำหรับวิธี # 1 และแสดงให้เห็นถึงวิธีการที่จะประสบความสำเร็จในการเพิ่มพื้นที่ว่างในดิสก์ KVM ของ (ext3 based), HOWTO: ปรับขนาด KVM เครื่องเสมือนภาพ

สิ่งหนึ่งที่ต้องระวังสำหรับแขกของ KVM ก็คือพาร์ติชั่นที่ใช้ในนั้นสามารถทำให้เกิดวิธีการที่คุณสามารถใช้เพื่อเพิ่มพื้นที่ดิสก์

วิธีที่ # 1:พาร์ติชั่นเป็นไปตาม ext2 / ext3 / ext4

ถั่วของวิธีนี้มีดังนี้:

# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak

# 3. create a new image
qemu-img create -f raw addon.raw 30G

# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img

ขณะนี้มีไฟล์ mykvm.img ที่ใหญ่กว่าอยู่ในมือให้บู๊ตgpartedและขยายพาร์ติชั่นที่มีอยู่ในพื้นที่ดิสก์ที่เพิ่งเพิ่มเข้าไป ขั้นตอนสุดท้ายนี้ขยายพาร์ติชันระบบปฏิบัติการโดยทั่วไปเพื่อให้สามารถใช้ประโยชน์จากพื้นที่เพิ่มเติม

วิธีที่ # 2:พาร์ติชั่นใช้ระบบ LVM

นี่คือขั้นตอนที่ฉันปฏิบัติตามโดยคร่าวๆเพื่อปรับขนาดแขก KVM ที่ใช้ LVM ภายใน

  1. ปิดระบบ VM
  2. เพิ่มพื้นที่เพิ่มเติมให้กับ "ไฟล์ภาพ" ของแขก (เช่น: cat old.img 10G_addon.raw >> new.img
  3. เริ่มต้น VM (ใช้ new.img ที่สร้างขึ้นใหม่)
  4. เรียกใช้ fdisk ภายใน VM และลบ & สร้างพาร์ติชัน LVM ขึ้นใหม่

    % fdisk /dev/vda
    ...
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    /dev/vda2              14        3263    26105625   8e  Linux LVM
    
    Command (m for help): d
    Partition number (1-4): 2
    
    Command (m for help): p
    
    Disk /dev/vda: 48.3 GB, 48318382080 bytes
    255 heads, 63 sectors/track, 5874 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    
    Command (m for help): n 
    Command action
      e   extended
      p   primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (14-5874, default 14): 14
    Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874): 
    Using default value 5874
    
    Command (m for help): p
    
    Disk /dev/vda: 48.3 GB, 48318382080 bytes
    255 heads, 63 sectors/track, 5874 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    /dev/vda2              14        5874    47078482+  83  Linux
    
    Command (m for help): t
    Partition number (1-4): 2
    Hex code (type L to list codes): 8e
    Changed system type of partition 2 to 8e (Linux LVM)
    
    Command (m for help): p
    
    Disk /dev/vda: 48.3 GB, 48318382080 bytes
    255 heads, 63 sectors/track, 5874 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    /dev/vda2              14        5874    47078482+  8e  Linux LVM
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: Device or 
    resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    %
    
  5. รีบูต VM

  6. ปรับขนาดฟิสิคัลวอลุ่ม LVM

    % pvdisplay 
      --- Physical volume ---
      PV Name               /dev/vda2
      VG Name               VolGroup00
      PV Size               24.90 GB / not usable 21.59 MB
      Allocatable           yes (but full)
      PE Size (KByte)       32768
      Total PE              796
      Free PE               0
      ...
    
    % pvresize /dev/vda2
    
    % pvdisplay
      --- Physical volume ---
      PV Name               /dev/vda2
      VG Name               VolGroup00
      PV Size               44.90 GB / not usable 22.89 MB
      Allocatable           yes 
      PE Size (KByte)       32768
      Total PE              1436
      Free PE               640
      ...
    
  7. ปรับขนาดปริมาณ LVM Logical

      % lvresize /dev/VolGroup00/LogVol00 -l +640
      Extending logical volume LogVol00 to 43.88 GB
      Logical volume LogVol00 successfully resized
    
  8. ขยายระบบไฟล์

      % resize2fs /dev/VolGroup00/LogVol00 
      resize2fs 1.39 (29-May-2006)
      Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
      Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
      The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
    

ด้านบนเป็นตัวอย่างของฉัน แต่ฉันทำตามขั้นตอนในเว็บไซต์นี้


วิธี # 1 ในโพสต์นี้ดูเหมือนว่าจะทำงานไม่ดีนัก - ผู้จัดการเครื่องเสมือนในหมวกแดงไม่รายงานขนาดใหม่ในภายหลัง วิธีการที่แนะนำโดย @dyasny ดูเหมือนจะทำงานได้ดีกว่าอย่างน้อยในส่วนนี้
Iwan Aucamp

@IwanAucamp - น่าสนใจฉันใช้virt-managerและใช้วิธีการ # 1 & # 2 อย่างกว้างขวางก่อนที่ฉันจะย้ายเซิร์ฟเวอร์ KVM ของเราไปยัง KVM เวอร์ชันใหม่ (CentOS 5 -> CentOS 6) ตอนนี้ฉันใช้qemu-img resizeวิธีการเช่นกัน
slm

สำหรับวิธีที่ # 2 คุณอาจพบ lvextend handier เป็นขั้นตอนที่ 7: lvextend /dev/Volgroup/lvname /dev/vda2(ทั้งหมดในหนึ่งบรรทัดโดยที่ / dev / vda2 จะเป็นฟิสิคัลวอลุ่มของคุณ) หากไม่มีตัวเลือกอื่น ๆ มันจะใช้ขนาดสูงสุดในกลุ่มวอลุ่มนั้น
Mike S

วิธีที่ # 2 ขั้นตอนที่ 4 จะไม่ทำงานหากมีโลจิคัลวอลุ่มในตารางพาร์ติชัน หลังจากการพักผ่อนประเภทพาร์ติชันเพิ่มเติมภาคที่พร้อมใช้งานครั้งแรกจะไม่ตรงกับสิ่งที่มีก่อนการเปลี่ยนแปลงอีกต่อไป เช่นถ้าเซกเตอร์แรกของโลจิคัลพาร์ติชันของคุณคือ 1001472 หลังจากการเปลี่ยนแปลงมันจะเป็น 1003518 (สมมติว่าดิสก์ 10G ก่อนหน้าและ 50G หลังจากปรับขนาด) ใครรู้วิธีสร้างโลจิคัลวอลุ่มในภาคแรกเดียวกันถ้าเป็นไปได้
ILIV

1
นี่คือเนื่องจาก fdisk โดยค่าเริ่มต้นใช้ข้อ จำกัด การจัดตำแหน่ง (ขั้นตอน 1MB) เพื่อพาร์ทิชัน หากต้องการหลีกเลี่ยงให้ยอมรับค่าเริ่มต้นที่ 1003518 เข้าสู่โหมดผู้เชี่ยวชาญ (x) จากนั้นเลือก b และตั้งค่าเซกเตอร์แรกเป็น 1001472 ดูunix.stackexchange.com/a/320447สำหรับรายละเอียด
ILIV

11

ปรับขนาดและขยายพาร์ติชันภายในในขั้นตอนเดียว

ฉันมีโฮสต์ Ubuntu ที่มีอิมเมจไฟล์ผู้เยี่ยมชม qcow2 และต้องการปรับขนาดดิสก์และขยายพาร์ติชันที่เหมาะสมทั้งหมดในขั้นตอนเดียว มันต้องการให้คุณตั้งค่ายูทิลิตี้ระบบไฟล์แขก libvirt แต่สิ่งเหล่านี้มีประโยชน์ที่จะมีอยู่แล้ว

แรงบันดาลใจจากที่นี่: http://libguestfs.org/virt-resize.1.html

คำสั่งที่สำคัญที่นี่คือ: virt-resize

  • นี่เป็นยูทิลิตี้ libvirt
  • มันสามารถขยายเกสต์ดิสก์และขยายพาร์ติชันภายในหนึ่งขั้นตอน
  • มันคัดลอกดิสก์มันไม่ขยายในสถานที่
    • นี่เป็นสิ่งที่ดีเพราะคุณมีต้นฉบับที่ไม่ได้ถูกแตะต้องเป็นข้อมูลสำรอง

เตรียม:

* Install libvirt file system utilities package 
    * sudo apt-get install libguestfs-tools

* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
    * sudo libguestfs-test-tool

* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
    * sudo update-guestfs-appliance

* Run the test again and verify it works
    * sudo libguestfs-test-tool

ตอนนี้ทำต่อไปนี้:

1) ปิดแขก:

2) ตรวจสอบขนาดปัจจุบันและดูชื่อพาร์ติชันที่คุณต้องการขยายโดยใช้ยูทิลิตี้ libvirt:

sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file

3) สร้างดิสก์เอาต์พุต (40G) ใหม่:

qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img:  sudo truncate -s 40G outdisk

4) คัดลอกเก่าไปยังใหม่ในขณะที่ขยายพาร์ติชันที่เหมาะสม (สมมติว่าดิสก์พาร์ติชันของคุณจากขั้นตอนที่ 2 คือ / dev / sda1):

sudo virt-resize --expand /dev/sda1 indisk outdisk

5) เปลี่ยนชื่อไฟล์ indisk เป็นข้อมูลสำรองเปลี่ยนชื่อ outdisk เป็น indisk (หรือแก้ไข XML เกสต์)

6) รีบูตแขกและทดสอบไฟล์ดิสก์ใหม่อย่างรอบคอบก่อนที่จะลบไฟล์ต้นฉบับ

7) กำไร!


นี่เกือบจะทำงานในกรณีของฉัน น่าเศร้าเกือบ เมื่อรีสตาร์ท guest (เซิร์ฟเวอร์ CentOS 7) จะทำการรีบูทดิสก์ที่ขยายไม่สามารถบูตได้
Urhixidur

1
มันใช้งานได้ดีสำหรับฉัน การข้าม-o preallocation=metadataจะสร้างไฟล์แบบกระจาย ด้วยตัวเลือกนั้นมันจะจัดสรรขนาดทั้งหมดล่วงหน้า
Dennis Williamson

ดีมากคำตอบนี้ตอกเอาไว้สำหรับฉัน ขอบคุณมาก! เอกสาร "เป็นทางการ" สำหรับ libguestfs ( libguestfs.org/virt-resize.1.html ) โชคไม่ดีที่เขียนไม่ดีและจบลงด้วยความสับสน
mbello

1
ทำงานได้ดีสำหรับฉันโปรดจำไว้ว่าคุณไม่จำเป็นต้องใช้จริง ๆ-o preallocation=metadataและถ้าคุณทำไม่ได้คุณควรข้ามtruncateขั้นตอนนี้ไป virt-resizeจะขยายไฟล์ตามความเหมาะสมอยู่ดี
อะมี

5

หากคุณใช้ LVM ภายใน VM วิธีที่ง่ายที่สุดในการทำ woudl นี้คือการเพิ่มดิสก์เสมือนใหม่ลงใน VM และขยายกลุ่มวอลุ่มและโลจิคัลวอลุ่มลงบนนั้น

ในการตรวจสอบว่าคุณใช้การเรียกใช้ LVM sudo pvs; sudo vgs; sudo lvsหรือไม่คุณจะได้รับสิ่งนี้:

PV         VG     Fmt  Attr PSize  PFree
/dev/vda1  vgWWW  lvm2 a-   30.00g    0

VG     #PV #LV #SN Attr   VSize  VFree
vgWWW    1   2   0 wz--n- 30.00g    0

LV   VG    Attr   LSize 
root vgWWW -wi-ao 28.80g
swap vgWWW -wi-ao  1.19g

ถ้าระบบปฏิบัติการของ VM ใช้ LVM ในตัวอย่างข้างต้น VM มี 30Gbyte vdisk กำหนดค่าโดยใช้ LVM พร้อมกับกลุ่มวอลุ่มหนึ่งที่เรียกว่า vgWWW ที่มีโลจิคัลวอลุ่มสองตัวหนึ่งกลุ่มสำหรับการแลกเปลี่ยนและอีกกลุ่มหนึ่งสำหรับทุกอย่างอื่น

หากมีการใช้งาน LV ใน VM:

  1. ปิด VM
  2. บนโฮสต์สร้างไฟล์ดิสก์เสมือนใหม่และเพิ่มลงใน VM
  3. รีสตาร์ท VM และล็อกอิน
  4. ทำเครื่องหมายไดรฟ์ใหม่ว่าเป็นฟิสิคัลวอลุ่มสำหรับ LVM ด้วย sudo pvcreate /dev/vdb
  5. ขยายกลุ่มวอลุ่มเพื่อรวมบล็อกใหม่ของดิสก์ด้วย sudo vgextend vgWWW /dev/vdb
  6. ขยายโลจิคัลวอลุ่มเพื่อเพิ่มพื้นที่ว่างด้วยsudo lvextend --extents +100%FREE /dev/vgWWW/root(หรือบางสิ่งบางอย่างเช่นsudo lvextend --size +8G /dev/vgWWW/rootถ้าคุณไม่ต้องการที่จะขยายมันจนสุดเหวี่ยงตัวอย่างนี้จะเพิ่ม 8Gb ลงในโวลุ่ม)
  7. ปรับขนาดระบบไฟล์ด้วย resize2fs /dev/vgWWW/root

หมายเหตุ:ข้างต้นสมมติว่าชื่อ vg / lv เหมือนกับตัวอย่างของฉันซึ่งไม่น่าเป็นไปได้เปลี่ยนตามความเหมาะสมรวมถึงถ้า VM มีไดรฟ์เสมือนที่เรียกว่าชื่อvdbใหม่จะเป็นอย่างอื่น ( vdcและอื่น ๆ )

หมายเหตุ: resize2fsจะทำงานกับระบบไฟล์ ext2, ext3 และ ext4 เท่านั้น หากคุณกำลังใช้งานอย่างอื่นมันจะผิดพลาดและไม่ทำอะไรเลย

หมายเหตุ:ในขณะที่คุณกำลังปรับขนาดระบบไฟล์ที่ใช้งานจริงresize2fsจะไม่พร้อมท์ให้คุณเรียกใช้fsckก่อนตามที่ต้องการสำหรับระบบไฟล์ที่ไม่ได้ประกอบเข้าไประบบจะดำเนินการต่อไป คุณอาจต้องการเรียกใช้ระบบไฟล์แบบอ่านอย่างเดียวตรวจสอบว่าไม่มีปัญหาก่อนดำเนินการต่อ


สิ่งนี้สามารถทำได้ด้วย GUI ที่ค่อนข้างดีcentos.org/docs/5/html/Deployment_Guide-en-US/…
Nux

5

เป็นไปได้ที่จะทำการปรับขนาดออนไลน์ libvirtd รองรับสิ่งนี้:

ค้นหาชื่ออุปกรณ์บล็อก ควรเป็นเช่น "vda"

$ virsh domblklist <libvirtd_vm_name>

ปรับขนาดอุปกรณ์เสมือน:

$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>

นี่คือตัวอย่างคือฉันขยายvdaดิสก์จาก50GBเป็น51GBสำหรับundercloudVM

[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target     Source
------------------------------------------------
vda        /home/images/undercloud.qcow2

ตอนนี้ดูที่รายละเอียดของไฟล์รูปภาพ. qcow2:

[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

ทีนี้ลองปรับขนาดอุปกรณ์บล็อก vda:

[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized

และยืนยัน:

[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
[root@gss-rhos-4 ~]#

แล้วคุณสามารถใช้สคริปต์นี้ภายใน VM จะแสดงคำสั่งเพื่อปรับขนาดอุปกรณ์ป้องกันและ FS: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh


3

มีความเป็นไปได้ที่จะเพิ่มขนาดของดิสก์ VM ของคุณโดยไม่ต้องบูตเครื่องใหม่หากคุณใช้ virtio drive และ LVM

  1. ใช้ virt-manager หรือ virsh เพื่อกำหนดดิสก์ว่างใหม่
  2. เคอร์เนลควรเห็น / dev / vdb ใหม่
  3. (ทางเลือก) สร้างพาร์ติชันหลักด้วย fdisk เพื่อรับ / dev / vdb1 จากนั้นใช้ kpartx -a / dev / vdb เพื่ออ่านตารางพาร์ติชันอีกครั้ง

  4. ใช้ vgextend vg_name / dev / vdb1 (หรือ / dev / vdb หากคุณไม่ได้สร้างพาร์ติชัน)

  5. ใช้ lvextend -l + 100% ฟรี / dev / vg_name / lv_name
  6. ใช้ resize2fs / dev / vg_name / lv_name เพื่อขยายระบบไฟล์ของคุณ

คุณทำเสร็จแล้ว


2
ฉันจะเพิ่มlibguestfs.org/virt-resize.1.htmlนั้นน่าจะช่วยได้เช่นกัน
FearlessFuture

3

วิธีนี้คุณสามารถขยายพาร์ติชันที่คุณต้องการ:

    # see what partitions you have? 
    virt-filesystems --long -h --all -a olddisk

    truncate -r olddisk newdisk
    truncate -s +5G newdisk

    # Note "/dev/sda2" is a partition inside the "olddisk" file.
    virt-resize --expand /dev/sda2 olddisk newdisk

ดูตัวอย่างเพิ่มเติมที่นี่


2

อีกวิธีในการทำ

truncate -s +2G vm1.img 

ไปทำดิสก์สแกนใหม่และหลังจากที่คุณสามารถปรับขนาด LVM ของคุณ


1

หากคุณมี LVM ใน VM ของคุณนี่เป็นเรื่องง่ายและรวดเร็ว

  1. ปิด VM (เครื่องแขก)
  2. ในเครื่องโฮสต์ของคุณให้เพิ่มอุปกรณ์เก็บข้อมูลใหม่
  3. เปิดแขก
  4. เปิดระบบ -> การดูแลระบบ -> การจัดการโลจิคัลวอลุ่ม (หรือพิมพ์sudo system-config-lvmเทอร์มินัล) *

ฉันพบ GUI ค่อนข้างใช้งานง่าย แต่ทำตามขั้นตอนต่อไปหากคุณมีปัญหา

  1. เปิด "Uninitialized Entities" และค้นหาไดรฟ์ใหม่ของคุณ
  2. หลังจากเลือกไดรฟ์ใหม่ด้านล่างของภาพคุณจะพบปุ่มเริ่มต้น กดมัน
  3. มันจะถามคุณเกี่ยวกับการแบ่ง - คุณไม่ต้องการ
  4. เมื่อเพิ่มไดรฟ์ของคุณไปยังกลุ่มวอลุ่มที่มีอยู่
  5. ในที่สุดคุณจะต้องเพิ่มปริมาณตรรกะของคุณ - นี่คือมุมมองแบบลอจิคัลของกลุ่มโดยการแก้ไขคุณสมบัติของโวลุ่มของคุณ
  6. บันทึกและทำของคุณ ไม่จำเป็นต้องรีสตาร์ท VM

บันทึก! อย่างน้อยใน CentOS 6 LVM GUI ไม่ได้ติดตั้งโดยค่าเริ่มต้น yum install system-config-lvmแต่คุณสามารถติดตั้งได้กับ


1
  1. ปิดระบบ VM
  2. ปรับขนาดภาพ:

    qemu-img resize vmdisk.img +16G
    

    เพิ่มขนาดภาพ 16 GB

  3. หากรูปภาพของคุณมี GPT (GUID Partition Table) ขนาดไดรฟ์ที่ใช้ใน GPT จะแตกต่างจากขนาดใหม่คุณต้องแก้ไขด้วยgdisk:

    MY_DRIVE=/dev/vda
    gdisk $MY_DRIVE <<EOF
    w
    Y
    Y
    EOF
    

    หรือด้วยparted:

    parted $MY_DRIVE print Fix
    

    ด้วยเหตุผลบางอย่างpartedแก้ไขไม่ทำงานเมื่อไม่มี TTY จะนำเสนอ (ตัวอย่างเช่นเมื่อการตั้งสำรองที่มีคนจรจัด) gdiskดังนั้นฉันจะใช้

  4. เพิ่มขนาดพาร์ติชันเพื่อเติมเต็มพื้นที่ว่าง:

    MY_PARTITION_GUID=$(
    gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
    i
    EOF
    )
    
    MY_PARTITION_FIRST_SECTOR=$(
    gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*/\1/p'
    i
    EOF
    )
    
    gdisk $MY_DRIVE <<EOF
    d
    n
    
    $MY_PARTITION_FIRST_SECTOR
    
    
    x
    a
    2
    
    c
    $MY_PARTITION_GUID
    w
    Y
    EOF
    

    x a 2 <Enter>ส่วนหนึ่งเป็นตัวเลือกและจำเป็นถ้าคุณกำลังใช้ BIOS มรดก MY_PARTITION_GUID=...และc $MY_PARTITION_GUIDชิ้นส่วนยังเป็นทางเลือกและจำเป็นเฉพาะเมื่อคุณใช้ UUID พาร์ติชันใน/etc/fstabหรือที่อื่น

  5. รีบูตเครื่องหรืออ่านซ้ำพาร์ทิชันด้วยหรือpartx -u $MY_DRIVEpartprobe

  6. ขยายพาร์ทิชันตัวอย่างสำหรับext2, ext3หรือext4:

    MY_PARTITION="${MY_DRIVE}1"
    resize2fs $MY_PARTITION
    

0

คุณสามารถใช้ solus vm พร้อมเมาท์แบบ gparted เมื่อใช้กับ gparted คุณสามารถบูตระบบได้อย่างง่ายดายและปรับพื้นที่ ตรวจสอบให้แน่ใจว่าคุณมีลำดับความสำคัญการบูตที่ถูกต้อง เป็นข้อมูลอ้างอิงโปรดอ้างอิง url ด้านล่างที่อาจเป็นประโยชน์ https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.