Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร

ในบทความนี้ เราจะพูดถึงวิธีปรับขนาดดิสก์เครื่องเสมือน KVM สำหรับประเภทดิสก์ยอดนิยม เราจะแสดงวิธีเพิ่มขนาดดิสก์ของเครื่องเสมือนอย่างถูกต้องในไฮเปอร์ไวเซอร์ KVM บน Linux โดยไม่สูญเสียข้อมูล และหารือเกี่ยวกับตัวเลือกในการลดขนาดดิสก์

จะเพิ่ม/ขยายขนาดดิสก์เครื่องเสมือน KVM ได้อย่างไร

การเพิ่มดิสก์เสมือนบน KVM

ลองพิจารณาตัวอย่างการเพิ่มขนาดของดิสก์เสมือน 20GB ปิด VM ก่อนเปลี่ยนการตั้งค่าดิสก์เสมือน

หากต้องการดูการตั้งค่าดิสก์เสมือนของเครื่องเสมือน KVM ให้ใช้คำสั่งนี้:

qemu-img info /path_to_disk

คุณจะเห็นผลลัพธ์ดังนี้:

KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร

เราพบว่ามีสองฟิลด์ที่แสดงขนาด:virtual_size และ disk_size:

  • virtual_size – คือขนาดของดิสก์เสมือนที่ตั้งไว้เมื่อสร้างหรือขยายดิสก์ (ในตัวอย่างนี้ ขนาดดิสก์สูงสุดคือ 20GB)
  • disk_size — คือขนาดปัจจุบันของไฟล์ดิสก์ i. e. พื้นที่ดิสก์ที่ใช้บนเซิร์ฟเวอร์จริง (ใช้กับรูปแบบดิสก์ qcow เท่านั้น) ในตัวอย่างของเรา ดิสก์เสมือนใช้พื้นที่จัดเก็บข้อมูลเพียง 1.6GB
และคำบางคำเกี่ยวกับประเภทดิสก์ KVM (รูปแบบ) ฉันแนะนำให้ใช้ qcow2 แทน ดิบ เมื่อสร้างเครื่องเสมือนใน KVM หลังจากนั้นฉันจะอธิบายว่าทำไม

ในขั้นตอนต่อไป ฉันจะเพิ่มขนาดของเครื่องเสมือนขึ้น 5GB (หากต้องการขยายดิสก์อย่างถูกต้อง เครื่องเสมือนจะต้องไม่มีสแน็ปช็อต!)
# qemu-img resize /path to disk +5G

Image resized.

หากคุณตรวจสอบการตั้งค่าดิสก์เสมือน คุณจะพบว่ามีการขยาย:

# qemu-img info /path_to_disk

image: /path_to_disk
file format: qcow2
virtual size: 25G (26843535600 bytes)
disk size: 1.6G
cluster_size: 65536
Format specific information:
compat: 0.10
refcount bits: 16

เราได้ทำส่วนหนึ่งของงานของเราแล้ว แต่เรายังต้องการการดำเนินการบางอย่างใน guest OS ของเครื่องเสมือน ตอนนี้เราจะแสดงวิธีขยายขนาดดิสก์ใน guest CentOS 7 และ Windows Server 2012 R2

หากคุณกำลังจะเพิ่มดิสก์เสมือนอื่นสำหรับ VM ของคุณในไฮเปอร์ไวเซอร์ KVM qemu-img และ virsh มีการใช้เครื่องมือ

จะขยายพาร์ติชันในเครื่องเสมือนที่ใช้ CentOS Linux ได้อย่างไร

หลังจากเพิ่มขนาดดิสก์เสมือนบนฝั่งเซิร์ฟเวอร์ KVM แล้ว ให้เริ่มเครื่องเสมือนและเชื่อมต่อ เราจะใช้เครื่องมือจัดการพาร์ติชั่นฮาร์ดดิสก์ fdisk เพื่อขยายขนาดพาร์ติชั่นและระบบไฟล์

เชื่อมต่อกับ VM Guest OS ผ่าน SSH และตรวจสอบให้แน่ใจว่ามีพื้นที่ดิสก์เพิ่มขึ้น 5 Gb

df –h
fdisk -l

KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร

ภาพหน้าจอแสดงให้เห็นว่า /dev/vda2 มีขนาด 20GB และพื้นที่ดิสก์ที่พร้อมใช้งานคือ 25GB

มาขยาย /dev/vda2 เป็นขนาดสูงสุดที่มี:

# fdisk /dev/vda

Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 is deleted
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2):
First sector (1050624-52428799, default 1050624):
Using default value 1050624
Last sector, +sectors or +size{K,M,G} (1050624-52428799, default 52428799):
Using default value 52428799
Partition 2 of type Linux and of size 24.5 GiB is set
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 or after you run partprobe(8) or kpartx(8)
Syncing disks.

จากนั้นรีสตาร์ทเครื่องเสมือนและเรียกใช้คำสั่งที่จะใช้ขนาดดิสก์ใหม่:

# xfs_growfs /dev/vda2

