Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

บทความนี้จะแนะนำวิงติดตั้งและกำหนดค่า KVM Hypervisor บนเซิร์ฟเวอร์ที่รัน Linux RHEL หรือ CentOS จะแสดงวิธีสร้าง VM ใน KVM เปลี่ยนการตั้งค่า และติดตั้ง Guest OS รวมถึงคำสั่งทั่วไปสำหรับจัดการ VM

KVM (Kernel-based Virtual Machine) เป็น Linux Hypervisor ที่ใช้เทคโนโลยี Hardware Virtualization Intel VT หรือ AMD SVM ด้วย KVM สามารถสร้าง VM แบบ Isolated พร้อม Virtual Hardware ของตัวเอง: Network Adapters, Disks, Graphic Cards หรืออุปกรณ์อื่นๆ สามารถติดตั้ง Guest OS ใดๆ ได้ (ไม่ได้จำกัดแค่ Linux)

วิธีติดตั้ง KVM บน CentOS/RHEL

ตอนตั้งค่า KVM ควรเริ่มจากตรวจสอบ CPU ต้องแน่ใจว่า CPU บน Host รองรับ Hardware Virtualization รันคำสั่งใน Console เซิร์ฟเวอร์:

# cat /proc/cpuinfo | egrep "(vmx|svm)"

ถ้า Processor รองรับ VT-x จะได้ Output ประมาณนี้:

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

ถ้าคำสั่งไม่คืนค่าอะไร แต่ทราบว่า CPU รองรับ Virtualization ให้ตรวจสอบใน BIOS ของเซิร์ฟเวอร์ ว่าตัวเลือก Intel Virtualization Technology หรือ SVM MODE ไม่ได้ถูก Disable

เซิร์ฟเวอร์ของผมรองรับ VT-x และเปิดอยู่แล้ว จึงติดตั้ง Package ที่จำเป็นบน CentOS/RHEL ด้วย yum/dnf:

# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y

  • qemu-kvm – KVM Hypervisor
  • libvirt – Library จัดการ Virtualization
  • virt-install – CLI Tools จัดการ KVM VMs

จะติดตั้ง Package จำนวนมาก ตรวจสอบว่าไม่มี Error ระหว่างติดตั้ง

เพิ่ม Service libvirtd เข้า Startup และ Start 它:

# systemctl enable libvirtd
# systemctl start libvirtd

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

ตรวจสอบว่า Kernel Modules kvm_intel และ kvm โหลดแล้ว:

# lsmod | grep kvm

kvm_intel 188688 0
kvm 636931 1 kvm_intel
irqbypass 13503 1 kvm

ถ้าคำสั่งไม่คืนค่า ให้ Restart Host และตรวจสอบใหม่

สร้างและกำหนดค่า Bridge Networking สำหรับ KVM

สร้าง Directory เก็บ Disk VM และ ISO Images:

# mkdir -p /vz/{disk,iso}

เพื่อให้ VM เข้าถึง Internet ได้ ต้องตั้งค่า Network แบบ Bridge ต้องใช้ bridge-utils ตรวจสอบว่าติดตั้งแล้ว:

# rpm -qa | grep bridge-utils

ติดตั้งถ้ายังไม่มี:

# yum install bridge-utils -y

หลังติดตั้ง Package แล้ว Network Interface virbr0 จะปรากฏใน OS:

# ip a

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

เพื่อสร้าง Bridge ต้องตั้งค่า Config File ของ Network Interface เซิร์ฟเวอร์:

# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak – Backup ไฟล์
# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 — เปิดแก้ไข

ลบเนื้อหาเดิมและแทนที่ด้วย:

DEVICE="enp1s0f0"
ONBOOT="yes"
BRIDGE=br0

ในกรณีของคุณ Interface Name อาจต่างออกไป (ดูได้จากคำสั่ง ip a)

จากนั้นสร้างไฟล์:

# nano /etc/sysconfig/network-scripts/ifcfg-br0
ประกอบด้วย Config ดังนี้:

DEVICE="br0"
TYPE=BRIDGE
ONBOOT=yes
BOOTPROTO=static
IPADDR="IP_address_of_the_server"
NETMASK="255.255.255.0"
GATEWAY="Default_gateway"
DNS1="8.8.8.8"
DNS2="8.8.4.4"

ต้องระบุ IP Address เซิร์ฟเวอร์และ Default Gateway ของคุณ หลังแก้ไข Config Network Interface แล้ว ให้ Restart Network:

# service network restart

หากหลัง Restart Network เข้าถึงเซิร์ฟเวอร์ไม่ได้ ลอง Restart Host ด้วย บางครั้งจำเป็นต้อง Restart เพื่อให้ Bridge ทำงานถูกต้อง

