ในบทความนี้ เราจะมาดูวิธีการติดตั้งและกำหนดค่า KVM hypervisor บนเซิร์ฟเวอร์ที่ใช้ Linux RHEL หรือ CentOS เราจะแสดงวิธีสร้างเครื่องเสมือนใน KVM เปลี่ยนการตั้งค่าและติดตั้งระบบปฏิบัติการของแขก เราจะอธิบายคำสั่งทั่วไปบางอย่างเพื่อจัดการ VM ด้วย
KVM (เครื่องเสมือนแบบเคอร์เนล) คือไฮเปอร์ไวเซอร์ Linux ที่ใช้เทคโนโลยีการจำลองเสมือนสำหรับฮาร์ดแวร์ Intel VT- หรือ AMD SVM เมื่อใช้ KVM คุณสามารถสร้างเครื่องเสมือนแบบแยกได้โดยใช้ฮาร์ดแวร์เสมือนของตนเอง:อะแดปเตอร์เครือข่าย ดิสก์ การ์ดกราฟิก หรืออุปกรณ์อื่นๆ คุณสามารถติดตั้ง guest OS บนเครื่องเสมือน (ไม่ใช่เฉพาะ Linux)
จะติดตั้ง KVM บน CentOS/RHEL ได้อย่างไร
เมื่อคุณกำหนดค่า KVM บนเซิร์ฟเวอร์ของคุณ คุณควรเริ่มต้นด้วยการตรวจสอบ CPU คุณต้องตรวจสอบให้แน่ใจว่า CPU ที่ติดตั้งบนโฮสต์ของคุณรองรับการจำลองเสมือนสำหรับฮาร์ดแวร์หรือไม่ เรียกใช้คำสั่งต่อไปนี้ในคอนโซลเซิร์ฟเวอร์ของคุณ:
# cat /proc/cpuinfo | egrep "(vmx|svm)"
หากโปรเซสเซอร์ของคุณรองรับ VT-x คุณจะเห็นผลลัพธ์ดังนี้:
หากคำสั่งไม่ส่งคืนสิ่งใด แต่คุณรู้ว่า CPU ของคุณรองรับการจำลองเสมือน ตรวจสอบให้แน่ใจว่าไม่ได้ปิดใช้งานตัวเลือกนี้ในเซิร์ฟเวอร์ BIOS . มองหา Intel Virtualization Technology หรือ โหมด SVM ตัวเลือก
เซิร์ฟเวอร์ของฉันรองรับ VT-x และเปิดใช้งานอยู่ ดังนั้นเราจึงสามารถติดตั้งแพ็คเกจที่จำเป็นบน CentOS/RHEL โดยใช้ yum/dnf:
# yum install libvirt libvirt-python libguestfs-tools qemu-kvm virt-install –y
- qemu-kvm – ไฮเปอร์ไวเซอร์ KVM
- libvirt – ไลบรารีการจัดการเวอร์ชวลไลเซชัน
- virt-install – เครื่องมือ CLI เพื่อจัดการเครื่องเสมือน KVM
แพ็คเกจจำนวนมากจะถูกติดตั้งบนเซิร์ฟเวอร์ Linux ของคุณ ตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดเกิดขึ้นระหว่างการติดตั้ง
จากนั้นเพิ่ม libvirtd บริการเพื่อเริ่มต้นและเรียกใช้:
# systemctl enable libvirtd
# systemctl start libvirtd
ตรวจสอบให้แน่ใจว่า kvm_intel และ เคอร์เนล kvm โหลดโมดูลแล้ว:
# lsmod | grep kvm
kvm_intel 188688 0 kvm 636931 1 kvm_intel irqbypass 13503 1 kvm
หากคำสั่งไม่ส่งคืนสิ่งใด ให้รีสตาร์ทโฮสต์แล้วตรวจสอบอีกครั้ง
สร้างและกำหนดค่าเครือข่ายบริดจ์สำหรับ KVM
จากนั้นสร้างไดเร็กทอรีเพื่อจัดเก็บดิสก์เครื่องเสมือนและอิมเมจ ISO ใน:
# mkdir -p /vz/{disk,iso}
เพื่อให้เครื่องเสมือนของคุณมีการเข้าถึงอินเทอร์เน็ต คุณต้องกำหนดค่าเครือข่ายโดยใช้ บริดจ์ . ในการทำเช่นนั้น คุณจะต้องมี bridge-utils . ตรวจสอบให้แน่ใจว่าได้ติดตั้งบนโฮสต์ Linux ของคุณโดยใช้คำสั่งนี้:
# rpm -qa | grep bridge-utils
ติดตั้งหากจำเป็น:
# yum install bridge-utils -y
หลังจากติดตั้งแพ็คเกจ virbr0 อินเทอร์เฟซเครือข่ายปรากฏในระบบปฏิบัติการ:
# ip a
เพื่อสร้าง สะพาน คุณต้องตั้งค่าไฟล์การกำหนดค่าของอินเทอร์เฟซเครือข่ายเซิร์ฟเวอร์ของคุณ:
# cp /etc/sysconfig/network-scripts/ifcfg-enp1s0f0 /etc/sysconfig/network-scripts/ifcfg-enp1s0f0_bak
– สำรองไฟล์# nano /etc/sysconfig/network-scripts/ifcfg-enp1s0f0
— เปิดเพื่อแก้ไข
ลบเนื้อหาไฟล์และแทนที่ด้วยสิ่งต่อไปนี้:
DEVICE="enp1s0f0" ONBOOT="yes" BRIDGE=br0
ในกรณีของคุณ ชื่ออินเทอร์เฟซอาจแตกต่างกัน (ใช้ ip a คำสั่ง)
จากนั้นสร้างไฟล์:
# nano /etc/sysconfig/network-scripts/ifcfg-br0
มีการกำหนดค่าดังต่อไปนี้:
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 ของเซิร์ฟเวอร์และเกตเวย์เริ่มต้น หลังจากที่คุณแก้ไขไฟล์การกำหนดค่าอินเทอร์เฟซเครือข่ายแล้ว ให้รีสตาร์ทเครือข่าย:
# service network restart
หากต้องการดูสถานะบริดจ์ ให้ใช้คำสั่งนี้:
# brctl show
bridge name bridge id STP enabled interfaces br0 8000.ac1f6b654321 no enp1s0f0 virbr0 8000.525400abcdef1 yes virbr0-nic
ในขั้นตอนสุดท้าย กำหนดค่าการส่งต่อการรับส่งข้อมูลเครือข่าย:
# echo -e "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
จากนั้นรีสตาร์ท libvirtd :
# service libvirtd restart
การกำหนดค่าเครือข่าย KVM พื้นฐานสิ้นสุดลงแล้ว และคุณสามารถสร้างเครื่องเสมือนได้
การสร้างเครื่องเสมือนใน KVM
ก่อนที่จะสร้างเครื่องเสมือน ฉันได้ดาวน์โหลดอิมเมจ CentOS 8 จากมิเรอร์อย่างเป็นทางการไปยัง /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 ใหม่ ให้เรียกใช้สิ่งต่อไปนี้:
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
— ชื่อ VMnoautoconsole
– หลังจากสร้าง VM คุณจะไม่เชื่อมต่อกับคอนโซล VM โดยอัตโนมัติnetwork
– ประเภทเครือข่าย (ในกรณีของฉันบริดจ์);ram
— จำนวน RAM ใน VM;vcpus
– จำนวนคอร์ของ CPU (การกำหนดค่า vCPU สำหรับ VM)disk
– ดิสก์เสมือน เส้นทาง – เส้นทางไปยังดิสก์ ขนาด – ขนาดของดิสก์ (คุณสามารถขยาย/ย่อได้ในภายหลัง)cdrom
– ติดตั้ง CDROM เสมือน, อิมเมจ ISO สำหรับติดตั้ง gust OS;graphics
— พารามิเตอร์เพื่อเชื่อมต่อกับเครื่องเสมือนโดยใช้คอนโซลกราฟิก เราจะใช้ VNC เพื่อเชื่อมต่อกับมัน ดังนั้นสำหรับการฟัง ให้ระบุที่อยู่ IP ของเซิร์ฟเวอร์ KVM ที่คุณสร้าง VM และรหัสผ่านเพื่อเชื่อมต่อกับคอนโซลเครื่องเสมือน
ในการทำให้ VM บูตโดยอัตโนมัติ ให้เรียกใช้:
# virsh autostart test-centosvm
จะเชื่อมต่อกับ KVM VM โดยใช้ VNC และติดตั้งระบบปฏิบัติการได้อย่างไร
ในการเชื่อมต่อกับเครื่องเสมือน KVM โดยใช้ VNC คุณต้องค้นหาพอร์ตที่กำลังทำงานอยู่:# virsh vncdisplay test-centovms
IP:0
0 หมายความว่าหมายเลขพอร์ตที่จะเชื่อมต่อโดยใช้ VNC คือ 5900 หากคุณได้รับค่าอื่น เพียงเพิ่มหมายเลขที่คำสั่งได้ส่งคืนไปที่ 5900
ในการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ VNC ฉันใช้ TightVNC . เรียกใช้และระบุที่อยู่ IP ของเซิร์ฟเวอร์ของคุณและพอร์ต VNC ที่เราได้รับก่อนหน้านี้ (โดยมีโคลอนคู่เป็นตัวคั่น)
คลิกเชื่อมต่อ และป้อนรหัสผ่านที่คุณตั้งไว้เมื่อสร้าง KVM VM หากคุณทำอย่างถูกต้อง คอนโซลเซิร์ฟเวอร์จะปรากฏขึ้น ซึ่งการติดตั้ง CentOS (หรือระบบปฏิบัติการแขกอื่น ที่คุณติดตั้งอิมเมจ) กำลังทำงานอยู่
หากเปิดใช้งานไฟร์วอลล์บนเซิร์ฟเวอร์ของคุณ ให้เปิดพอร์ต 5900-5910 สำหรับ VNC ใน firewalld/iptables (พอร์ตสิบพอร์ตก็เพียงพอแล้ว) หลังจากติดตั้ง guest OS บนเครื่องเสมือน ให้เริ่ม VM จากคอนโซลเซิร์ฟเวอร์:
หากต้องการปิดเครื่องเสมือน KVM ให้ใช้คำสั่งนี้:
# virsh shutdown test-centosvm
วิธีแสดงรายการเครื่องเสมือน KVM ที่ลงทะเบียนทั้งหมด:
# virsh list --all
การกำหนดค่าโฮสต์ KVM พื้นฐานสิ้นสุดลง และสร้างเครื่องเสมือนแล้ว คุณสามารถสร้างเครื่องเสมือนจำนวนเท่าใดก็ได้ใน KVM ขึ้นอยู่กับทรัพยากรเซิร์ฟเวอร์และความต้องการของคุณเท่านั้น