Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Quản lý máy ảo KVM từ CLI với Virsh

Trong bài viết trước chúng ta đã thảo luận cách cài đặt hypervisor KVM và tạo máy ảo. Trong một bài viết chúng ta không thể bao quát quản lý máy ảo KVM chi tiết. Hôm nay chúng ta sẽ thử chỉ cách quản lý máy ảo từ dòng lệnh với virsh: cách thay đổi cài đặt VM, thêm thiết bị ảo bổ sung, và lệnh nào dùng để quản lý máy ảo KVM trên Linux.

Sử dụng lệnh Virsh (Virtual Shell) để quản lý máy ảo KVM

Hãy xem cách xem máy ảo KVM đã đăng ký, cách bắt đầu, dừng hoặc xóa chúng. Virsh (dựa trên libvirt API) có thể dùng để quản lý máy ảo KVM trong console Linux.

# virsh list – hiển thị danh sách VM đang chạy

# virsh list --all – hiển thị danh sách tất cả máy ảo đã đăng ký (kể cả tắt)

Quản lý máy ảo KVM từ CLI với Virsh

Như bạn thấy trên screenshot, trong trường hợp đầu tiên VM tắt không hiển thị.

# virsh shutdown <vm name> — tắt máy ảo

# virsh start <vm name> — bật máy ảo

# virsh suspend <vm name> — treo VM

# virsh resume <vm name> — tiếp tục máy ảo bị treo

# virsh reboot <vm name> — khởi động lại VM

# virsh destroy <vm name> — khởi động tắt ngay lập tức không graceful và dừng VM (dùng lệnh này khi guest VM không phản hồi)

# virsh undefine <vm name> — hủy đăng ký VM và xóa volume lưu trữ

# virsh vcpuinfo <vm name> — hiển thị thông tin vCPU của VM

Quản lý máy ảo KVM từ CLI với Virsh

Dưới đây là một số lệnh khác để lấy thông tin khác về máy ảo:

# virsh domid <vm name> — lấy ID máy ảo

# virsh domuuid <vm name> — hiển thị UUID máy ảo

# virsh dominfo <vm name> — hiển thị thông tin máy ảo

# virsh domstate <vm name> — xem trạng thái VM

Quản lý máy ảo KVM từ CLI với Virsh

# virsh dumpxml <vm name> — liệt kê file cấu hình máy ảo ở định dạng XML

Cách thêm bộ nhớ và vCPU cho máy ảo KVM?

Trong console KVM, bạn có thể thêm hoặc giảm tài nguyên CPU hoặc bộ nhớ gán cho VM theo hai cách:

  • Dùng virsh
  • Qua file cấu hình XML của VM

Nếu máy ảo đang chạy, tắt nó:

# virsh shutdown test-centos

Domain test-centos is being shutdown

Sau đó dùng virsh để thay đổi số CPU ảo (vCPU) thành 6:

# virsh setvcpus <vm name> <vcpu_count> --config

Ví dụ:

# virsh setvcpus test-centos 6 --config

Sau khi chạy lệnh, lỗi xuất hiện:

error: invalid argument: requested vcpus is greater than max allowable vcpus for the persistent domain: 6 > 4

Bạn không thể đặt số nhân lớn hơn số lượng tối đa. Để tăng số vCPU tối đa cho phép của VM, chạy lệnh này:

# virsh setvcpus test-centos 6 --config --maximum

Sau đó chạy lệnh trước và khởi động máy ảo:

Quản lý máy ảo KVM từ CLI với Virsh

Kiểm tra số vCPU trong cài đặt VM:

# virsh dumpxml test-centos

<domain type='kvm'>
  <name>test-centos</name>
  <uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>6</vcpu>

Cùng cách đó, bạn có thể thêm RAM cho máy ảo:

# virsh setmem <vm_name> <memsize> --config

Ví dụ:

# virsh setmem test-centos 4G --config

Lỗi xảy ra vì cùng lý do:

error: invalid argument: cannot set memory higher than max memory.

Tăng lượng bộ nhớ tối đa:

# virsh setmaxmem test-centos 6G --config

Sau đó bạn có thể thêm bộ nhớ cho VM.

Trước khi thay đổi, hãy chắc chắn tắt máy ảo rồi bật lại.

Cũng có thể thay đổi lượng tài nguyên VM KVM trong file XML cấu hình. Bạn có thể chỉnh sửa trực tuyến hoặc backup file XML VM, sửa đổi và áp dụng cho máy ảo.