ดูสถานะ Bridge ด้วยคำสั่ง:

# brctl show

bridge name     bridge id          STP enabled  interfaces
br0             8000.ac1f6b654321  no           enp1s0f0
virbr0          8000.525400abcdef1 yes          virbr0-nic

ขั้นตอนสุดท้าย กำหนดค่า Network Traffic Forwarding:

# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p

จากนั้น Restart libvirtd:

# service libvirtd restart

การตั้งค่า KVM Network พื้นฐานเสร็จสิ้น สามารถสร้าง VM ได้แล้ว

การสร้าง Virtual Machines ใน KVM

ก่อนสร้าง VM ผมดาวน์โหลด CentOS 8 Image จาก Mirror อย่างเป็นทางการไปที่ /vz/iso:

# cd /vz/iso && wget https://mirror.imt-systems.com/centos/8.3.2011/isos/x86_64/CentOS-8.3.2011-x86_64-dvd1.iso

เพื่อสร้าง KVM VM ใหม่ รันคำสั่ง:

virt-install -n test-centosvm \
--noautoconsole \
--network=bridge:br0 \
--ram 2048 --arch=x86_64 \
--vcpus=4 --cpu host --check-cpu \
--disk path=/vz/disk/test-centosvm.img,size=32 \
--cdrom /vz/iso/CentOS-8.3.2011-x86_64-dvd1.iso \
--graphics vnc,listen=IP,password=p@sswdr0w1 \
--os-type linux --os-variant=rhel7 --boot cdrom,hd,menu=on

  • test-centosvm — ชื่อ VM
  • noautoconsole – หลังสร้าง VM จะไม่เชื่อมต่อ Console อัตโนมัติ
  • network – ประเภท Network (Bridge ในที่นี้)
  • ram — ปริมาณ RAM ใน VM
  • vcpus – จำนวน CPU Cores (vCPU Config สำหรับ VM)
  • disk – Virtual Disk, Path – พาธไป Disk, Size – ขนาด Disk (ขยาย/ลดได้ภายหลัง)
  • cdrom – Virtual CDROM, Mount ISO Image ติดตั้ง Guest OS
  • graphics — พารามิเตอร์เชื่อมต่อ VM ผ่าน Graphic Console ใช้ VNC ระบุ IP ของ KVM Server ที่สร้าง VM และ Password เข้า Console VM

เพื่อให้ VM บูทอัตโนมัติ รัน:

# virsh autostart test-centosvm

วิธีเชื่อมต่อ KVM VM ด้วย VNC และติดตั้ง OS

เพื่อเชื่อมต่อ KVM VM ด้วย VNC ต้องหา Port ที่รันอยู่:
# virsh vncdisplay test-centovms

IP:0

0 หมายถึง Port สำหรับเชื่อมต่อ VNC คือ 5900 หากได้ค่าอื่น ให้บวกค่าที่ได้กับ 5900

ผมใช้ TightVNC สำหรับเชื่อมต่อ VNC รันแล้วระบุ IP เซิร์ฟเวอร์และ VNC Port ที่ได้ก่อนหน้า (คั่นด้วย Double Colon)

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

คลิก Connect และป้อน Password ที่ตั้งไว้ตอนสร้าง KVM VM หากทำถูกต้อง จะเห็น Console ของเซิร์ฟเวอร์ ที่กำลังติดตั้ง CentOS (หรือ Guest OS อื่นที่ Mount ISO ไว้)

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

หากเปิด Firewall บนเซิร์ฟเวอร์ ให้เปิด Port 5900-5910 สำหรับ VNC ใน firewalld/iptables (10 Port พอ) หลังติดตั้ง Guest OS บน VM เริ่ม VM จาก Console เซิร์ฟเวอร์:

ติดตั้งและกำหนดค่า KVM Hypervisor บน CentOS/RHEL

เพื่อ Shutdown KVM VM ใช้คำสั่ง:

# virsh shutdown test-centosvm

แสดงรายชื่อ VM ที่ลงทะเบียนทั้งหมดใน KVM:

# virsh list --all

ศึกษาเพิ่มเติมเกี่ยวกับการจัดการ KVM VM จาก Console เซิร์ฟเวอร์ด้วย virsh (วิธีเพิ่ม RAM, CPU, Disk, Network Interfaces) หากชอบ GUI สามารถใช้ virt-manager KVM GUI

การตั้งค่า KVM Host พื้นฐานเสร็จสิ้น และสร้าง VM แล้ว สามารถสร้าง VM จำนวนไม่จำกัดใน KVM ขึ้นอยู่กับทรัพยากรเซิร์ฟเวอร์และความต้องการของคุณ