ฉันตั้งค่าผู้เยี่ยมชม Ubuntu บนโฮสต์ CentOS KVM ด้วยพื้นที่ดิสก์เริ่มต้น 6GB ฉันจะเพิ่มพื้นที่ดิสก์ของผู้เยี่ยมชม Ubuntu จากบรรทัดคำสั่งได้อย่างไร
แก้ไข # 1: ฉันใช้ไฟล์อิมเมจดิสก์ (qemu)
ฉันตั้งค่าผู้เยี่ยมชม Ubuntu บนโฮสต์ CentOS KVM ด้วยพื้นที่ดิสก์เริ่มต้น 6GB ฉันจะเพิ่มพื้นที่ดิสก์ของผู้เยี่ยมชม Ubuntu จากบรรทัดคำสั่งได้อย่างไร
แก้ไข # 1: ฉันใช้ไฟล์อิมเมจดิสก์ (qemu)
คำตอบ:
qemu-img resize vmdisk.img +10G
เพื่อเพิ่มขนาดภาพ 10Gbstart the VM, resize the partitions and LVM structure within it normally
ทำอย่างไร? กรุณาอธิบาย
ดีขึ้นหรือแย่ลงคำสั่งด้านล่างจะทำงานแม้ว่าจะติดตั้งดิสก์เสมือนเป้าหมายแล้ว ซึ่งจะเป็นประโยชน์ในสภาพแวดล้อมที่ดิสก์ไม่สามารถเดินเท้า (เช่นพาร์ทิชันราก) ที่ VM จะต้องอยู่บนและเจ้าของระบบก็เต็มใจที่จะถือว่าความเสี่ยงของการทุจริตข้อมูล ในการลบความเสี่ยงนั้นคุณจะต้องเข้าสู่ระบบ VM และถอนการติดตั้งดิสก์เป้าหมายก่อนสิ่งที่ไม่สามารถทำได้
ทำสิ่งต่อไปนี้จาก KVM hypervisor
เพิ่มขนาดของไฟล์อิมเมจของดิสก์เอง (ระบุจำนวนที่จะเพิ่ม):
qemu-img resize <my_vm>.img +10G
รับชื่อของอุปกรณ์ 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]
ส่งสัญญาณไดรเวอร์ virtio เพื่อตรวจจับขนาดใหม่ (ระบุความจุใหม่ทั้งหมด):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
จากนั้นเข้าสู่ระบบ VM การรันdmesg
ควรรายงานว่าดิสก์ virtio ตรวจพบการเปลี่ยนแปลงความจุ ณ จุดนี้ไปข้างหน้าและปรับขนาดพาร์ติชันและโครงสร้าง LVM ของคุณตามต้องการ
คำถามผิดพลาดของเซิร์ฟเวอร์เหล่านี้คล้ายกัน แต่มีความเฉพาะเจาะจงมากขึ้นดิสก์ปรับขนาดแบบออนไลน์ของ 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 ภายใน
เรียกใช้ 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.
%
รีบูต VM
ปรับขนาดฟิสิคัลวอลุ่ม 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
...
ปรับขนาดปริมาณ LVM Logical
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
ขยายระบบไฟล์
% 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.
ด้านบนเป็นตัวอย่างของฉัน แต่ฉันทำตามขั้นตอนในเว็บไซต์นี้
virt-manager
และใช้วิธีการ # 1 & # 2 อย่างกว้างขวางก่อนที่ฉันจะย้ายเซิร์ฟเวอร์ KVM ของเราไปยัง KVM เวอร์ชันใหม่ (CentOS 5 -> CentOS 6) ตอนนี้ฉันใช้qemu-img resize
วิธีการเช่นกัน
lvextend /dev/Volgroup/lvname /dev/vda2
(ทั้งหมดในหนึ่งบรรทัดโดยที่ / dev / vda2 จะเป็นฟิสิคัลวอลุ่มของคุณ) หากไม่มีตัวเลือกอื่น ๆ มันจะใช้ขนาดสูงสุดในกลุ่มวอลุ่มนั้น
ปรับขนาดและขยายพาร์ติชันภายในในขั้นตอนเดียว
ฉันมีโฮสต์ Ubuntu ที่มีอิมเมจไฟล์ผู้เยี่ยมชม qcow2 และต้องการปรับขนาดดิสก์และขยายพาร์ติชันที่เหมาะสมทั้งหมดในขั้นตอนเดียว มันต้องการให้คุณตั้งค่ายูทิลิตี้ระบบไฟล์แขก libvirt แต่สิ่งเหล่านี้มีประโยชน์ที่จะมีอยู่แล้ว
แรงบันดาลใจจากที่นี่: http://libguestfs.org/virt-resize.1.html
คำสั่งที่สำคัญที่นี่คือ: virt-resize
เตรียม:
* 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) กำไร!
-o preallocation=metadata
จะสร้างไฟล์แบบกระจาย ด้วยตัวเลือกนั้นมันจะจัดสรรขนาดทั้งหมดล่วงหน้า
-o preallocation=metadata
และถ้าคุณทำไม่ได้คุณควรข้ามtruncate
ขั้นตอนนี้ไป virt-resize
จะขยายไฟล์ตามความเหมาะสมอยู่ดี
หากคุณใช้ 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:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(หรือบางสิ่งบางอย่างเช่นsudo lvextend --size +8G /dev/vgWWW/root
ถ้าคุณไม่ต้องการที่จะขยายมันจนสุดเหวี่ยงตัวอย่างนี้จะเพิ่ม 8Gb ลงในโวลุ่ม)resize2fs /dev/vgWWW/root
หมายเหตุ:ข้างต้นสมมติว่าชื่อ vg / lv เหมือนกับตัวอย่างของฉันซึ่งไม่น่าเป็นไปได้เปลี่ยนตามความเหมาะสมรวมถึงถ้า VM มีไดรฟ์เสมือนที่เรียกว่าชื่อvdb
ใหม่จะเป็นอย่างอื่น ( vdc
และอื่น ๆ )
หมายเหตุ: resize2fs
จะทำงานกับระบบไฟล์ ext2, ext3 และ ext4 เท่านั้น หากคุณกำลังใช้งานอย่างอื่นมันจะผิดพลาดและไม่ทำอะไรเลย
หมายเหตุ:ในขณะที่คุณกำลังปรับขนาดระบบไฟล์ที่ใช้งานจริงresize2fs
จะไม่พร้อมท์ให้คุณเรียกใช้fsck
ก่อนตามที่ต้องการสำหรับระบบไฟล์ที่ไม่ได้ประกอบเข้าไประบบจะดำเนินการต่อไป คุณอาจต้องการเรียกใช้ระบบไฟล์แบบอ่านอย่างเดียวตรวจสอบว่าไม่มีปัญหาก่อนดำเนินการต่อ
เป็นไปได้ที่จะทำการปรับขนาดออนไลน์ libvirtd รองรับสิ่งนี้:
ค้นหาชื่ออุปกรณ์บล็อก ควรเป็นเช่น "vda"
$ virsh domblklist <libvirtd_vm_name>
ปรับขนาดอุปกรณ์เสมือน:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
นี่คือตัวอย่างคือฉันขยายvda
ดิสก์จาก50GB
เป็น51GB
สำหรับundercloud
VM
[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
มีความเป็นไปได้ที่จะเพิ่มขนาดของดิสก์ VM ของคุณโดยไม่ต้องบูตเครื่องใหม่หากคุณใช้ virtio drive และ LVM
(ทางเลือก) สร้างพาร์ติชันหลักด้วย fdisk เพื่อรับ / dev / vdb1 จากนั้นใช้ kpartx -a / dev / vdb เพื่ออ่านตารางพาร์ติชันอีกครั้ง
ใช้ vgextend vg_name / dev / vdb1 (หรือ / dev / vdb หากคุณไม่ได้สร้างพาร์ติชัน)
คุณทำเสร็จแล้ว
วิธีนี้คุณสามารถขยายพาร์ติชันที่คุณต้องการ:
# 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
อีกวิธีในการทำ
truncate -s +2G vm1.img
ไปทำดิสก์สแกนใหม่และหลังจากที่คุณสามารถปรับขนาด LVM ของคุณ
หากคุณมี LVM ใน VM ของคุณนี่เป็นเรื่องง่ายและรวดเร็ว
sudo system-config-lvm
เทอร์มินัล) *ฉันพบ GUI ค่อนข้างใช้งานง่าย แต่ทำตามขั้นตอนต่อไปหากคุณมีปัญหา
บันทึก! อย่างน้อยใน CentOS 6 LVM GUI ไม่ได้ติดตั้งโดยค่าเริ่มต้น yum install system-config-lvm
แต่คุณสามารถติดตั้งได้กับ
ปรับขนาดภาพ:
qemu-img resize vmdisk.img +16G
เพิ่มขนาดภาพ 16 GB
หากรูปภาพของคุณมี 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
ดังนั้นฉันจะใช้
เพิ่มขนาดพาร์ติชันเพื่อเติมเต็มพื้นที่ว่าง:
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
หรือที่อื่น
รีบูตเครื่องหรืออ่านซ้ำพาร์ทิชันด้วยหรือpartx -u $MY_DRIVE
partprobe
ขยายพาร์ทิชันตัวอย่างสำหรับext2
, ext3
หรือext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
คุณสามารถใช้ solus vm พร้อมเมาท์แบบ gparted เมื่อใช้กับ gparted คุณสามารถบูตระบบได้อย่างง่ายดายและปรับพื้นที่ ตรวจสอบให้แน่ใจว่าคุณมีลำดับความสำคัญการบูตที่ถูกต้อง เป็นข้อมูลอ้างอิงโปรดอ้างอิง url ด้านล่างที่อาจเป็นประโยชน์ https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html