Hãy chỉnh sửa file XML VM trực tuyến:

# virsh edit <vm_name>

Trong trình soạn thảo vi xuất hiện, làm thay đổi bạn muốn bằng cách nhấn Insert.

Thay đổi khối sau:

<domain type='kvm'>
  <name>test-centos</name>
  <uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
  <memory unit='KiB'>6291456</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>6</vcpu>
  <os>

Ví dụ, cấp phát 2 nhân bộ vi xử lý và 1 GB bộ nhớ cho VM:

Quản lý máy ảo KVM từ CLI với Virsh

Lưu ý kích thước bộ nhớ hiển thị tính bằng kilobyte.

Lưu thay đổi trong file và reboot VM:

# virsh reboot <vm_name>

Bạn có thể làm tương tự nếu backup file XML:

# virsh dumpxml <vm_name> > /root/test.xml
# vi /root/test.xml

Thay đổi cài đặt bạn muốn, lưu file và áp dụng cho máy ảo:

# virsh shutdown test-centos

Domain test-centos is being shutdown

# virsh define /root/test.xml

Domain test-centos defined from /root/test.xml

# virsh start test-centos

Domain test-centos started
Đôi khi khi thay đổi file cấu hình VM trực tuyến, tài nguyên được gán bị reset sau reboot. Trong trường hợp này, dừng máy ảo rồi chỉ cần bật lại.

Thêm ổ đĩa vào KVM VM hiện có

Trong một bài viết trước chúng ta đã mô tả cách mở rộng hoặc giảm kích thước ổ đĩa máy ảo KVM. Nhưng chúng ta không nói cách thêm ổ đĩa bổ sung.

Trước hết, tạo file ổ đĩa mới cho máy ảo:

# qemu-img create -f qcow2 -o size=20G /vz/disk/test.img

Thay vì qcow2, bạn có thể dùng định dạng ổ đĩa bạn muốn. Cũng chỉ định đường dẫn file. Kho ổ đĩa của tôi ở /vz/disk/.

Sau đó bạn có thể thêm thiết bị ổ cứng ảo vào VM:

# virsh attach-disk <vm_name> /vz/disk/test.img vdb --type disk --persistent

Tắt và khởi động lại VM, sau đó xem kết quả:

# virsh shutdown test-centos

Domain test-centos is being shutdown

# virsh start test-centos

Domain test-centos started

# virsh dumpxml test-centos

<domain type='kvm' id='14'>
  <name>test-centos</name>
  <uuid>3b223aa2-b322-1ff1-ab23-c1223abc1f01</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>6</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='cdrom'/>
    <boot dev='hd'/>
    <bootmenu enable='yes'/>
  </os>
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  <disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/vz/disk/test.img'/>
    <backingStore/>
    <target dev='vdb' bus='virtio'/>
    <alias name='virtio-disk1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
  </disk>

Như bạn thấy, ổ đĩa đã được thêm.

Cách thêm NIC thứ hai cho máy ảo KVM?

Hãy thử thêm giao diện mạng khác vào VM. Trước hết, kiểm tra giao diện mạng trên máy chủ Linux:

# brctl show

Quản lý máy ảo KVM từ CLI với Virsh

Tôi có một máy ảo với một giao diện mạng trên máy chủ KVM. Tôi muốn thêm giao diện mạng ảo khác vào br0. Chạy các lệnh:

# virsh shutdown test-centos
# virsh attach-interface test-centos --type bridge --source br0 --persistent
# virsh start test-centos

Đảm bảo giao diện mạng khác xuất hiện trong VM:

Quản lý máy ảo KVM từ CLI với Virsh

<interface type='bridge'>
  <mac address='52:54:00:7e:c1:9f'/>
  <source bridge='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
  <mac address='52:54:00:2f:23:79'/>
  <source bridge='br0'/>
  <model type='rtl8139'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>

Cũng có thể thay đổi cài đặt mạng máy ảo trực tiếp qua file XML:

# virsh edit test-centos

Sau giao diện mạng đầu tiên, thêm các dòng:

<interface type='bridge'>
  <source bridge='br0'/>
</interface>

Lưu file và khởi động VM. KVM sẽ tự thêm phần cấu hình còn lại (địa chỉ MAC, v.v.).

Trong bài viết này chúng ta đã bao quát những điều chính bạn có thể cần để quản lý máy ảo KVM từ console máy chủ Linux. Trong bài tiếp theo chúng ta sẽ chỉ cách quản lý máy ảo qua GUI virt-manager.