meta-data=/dev/vda2 isize=512 agcount=4, agsize=1277888 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5111552, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 5111552 to 6422272

# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0

เป็นผลให้เราได้พาร์ติชั่นเสริม /dev/vda2 นี่คือสิ่งที่เราทำ:

  • fdisk /dev/vda — เรารัน fdisk และเชื่อมต่อกับ /dev/vda;
  • /d — เราลบพาร์ติชั่น โดยค่าเริ่มต้น มันคือพาร์ติชั่น 2 ที่เราต้องการ ดังนั้นเราจึงกด Enter ในรายการถัดไป
  • /n – เราสร้างพาร์ติชั่นใหม่และกด Enter หรือ p จากนั้นกด Enter อีกครั้ง เนื่องจากพาร์ติชั่นที่เราพยายามสร้างจะเป็น 2 โดยค่าเริ่มต้น
  • เมื่อระบุเซกเตอร์แรกและเซกเตอร์สุดท้าย เราก็กด Enter หากคุณต้องการขยายพาร์ติชั่นให้สูงสุด หากคุณต้องการกำหนดขนาดเฉพาะ ให้ป้อนขนาดดิสก์ในส่วนสุดท้ายดังแสดงในเมนู +ขนาด{K,M,G};
  • /w — เพื่อใช้การตั้งค่าใหม่

หลังจากรีสตาร์ท VM ให้ตรวจสอบดิสก์โดยใช้คำสั่งนี้:

xfs_growfs /dev/vda2

บางแหล่งแนะนำให้ใช้คำสั่งต่อไปนี้ :

resize2fs /dev/vda2

แต่มันใช้ไม่ได้กับระบบไฟล์ XFS!

ดังนั้น คุณได้ขยายขนาดดิสก์บนเครื่องเสมือนที่ใช้ CentOS 7

จะเพิ่มขนาดดิสก์ใน Guest Windows Server ได้อย่างไร

เชื่อมต่อกับเครื่องเสมือนของ Windows Server โดยใช้ RDP หรือ VNC และขยายดิสก์

  1. ตัวจัดการเซิร์ฟเวอร์เปิด -> เครื่องมือ -> การจัดการคอมพิวเตอร์
  2. เลือก ที่เก็บข้อมูล -> การจัดการดิสก์ ในบานหน้าต่างด้านซ้าย พาร์ติชั่นดิสก์ทั้งหมดของคุณและพื้นที่ที่ไม่ได้ถูกเพิ่มเข้ามาจะปรากฏขึ้น KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร
  3. เลือกพาร์ติชั่นที่คุณต้องการเพิ่มแล้วคลิก ขยายระดับเสียง; KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร
  4. โดยค่าเริ่มต้น พื้นที่ว่างทั้งหมดจะถูกเสนอเพื่อเพิ่มขนาดดิสก์ KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร
  5. คลิก ถัดไป เพื่อสิ้นสุดการขยาย หลังจากนั้นขนาดของพาร์ติชั่นของคุณจะเพิ่มขึ้น KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร

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

จะลดขนาดดิสก์ของ KVM Virtual Machine ได้อย่างไร

ในงานของฉัน ฉันมักจะพบปัญหานี้ แต่น่าเสียดาย คุณไม่สามารถลดขนาดดิสก์ของเครื่องเสมือนใน KVM ได้อย่างปลอดภัย วิธีเดียวที่ยอมรับได้ในการลดขนาดดิสก์เสมือนบนที่จัดเก็บข้อมูลจริงคือการแปลงดิสก์

มีคำแนะนำมากมายที่เว็บบอกวิธีลดพื้นที่ดิสก์ในเครื่องเสมือน KVM แต่วิธีนี้ใช้ไม่ได้ผล

ฉันจะยกตัวอย่างที่ฉันเจอและทดสอบ

การลดขนาดดิสก์ KVM โดยใช้ Qemu

แหล่งข้อมูลบางส่วนอธิบายการดำเนินการที่คุณสามารถทำได้ด้วยเครื่องมือ qemu พวกเขาเสนอให้ลดพื้นที่ดิสก์ของเครื่องเสมือนโดยใช้คำสั่งนี้:

qemu-img resize /path_to_disk -5G — เพื่อลดขนาดพื้นที่ดิสก์ลง 5G

หรือตัวเลือกต่อไปนี้ที่คุณกำหนดขนาดดิสก์เสมือนเฉพาะ:

qemu-img resize /path_to_disk 25G — เพื่อกำหนดขนาดดิสก์เป็น 25G

จะเกิดอะไรขึ้นหลังจากรันคำสั่งนี้ หลังจากเริ่มต้นเซิร์ฟเวอร์ ระบบไม่สามารถบู๊ตได้:

Unable to verify superblock, continuing...
Sorry, could not find valid secondary superblock. Exiting now.

KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร

ฉันพยายามลดขนาดดิสก์ในระบบโดยใช้ fdisk ก่อน แต่ระบบจะไม่บู๊ตเช่นกัน แม้ว่าคุณจะข้ามการลดขนาดดิสก์ของคุณบนเซิร์ฟเวอร์จริงก็ตาม และมันก็ค่อนข้างสมเหตุสมผล พาร์ติชั่นที่เราพยายามลดคือพาร์ติชั่นหนึ่งระบบ และระบบปฏิบัติการจะไม่สามารถบู๊ตได้ เนื่องจากข้อมูลในพาร์ติชั่นนั้นหายไปอย่างเห็นได้ชัดเมื่อพยายามลดขนาดพาร์ติชั่น

การลดขนาดดิสก์เสมือนโดยใช้การแทนที่อิมเมจ

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

virt-resize /old_disk_image /new_disk_image

นอกจากนี้ยังมีวิธีการบางอย่างที่ใช้การแปลงดิสก์จากรูปแบบ raw เป็น qcow2 แต่ในขั้นต้น ฉันกำลังสร้างเครื่องในรูปแบบนี้ และนี่คือคำอธิบายว่าทำไมฉันถึงทำเช่นนั้น

รูปแบบดิสก์ KVM และการบีบอัดดิสก์ QCOW2

ในตอนต้นของบทความ ฉันพูดถึงรูปแบบดิสก์ทั้งสองนี้:raw และ qcow

ดิบ ข้อดีคือประสิทธิภาพสูงสุดและทั่วไป แต่มีข้อเสียอยู่มาก หลักๆคือ:

  • ไฟล์ดิสก์เสมือนใช้พื้นที่ทั้งหมดที่จัดสรรไว้บนเซิร์ฟเวอร์จริง
  • คุณไม่สามารถถ่ายภาพสแน็ปช็อตได้

Qcow2 คือรูปแบบไฮเปอร์ไวเซอร์ QEMU และ QEMU-KVM ดั้งเดิม เป็นรูปแบบดิสก์เสมือนที่สะดวกที่สุดจากรูปแบบอื่นทั้งหมดที่รองรับใน KVM ภาพดิสก์จะเพิ่มขึ้นเมื่อมีการสะสมข้อมูลในเครื่องเสมือน และรองรับสแน็ปช็อต

ข้อดีของ qcow2 คืออะไร? คุณไม่จำเป็นต้องลดขนาดของดิสก์เสมือนของคุณ เนื่องจากมันใช้พื้นที่บนที่เก็บข้อมูลเซิร์ฟเวอร์มากเท่าที่ต้องการเท่านั้น หากข้อมูลถูกเขียนทับบนเซิร์ฟเวอร์ของคุณอย่างต่อเนื่อง และดิสก์บวม คุณสามารถบีบอัดข้อมูลได้อย่างง่ายดาย ลองพิจารณาตัวเลือกนี้ ฉันจะเติมพื้นที่ดิสก์เสมือนด้วยศูนย์แล้วลบไฟล์:

dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile

KVM:จะขยายหรือย่อขนาดดิสก์ของเครื่องเสมือนได้อย่างไร

เมื่อคุณตรวจสอบจากเซิร์ฟเวอร์ของคุณ ก่อนหน้านี้ขนาดของภาพดิสก์คือ 2.4G และกลายเป็น 5.9G:

# du -sh /image_path

2.4G *****

# du -sh /image_path

5.9G *****

หมายความว่าหลังจากลบข้อมูลออกจากเครื่องเสมือน ขนาดดิสก์เสมือนจะไม่ลดขนาดลง เพื่อให้ไฟล์ดิสก์เสมือนได้ขนาดจริง ฉันใช้วิธีต่อไปนี้:

สำรองข้อมูลไฟล์ดิสก์เสมือน หยุดเครื่องเสมือน จากนั้นทำตามขั้นตอนต่อไปนี้:

qemu-img convert -O qcow2 /old_image /new_image

จากนั้นคุณสามารถเปรียบเทียบขนาดของดิสก์ทั้งสองได้:

# du -sh /new_disk

1.6G /****

# du -sh /old_disk

5.8G /****

อย่างที่คุณเห็น ขนาดของดิสก์ที่บีบอัดคือ 1.6G เปลี่ยนชื่อไฟล์อิมเมจดิสก์ใหม่ตามที่คุณต้องการและเริ่มต้นเครื่องเสมือน:
# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.6M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 25G 1.3G 24G 6% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0

วิธีนี้ได้ผล ตลอดเวลาที่ฉันใช้งาน ฉันไม่เคยมีสถานการณ์ใดที่ระบบไฟล์ในเครื่องเสมือนล้มเหลว แต่ฉันขอแนะนำอย่างยิ่งให้สำรองข้อมูลดิสก์ก่อนดำเนินการใดๆ เพื่อไม่ให้ข้อมูลสูญหาย

นี่คือทั้งหมดที่ฉันอยากจะบอกในบทความนี้ หากผู้เยี่ยมชมเว็บไซต์รายนี้รู้วิธีดำเนินการจริงอื่นใดในการลดขนาดดิสก์บน KVM (ไม่ใช่การบีบอัด) ให้อธิบายที่นี่แล้วฉันจะทำการทดสอบ