ซีรี่ส์ RHCSA: สิ่งจำเป็นสำหรับการจำลองเสมือนและการดูแลระบบผู้เยี่ยมชมด้วย KVM - ตอนที่ 15
หากคุณค้นหาคำว่า virtualize ในพจนานุกรม คุณจะพบว่าคำว่า virtualize หมายถึง “การสร้างบางสิ่งในเวอร์ชันเสมือนจริง (แทนที่จะเป็นของจริง)” ในการประมวลผล คำว่าการจำลองเสมือนหมายถึงความเป็นไปได้ในการใช้งานระบบปฏิบัติการหลายระบบพร้อมกันและแยกระบบปฏิบัติการออกจากกัน บนระบบทางกายภาพ (ฮาร์ดแวร์) เดียวกัน ซึ่งเป็นที่รู้จักในสคีมาการจำลองเสมือนว่าเป็น โฮสต์
ด้วยการใช้การตรวจสอบเครื่องเสมือน (หรือที่เรียกว่า ไฮเปอร์ไวเซอร์) เครื่องเสมือน (เรียกว่า แขก) จะได้รับทรัพยากรเสมือน (เช่น CPU, RAM, พื้นที่เก็บข้อมูล, เครือข่าย อินเทอร์เฟซ เป็นต้น) จากฮาร์ดแวร์พื้นฐาน
ด้วยเหตุนี้ จึงเห็นได้ชัดเจนว่าข้อดีหลักประการหนึ่งของการจำลองเสมือนคือการประหยัดต้นทุน (ในอุปกรณ์และโครงสร้างพื้นฐานเครือข่าย และในแง่ของความพยายามในการบำรุงรักษา) และการลดพื้นที่ทางกายภาพที่จำเป็นสำหรับการรองรับฮาร์ดแวร์ที่จำเป็นทั้งหมดอย่างมาก
เนื่องจากวิธีการสั้นๆ นี้ไม่ครอบคลุมวิธีการจำลองเสมือนทั้งหมด ฉันขอแนะนำให้คุณดูเอกสารประกอบที่แสดงอยู่ในข้อมูลสรุปเพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้
โปรดทราบว่าบทความนี้มีวัตถุประสงค์เพื่อเป็นจุดเริ่มต้นในการเรียนรู้พื้นฐานของการจำลองเสมือนใน RHEL 7 โดยใช้ KVM (เครื่องเสมือนที่ใช้เคอร์เนล) พร้อมด้วยยูทิลิตี้บรรทัดคำสั่ง ไม่ใช่ใน - การอภิปรายเชิงลึกของหัวข้อ
การตรวจสอบข้อกำหนดฮาร์ดแวร์และการติดตั้งแพ็คเกจ
ในการตั้งค่าการจำลองเสมือน CPU ของคุณต้องรองรับ คุณสามารถตรวจสอบว่าระบบของคุณตรงตามข้อกำหนดหรือไม่ด้วยคำสั่งต่อไปนี้:
grep -E 'svm|vmx' /proc/cpuinfo
ในภาพหน้าจอต่อไปนี้ เราจะเห็นว่าระบบปัจจุบัน (ที่มีไมโครโปรเซสเซอร์ AMD) รองรับการจำลองเสมือน ตามที่ระบุโดย svm หากเรามีโปรเซสเซอร์ที่ใช้ Intel เราจะเห็น vmx แทนในผลลัพธ์ของคำสั่งข้างต้น
นอกจากนี้ คุณจะต้องเปิดใช้งานความสามารถในการจำลองเสมือนในเฟิร์มแวร์ของโฮสต์ของคุณ (BIOS หรือ UEFI)
ตอนนี้ติดตั้งแพ็คเกจที่จำเป็น:
- qemu-kvm เป็นโอเพ่นซอร์สเวอร์ชวลไลเซอร์ที่ให้การจำลองฮาร์ดแวร์สำหรับไฮเปอร์ไวเซอร์ KVM ในขณะที่ qemu-img มีเครื่องมือบรรทัดคำสั่งสำหรับจัดการอิมเมจของดิสก์
- libvirt มีเครื่องมือในการโต้ตอบกับความสามารถในการจำลองเสมือนของระบบปฏิบัติการ
- libvirt-python มีโมดูลที่อนุญาตให้แอปพลิเคชันที่เขียนด้วย Python ใช้อินเทอร์เฟซที่จัดทำโดย libvirt
- libguestfs-tools: เครื่องมือบรรทัดคำสั่งของผู้ดูแลระบบเบ็ดเตล็ดสำหรับเครื่องเสมือน
- virt-install: ยูทิลิตี้บรรทัดคำสั่งอื่นๆ สำหรับการดูแลระบบเครื่องเสมือน
yum update && yum install qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install
เมื่อการติดตั้งเสร็จสิ้น ตรวจสอบให้แน่ใจว่าคุณเริ่มและเปิดใช้งานบริการ libvirtd:
systemctl start libvirtd.service
systemctl enable libvirtd.service
ตามค่าเริ่มต้น เครื่องเสมือนแต่ละเครื่องจะสามารถสื่อสารกับส่วนที่เหลือในเซิร์ฟเวอร์จริงเดียวกันและกับโฮสต์เองเท่านั้น เพื่อให้แขกสามารถเข้าถึงเครื่องอื่นๆ ภายใน LAN ของเราและอินเทอร์เน็ตได้ เราจำเป็นต้องตั้งค่าอินเทอร์เฟซบริดจ์ในโฮสต์ของเรา (เช่น br0) โดย
1. เพิ่มบรรทัดต่อไปนี้ในการกำหนดค่า NIC หลักของเรา (มีแนวโน้มมากที่สุดคือ /etc/sysconfig/network-scripts/ifcfg-enp0s3
):
BRIDGE=br0
2. การสร้างไฟล์การกำหนดค่าสำหรับ br0 (/etc/sysconfig/network-scripts/ifcfg-br0
) ด้วยเนื้อหาเหล่านี้ (โปรดทราบว่าคุณ อาจต้องเปลี่ยนที่อยู่ IP ที่อยู่เกตเวย์ และข้อมูล DNS):
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=br0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=8.8.4.4
3. ในที่สุด เปิดใช้งานการส่งต่อแพ็คเก็ตโดยการสร้างใน /etc/sysctl.conf
net.ipv4.ip_forward = 1
และโหลดการเปลี่ยนแปลงการกำหนดค่าเคอร์เนลปัจจุบัน:
sysctl -p
โปรดทราบว่าคุณอาจต้องแจ้ง ไฟร์วอลล์ ว่าการรับส่งข้อมูลประเภทนี้ควรได้รับอนุญาต โปรดจำไว้ว่าคุณสามารถดูบทความในหัวข้อนั้นในชุดเดียวกันนี้ (ตอนที่ 11: การควบคุมการรับส่งข้อมูลเครือข่ายโดยใช้ FirewallD และ Iptables) หากคุณต้องการความช่วยเหลือในการทำเช่นนั้น