การติดตั้ง linux mint kvm ubuntu การทำงานกับเครื่องเสมือน KVM การแนะนำ. การสร้างระบบแขก

ฉันกำลังเขียนบันทึกนี้เพื่อสาธิต การติดตั้งทีละขั้นตอนและการตั้งค่าเครื่องเสมือนที่ใช้ KVM ใน Linux ก่อนหน้านี้ฉันเคยเขียนเกี่ยวกับการจำลองเสมือนซึ่งฉันใช้ไฟล์ .

ตอนนี้ผมประสบปัญหาเรื่องค่าเช่า เซิร์ฟเวอร์ที่ดีด้วย RAM จำนวนมากและมากมาย ฮาร์ดไดรฟ์- แต่ฉันไม่ต้องการรันโปรเจ็กต์บนเครื่องโฮสต์โดยตรง ดังนั้นฉันจะแยกโปรเจ็กต์ออกเป็นเซิร์ฟเวอร์เสมือนขนาดเล็กแยกกันที่ใช้ Linux หรือคอนเทนเนอร์ Docker (ฉันจะพูดถึงพวกมันในบทความอื่น)

โฮสติ้งคลาวด์สมัยใหม่ทั้งหมดทำงานบนหลักการเดียวกัน นั่นคือ โฮสต์บนฮาร์ดแวร์ที่ดีจะช่วยเพิ่มได้มาก เซิร์ฟเวอร์เสมือนซึ่งเราใช้ในการเรียก VPS/VDS และแจกจ่ายให้กับผู้ใช้ หรือทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ (สวัสดี DigitalOcean)

KVM (เครื่องเสมือนที่ใช้เคอร์เนล) คือ ซอฟต์แวร์สำหรับ Linux โดยใช้ฮาร์ดแวร์โปรเซสเซอร์ที่รองรับ x86 เพื่อทำงานร่วมกับเทคโนโลยีการจำลองเสมือน Intel VT/AMD SVM

การติดตั้ง KVM

ฉันจะดำเนินการสร้างเครื่องเสมือนบน Ubuntu 16.04.1 LTS OS ทั้งหมด เพื่อตรวจสอบว่ากระบวนการของคุณรองรับการจำลองเสมือนสำหรับฮาร์ดแวร์หรือไม่ ใช้อินเทล VT/AMD SVM ดำเนินการ:

Grep -E "(vmx|svm)" /proc/cpuinfo

หากเทอร์มินัลไม่ว่างเปล่า แสดงว่าทุกอย่างเป็นไปตามลำดับและสามารถติดตั้ง KVM ได้ Ubuntu รองรับเฉพาะไฮเปอร์ไวเซอร์ KVM อย่างเป็นทางการเท่านั้น (รวมอยู่ใน เคอร์เนลลินุกซ์) และแนะนำให้ใช้ไลบรารี libvirt เป็นเครื่องมือในการจัดการ ซึ่งนั่นคือสิ่งที่เราจะทำต่อไป

คุณสามารถตรวจสอบการสนับสนุนการจำลองเสมือนของฮาร์ดแวร์ใน Ubuntu ได้โดยใช้คำสั่ง:

หากสำเร็จคุณจะเห็นสิ่งนี้:

ข้อมูล: /dev/kvm มีอยู่ สามารถใช้การเร่งความเร็ว KVM ได้

ติดตั้งแพ็คเกจสำหรับการทำงานกับ KVM:

Sudo apt-get ติดตั้ง qemu-kvm libvirt-bin ubuntu-vm-builder สะพาน-utils

หากคุณสามารถเข้าไปได้ เปลือกกราฟิกระบบแล้วจึงสามารถติดตั้งได้ ผู้จัดการ GUI libvirt:

Sudo apt-get ติดตั้ง virt-manager

การใช้ virt-manager นั้นค่อนข้างง่าย (ไม่ยากไปกว่า VirtualBox) ดังนั้นในบทความนี้เราจะพูดถึงตัวเลือกคอนโซลสำหรับการติดตั้งและกำหนดค่าเซิร์ฟเวอร์เสมือน

การติดตั้งและกำหนดค่าเซิร์ฟเวอร์เสมือน

ในเวอร์ชันคอนโซลของการติดตั้ง การกำหนดค่า และการจัดการระบบ เป็นเครื่องมือที่ขาดไม่ได้เป็นยูทิลิตี้ virsh (ส่วนเสริมของไลบรารี libvirt) เธอมี จำนวนมากตัวเลือกและพารามิเตอร์ คำอธิบายโดยละเอียดสามารถรับได้ดังนี้:

แมน เวอร์ช

หรือเรียกมาตรฐาน "ช่วยเหลือ":

เวียร์ช่วยด้วย

ฉันมักจะติดที่จะ กฎต่อไปนี้เมื่อทำงานกับเซิร์ฟเวอร์เสมือน:

  1. ฉันเก็บ ภาพไอโซ OS ในไดเร็กทอรี /var/lib/libvirt/boot
  2. ฉันเก็บภาพ เครื่องเสมือนในไดเร็กทอรี /var/lib/libvirt/images
  3. ฉันกำหนดที่อยู่ IP แบบคงที่ให้กับเครื่องเสมือนใหม่แต่ละเครื่องอย่างชัดเจนผ่านทาง เซิร์ฟเวอร์ DHCPไฮเปอร์ไวเซอร์

มาเริ่มการติดตั้งเครื่องเสมือนเครื่องแรกกัน (เซิร์ฟเวอร์ 64 บิต Ubuntu 16.04 LTS):

ซีดี /var/lib/libvirt/boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

หลังจากดาวน์โหลดอิมเมจแล้ว ให้เริ่มการติดตั้ง:

Sudo virt-install \ --virt-type=kvm \ --name ubuntu1604\ --ram 1024 \ --vcpus=1 \ --os-variant=ubuntu16.04 \ --hvm \ --cdrom=/var/ lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \ --network network=default,model=virtio \ --graphics vnc \ --disk path=/var/lib/libvirt/images/ubuntu1604 img,size=20,bus=virtio

แปลพารามิเตอร์ทั้งหมดเหล่านี้เป็น " ภาษามนุษย์" ปรากฎว่าเรากำลังสร้างเครื่องเสมือนด้วย Ubuntu 16.04 OS, RAM 1024 MB, โปรเซสเซอร์ 1 ตัว, การ์ดเครือข่ายมาตรฐาน (เครื่องเสมือนจะเข้าถึงอินเทอร์เน็ตราวกับว่าเป็นเพราะ NAT), HDD 20 GB

ควรให้ความสนใจกับพารามิเตอร์ --os-ตัวแปรโดยจะแจ้งไฮเปอร์ไวเซอร์ว่าควรปรับการตั้งค่าระบบปฏิบัติการใด
รายการ ตัวเลือกที่ใช้ได้สามารถรับระบบปฏิบัติการได้โดยการรันคำสั่ง:

Osinfo-แบบสอบถามระบบปฏิบัติการ

หากยูทิลิตี้ดังกล่าวไม่ได้อยู่ในระบบของคุณ ให้ติดตั้ง:

Sudo apt-get ติดตั้ง libosinfo-bin

หลังจากเริ่มการติดตั้ง ข้อความต่อไปนี้จะปรากฏขึ้นในคอนโซล:

การติดตั้งโดเมนยังคงอยู่ในระหว่างดำเนินการ คุณสามารถเชื่อมต่อกับคอนโซลอีกครั้งเพื่อให้กระบวนการติดตั้งเสร็จสมบูรณ์

นี่เป็นสถานการณ์ปกติ เราจะดำเนินการติดตั้งผ่าน VNC ต่อไป
มาดูกันว่าพอร์ตใดถูกยกขึ้นบนเครื่องเสมือนของเรา (เช่นในเทอร์มินัลถัดไป):

Virsh dumpxml ubuntu1604... ...

พอร์ต 5900 ตามที่อยู่ในท้องถิ่น 127.0.0.1 หากต้องการเชื่อมต่อกับ VNC คุณต้องใช้การส่งต่อพอร์ตผ่าน ssh ก่อนดำเนินการนี้ ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการส่งต่อ TCP ใน ssh daemon แล้ว โดยไปที่การตั้งค่า sshd:

แมว /etc/ssh/sshd_config | grep อนุญาต TcpForwarding

หากไม่พบสิ่งใดหรือคุณเห็น:

อนุญาตหมายเลขการส่งต่อ Tcp

จากนั้นเราแก้ไขการกำหนดค่าเป็น

อนุญาต TcpForwarding ใช่

และรีบูต sshd

การตั้งค่าการส่งต่อพอร์ต

เราดำเนินการคำสั่งบนเครื่องท้องถิ่น:

Ssh -fN -l เข้าสู่ระบบ -L 127.0.0.1:5900:localhost:5900 server_ip

ที่นี่เราได้กำหนดค่า ssh แล้ว การส่งต่อพอร์ตจากพอร์ตโลคัล 5900 ไปยังพอร์ตเซิร์ฟเวอร์ 5900 ตอนนี้คุณสามารถเชื่อมต่อกับ VNC โดยใช้ไคลเอนต์ VNC ใดก็ได้ ฉันชอบ UltraVNC เพราะมันเรียบง่ายและสะดวกสบาย

หลังจากเชื่อมต่อสำเร็จ หน้าจอจะแสดงขึ้นมา หน้าต่างมาตรฐานคำทักทายสำหรับการเริ่มการติดตั้ง Ubuntu:

หลังจากการติดตั้งเสร็จสิ้นและการรีบูตตามปกติ หน้าต่างเข้าสู่ระบบจะปรากฏขึ้น หลังจากเข้าสู่ระบบ เราจะกำหนดที่อยู่ IP ของเครื่องเสมือนที่สร้างขึ้นใหม่เพื่อที่จะทำให้มันคงที่ในภายหลัง:

ถ้ากำหนดค่า

เราจำได้และไปที่เครื่องโฮสต์ เราดึงที่อยู่ mac ของการ์ด "เครือข่าย" ของเครื่องเสมือนออก:

Virsh dumpxml ubuntu1604 | เกรพ " ที่อยู่แม็ค"

จำที่อยู่ mac ของเรา:

การแก้ไขการตั้งค่าเครือข่ายของไฮเปอร์ไวเซอร์:

Sudo virsh net-edit ค่าเริ่มต้น

เรามองหา DHCP และเพิ่มสิ่งนี้:

มันควรมีลักษณะดังนี้:

เพื่อให้การตั้งค่ามีผล คุณต้องรีสตาร์ทเซิร์ฟเวอร์ DHCP ของไฮเปอร์ไวเซอร์:

Sudo virsh net-destroy เริ่มต้น sudo virsh net-start เริ่มต้น sudo service libvirt-bin รีสตาร์ท

หลังจากนี้เราจะรีบูทเครื่องเสมือนตอนนี้จะมีที่อยู่ IP ที่กำหนดไว้เสมอ - 192.168.122.131

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

หากต้องการเชื่อมต่อกับเทอร์มินัลเครื่องเสมือน ให้รัน:

เอสเอสเอช 192.168.122.131

รถพร้อมสำหรับการรบ

Virsh: รายการคำสั่ง

เพื่อดูการวิ่ง โฮสต์เสมือน(สามารถรับได้ทั้งหมดโดยเพิ่ม --all):

รายการ Sudo virsh

คุณสามารถรีบูตโฮสต์ได้:

Sudo virsh รีบูต $VM_NAME

หยุดเครื่องเสมือน:

Sudo virsh หยุด $VM_NAME

ดำเนินการหยุด:

Sudo virsh ทำลาย $VM_NAME

Sudo virsh เริ่มต้น $VM_NAME

ปิดการใช้งาน:

Sudo virsh ปิดระบบ $VM_NAME

เพิ่มในการทำงานอัตโนมัติ:

Sudo virsh เริ่มอัตโนมัติ $VM_NAME

บ่อยครั้งที่จำเป็นต้องโคลนระบบเพื่อใช้เป็นเฟรมเวิร์กสำหรับระบบปฏิบัติการเสมือนอื่น ๆ ในอนาคต สำหรับสิ่งนี้จึงใช้ยูทิลิตี้ virt-clone

Virt-clone -- ช่วยด้วย

โดยจะโคลนเครื่องเสมือนที่มีอยู่และเปลี่ยนแปลงข้อมูลที่ละเอียดอ่อนของโฮสต์ เช่น ที่อยู่ Mac รหัสผ่าน ไฟล์ และข้อมูลเฉพาะของผู้ใช้อื่นๆ ในโคลนยังคงเหมือนเดิม หากที่อยู่ IP บนเครื่องเสมือนโคลนถูกลงทะเบียนด้วยตนเอง ปัญหาเกี่ยวกับการเข้าถึง SSH สำหรับโคลนอาจเกิดขึ้นเนื่องจากข้อขัดแย้ง (2 โฮสต์ที่มี IP เดียวกัน)

นอกเหนือจากการติดตั้งเครื่องเสมือนผ่าน VNC แล้ว ยังสามารถใช้ X11Forwarding ผ่านยูทิลิตี้ virt-manager ได้อีกด้วย ตัวอย่างเช่น บน Windows คุณสามารถใช้ Xming และ PuTTY ได้

ในฐานะผู้ชื่นชอบ Linux ฉันตรวจสอบหลายอย่างมาก โอเพ่นซอร์สและแอพพลิเคชั่นลินุกซ์ตลอดจนการแจกแจงทุกวัน โดยพื้นฐานแล้วฉันใช้ ออราเคิล VirtualBoxสำหรับการทดสอบและสร้างระบบปฏิบัติการต่างๆ VirtualBox เป็นเครื่องมือการจำลองเสมือนยอดนิยมสำหรับการปรับใช้หรือทดสอบการแจกแจงประเภทต่างๆ เช่นเดียวกับ Oracle VirtualBox มีผลิตภัณฑ์เสมือนจริงมากมาย เช่น , OpenVZ, KVM, Proxmox เป็นต้น วันนี้เราจะมาหารือเกี่ยวกับ QEMU

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

เมื่อนำมาใช้เป็นเครื่องจักร โปรแกรมจำลอง QEMUสามารถรันระบบปฏิบัติการและโปรแกรมที่สร้างขึ้นสำหรับเครื่องหนึ่งบนอีกเครื่องหนึ่งได้ (เช่น พีซีของคุณเอง) การใช้การแปลแบบไดนามิกทำให้ได้ประสิทธิภาพที่ดีมาก

เมื่อใช้เป็นเวอร์ชวลไลเซอร์ QEMU จะได้รับประสิทธิภาพที่คล้ายกันมากโดยการรันโค้ดเกสต์บนโปรเซสเซอร์โฮสต์โดยตรง QEMU รองรับการจำลองเสมือนเมื่อทำงานภายใต้ไฮเปอร์ไวเซอร์ Xen หรือด้วย โดยใช้ KVMโมดูลเคอร์เนลลินุกซ์

QEMU มีสองโหมดการทำงาน:

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

QEMU สามารถทำงานได้โดยไม่ต้องใช้ไดรเวอร์โฮสต์เคอร์เนล และยังคงให้ประสิทธิภาพที่ยอมรับได้

ติดตั้ง QEMU บน Ubuntu 16.04

ในตัวอย่างนี้ เรามาดูวิธีการติดตั้งและกำหนดค่า QEMU บน Ubuntu 16.04 LTS รวมถึงวิธีสร้างและจัดการเครื่องเสมือน

QEMU มีให้ใช้งานได้ตามค่าเริ่มต้นในที่เก็บ Ubuntu ดังนั้นเราจึงสามารถติดตั้งมันด้วยเครื่องมือ Virt Manager โดยใช้คำสั่ง:

ติดตั้ง Sudo apt qemu-kvm qemu qemu-system virt-manager virt-viewer libvirt-bin

หลังจากติดตั้งแพ็คเกจข้างต้นแล้ว ให้รีบูทระบบ

การสร้างเครื่องเสมือน

ตอนนี้เรามาสร้างเครื่องเสมือนใหม่กันดีกว่า

ก่อนอื่นคุณต้องสร้าง ภาพเสมือนจริงฮาร์ดไดรฟ์สำหรับเครื่องเสมือนใหม่ ยกตัวอย่างมาสร้างกัน ภาพที่ยากลำบากขนาดดิสก์ 20GB.

Qemu-img สร้าง ubuntu.img 20G

จากนั้นดาวน์โหลด ภาพการติดตั้ง เซิร์ฟเวอร์อูบุนตู 15.04 น. จากเว็บไซต์ทางการ

หากต้องการบูตเครื่องเสมือน ให้รันคำสั่งต่อไปนี้:

สำหรับระบบ 64 บิต

Qemu-system-x86_64 -hda ubuntu.img -boot d -cdrom /home/linuxthebest/ดาวน์โหลด/ubuntu-15.04-server-i386.iso -m 1024

สำหรับระบบ 32 บิต

Qemu-system-i386 -hda ubuntu.img -boot d -cdrom /home/linuxthebest/Downloads/ubuntu-15.04-server-amd64.iso -m 1024

โดยที่ “/home/linuxthebest/Downloads/ubuntu-15.04-server-i386.iso” คือไดเร็กทอรีที่ดาวน์โหลดอิมเมจ และ 1024 คือขนาดของ RAM ที่จัดสรรสำหรับเครื่อง

เมื่อบูตเครื่องหน้าจอการติดตั้งจะปรากฏขึ้น กด Enter และทำการติดตั้งต่อตามปกติ

หลังจากการติดตั้งเสร็จสมบูรณ์ สามารถบูตระบบได้โดยใช้คำสั่ง:

Qemu -hda ubuntu.img -m 1024

นั่นคือทั้งหมดที่

ไม่ชอบบรรทัดคำสั่งใช่ไหม การสร้างและการจัดการเครื่องเสมือนจากบรรทัดคำสั่งอาจเป็นเรื่องยากสำหรับผู้ใช้บางราย ไม่ต้องกังวล เรายังสามารถสร้างเครื่องเสมือนโดยใช้เครื่องมือ GUI ที่เรียกว่าได้ ตัวจัดการเครื่องเสมือน (Virt Manager).

หากคุณยังไม่เคยติดตั้งมาก่อน คุณสามารถติดตั้งได้โดยใช้คำสั่ง

Sudo apt ติดตั้ง virt-manager qemu-system libvirt-bin

สร้างและจัดการเครื่องเสมือนโดยใช้ Virt Manager

เปิดตัวจัดการเครื่องเสมือน

Sudo virt-ผู้จัดการ

ตามค่าเริ่มต้น อินเทอร์เฟซ Virt Manager จะมีลักษณะดังนี้

ตอนนี้เราจะสร้างและติดตั้ง Ubuntu 16.10 บนเครื่องเสมือน

หากต้องการสร้างเครื่องเสมือน ให้ไปที่ไฟล์ -> เครื่องเสมือนใหม่

เลือกระบบปฏิบัติการที่คุณต้องการติดตั้ง

คุณสามารถติดตั้ง guest OS ได้โดยใช้อิมเมจ ISO/CD-ROM ในเครื่อง การติดตั้งเครือข่ายเซิร์ฟเวอร์ PXE หรือนำเข้าดิสก์อิมเมจที่มีอยู่ นอกจากนี้ คุณสามารถเลือกสถาปัตยกรรมระบบปฏิบัติการเกสต์ได้ พารามิเตอร์เพิ่มเติม.

เลือกจำนวน RAM และโปรเซสเซอร์

กรอกขนาดของคุณ ยากเสมือนดิสก์. ค่าเริ่มต้นคือ 8GB

ป้อนชื่อระบบปฏิบัติการเกสต์ของคุณ และเลือกประเภทเครือข่ายจากตัวเลือกขั้นสูง ในที่สุด คลิกเสร็จสิ้น

หลังจากคลิกปุ่มเสร็จสิ้น guest OS จะเริ่มโหลดโดยอัตโนมัติ

นั่นคือทั้งหมดที่ ตอนนี้ให้ติดตั้ง guest OS เช่นเดียวกับที่คุณทำบนระบบปกติ

ฉันติดตั้ง Ubuntu 16.10 ใน virt manager และอีกอย่าง unity 8 ทำงานที่นั่น เมื่อเทียบกับ virtualbox ซึ่งมันใช้งานไม่ได้ ดังนั้นหากคุณต้องการทดสอบสภาพแวดล้อมการทำงานใหม่ คุณสามารถติดตั้ง virt manager และเรียกใช้ unity 8 ที่นั่นได้ .


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

ทำไม ? ระบบปฏิบัติการนี้อยู่ใกล้และเข้าใจได้สำหรับฉัน ดังนั้นจึงไม่มีการทรมาน ทรมาน หรือโยนทิ้งเมื่อเลือกการแจกจ่าย สิทธิพิเศษเหนือ Red Hat เอ็นเตอร์ไพรส์ลินุกซ์เขาไม่ทำ แต่ได้ตัดสินใจทำงานกับระบบที่คุ้นเคย

หากคุณกำลังวางแผนที่จะปรับใช้โครงสร้างพื้นฐานของคุณเองโดยใช้เทคโนโลยีที่คล้ายกัน ฉันขอแนะนำให้เลือก RHEL: ต้องขอบคุณเอกสารที่ดีและการเขียนที่ดี แอพพลิเคชั่นหากไม่ใช่ลำดับความสำคัญก็จะง่ายกว่าสองเท่าอย่างแน่นอนและด้วยระบบการรับรองที่พัฒนาขึ้นจึงเป็นไปได้โดยไม่ยากมากนักในการหาผู้เชี่ยวชาญจำนวนหนึ่งที่มีระดับที่เหมาะสมซึ่งคุ้นเคยกับระบบปฏิบัติการนี้

เราตัดสินใจใช้อีกครั้ง เดเบียนบีบพร้อมชุดแพ็คเกจจาก ซิด/ทดลองและบางแพ็คเกจที่แบ็คพอร์ตและคอมไพล์ด้วยแพตช์ของเรา
มีแผนที่จะเผยแพร่พื้นที่เก็บข้อมูลพร้อมแพ็กเกจ

เมื่อเลือกเทคโนโลยีการจำลองเสมือนจะพิจารณาสองตัวเลือก - Xen และ KVM

นอกจากนี้ ความจริงที่ว่ามีนักพัฒนา ผู้ให้บริการโฮสต์ และโซลูชันเชิงพาณิชย์ที่ใช้ Xen จำนวนมากก็ถูกนำมาพิจารณาด้วย ยิ่งน่าสนใจมากเท่าใดในการใช้โซลูชันที่ใช้ KVM

เหตุผลหลักที่เราตัดสินใจใช้ KVM คือความจำเป็นในการรันเครื่องเสมือนด้วย FreeBSD และ MS Windows ในอนาคต

ในการจัดการเครื่องเสมือน การใช้ผลิตภัณฑ์ที่ใช้ API นั้นสะดวกอย่างยิ่ง: เวอร์ช, virt-ผู้จัดการ, virt-ติดตั้ง, ราคา

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

แน่นอนว่าวิธีแก้ปัญหานั้นไม่สมบูรณ์แบบ ข้อเสีย ได้แก่ :

  • ข้อความแสดงข้อผิดพลาดที่บ้าคลั่งอย่างแน่นอน
  • ไม่สามารถเปลี่ยนส่วนหนึ่งของการกำหนดค่าเครื่องเสมือนได้ทันที แม้ว่า QMP (QEMU Monitor Protocol) จะอนุญาตก็ตาม
  • บางครั้ง ไม่สามารถเชื่อมต่อกับ libvirtd ได้ด้วยเหตุผลที่ไม่ทราบสาเหตุ - มันหยุดตอบสนองต่อเหตุการณ์ภายนอก

ปัญหาหลักในการใช้บริการตั้งแต่เริ่มต้นคือข้อจำกัดของทรัพยากรสำหรับเครื่องเสมือน ใน Xen ปัญหานี้ได้รับการแก้ไขโดยใช้ตัวกำหนดเวลาภายในที่กระจายทรัพยากรระหว่างเครื่องเสมือน - และที่สำคัญที่สุดคือความสามารถในการจำกัดและ การดำเนินงานของดิสก์รวมทั้ง.

KVM ไม่มีสิ่งใดเช่นนี้จนกระทั่งกลไกการจัดสรรทรัพยากรเคอร์เนลเกิดขึ้น ตามปกติใน Linux การเข้าถึงฟังก์ชั่นเหล่านี้ถูกนำมาใช้ผ่านทางพิเศษ ระบบไฟล์ ซีกรุ๊ปซึ่งใช้แบบธรรมดา การโทรของระบบ write() คุณสามารถเพิ่มกระบวนการให้กับกลุ่ม กำหนดน้ำหนักเป็นนกแก้ว ระบุแกนหลักที่มันจะทำงาน ระบุ ปริมาณงานดิสก์ที่กระบวนการนี้สามารถใช้ได้ หรือกำหนดน้ำหนักให้กับมันอีกครั้ง

ข้อดีก็คือ ทั้งหมดนี้ถูกนำไปใช้ภายในเคอร์เนล และสามารถใช้ได้ไม่เพียงแต่สำหรับเซิร์ฟเวอร์เท่านั้น แต่ยังใช้กับเดสก์ท็อปด้วย (ซึ่งใช้ใน "The ~200 Line Linux Kernel Patch That Does Wonders") อันโด่งดัง และในความคิดของฉัน นี่เป็นหนึ่งในการเปลี่ยนแปลงที่สำคัญที่สุดในเวอร์ชัน 2.6 ไม่นับ #12309 ที่ฉันชื่นชอบ และไม่ใช่การยื่นระบบไฟล์อื่น บางทียกเว้น POHMELFS (แต่เพราะชื่อล้วนๆ)

ทัศนคติของฉันต่อไลบรารียูทิลิตี้นี้คลุมเครือมาก

ในอีกด้านหนึ่งจะมีลักษณะดังนี้:

และสิ่งนี้ยังยากที่จะประกอบจากแหล่งที่มา ซึ่งน้อยกว่ามากในแพ็คเกจ: บางครั้งสำหรับฉันแล้วดูเหมือนว่า Linux From Scratch นั้นง่ายกว่าเล็กน้อยในการสร้างตั้งแต่เริ่มต้น

ในทางกลับกัน มันเป็นสิ่งที่ทรงพลังมากที่ช่วยให้คุณสร้างอิมเมจสำหรับเครื่องเสมือน แก้ไข บีบอัด ติดตั้งด้วง แก้ไขตารางพาร์ติชัน จัดการ ไฟล์การกำหนดค่า, โอนเครื่อง "เหล็ก" ไปที่ สภาพแวดล้อมเสมือนจริง, ถ่ายโอนเครื่องเสมือนจากภาพหนึ่งไปยังอีกภาพหนึ่ง, ถ่ายโอนเครื่องเสมือนจากภาพไปยังฮาร์ดแวร์ และจริงๆ แล้ว จินตนาการของฉันทำให้ฉันผิดหวังเล็กน้อยที่นี่ โอ้ ใช่แล้ว คุณยังสามารถรัน daemon ภายในเครื่องเสมือน Linux และเข้าถึงข้อมูลเครื่องเสมือนแบบสดๆ และทำทั้งหมดนี้ในเชลล์, หลาม, Perl, java, ocaml นี่สั้นและไกลจาก รายการทั้งหมดของสิ่งที่สามารถทำได้ด้วย

สิ่งที่น่าสนใจคือโค้ดส่วนใหญ่ถูกสร้างขึ้น ณ เวลาที่ประกอบ รวมถึงเอกสารประกอบสำหรับโปรเจ็กต์ Ocaml และ Perl ถูกใช้กันอย่างแพร่หลาย ตัวโค้ดนั้นเขียนด้วยภาษา C ซึ่งจากนั้นจะหุ้มด้วย OCaml และโค้ดที่ซ้ำกันจะถูกสร้างขึ้นเอง การทำงานกับรูปภาพนั้นดำเนินการโดยการเปิดตัวอิมเมจบริการพิเศษ (อุปกรณ์ supermin) ซึ่งคำสั่งจะถูกส่งผ่านช่องทางเข้าไป อิมเมจการกู้คืนนี้มีชุดยูทิลิตี้บางชุด เช่น parted, mkfs และอื่นๆ ที่เป็นประโยชน์สำหรับผู้ดูแลระบบ

เมื่อเร็ว ๆ นี้ฉันเริ่มใช้มันที่บ้านเมื่อฉันดึงข้อมูลที่ต้องการจากอิมเมจ nandroid แต่ต้องใช้เคอร์เนลที่เปิดใช้งาน yaffs

อื่น

ด้านล่างมีอีกบางส่วน ลิงค์ที่น่าสนใจสำหรับคำอธิบายซอฟต์แวร์ที่ใช้ - อ่านและศึกษาด้วยตนเองหากสนใจ ตัวอย่างเช่น,

ใน Ubuntu ขอแนะนำให้ใช้ไฮเปอร์ไวเซอร์ KVM (ตัวจัดการเครื่องเสมือน) และไลบรารี libvirt เป็นเครื่องมือการจัดการ Libvirt มีชุดซอฟต์แวร์ API และ แอปพลิเคชันที่กำหนดเองการจัดการเครื่องเสมือน (VM) virt-manager (อินเทอร์เฟซแบบกราฟิก, GUI) หรือ virsh (บรรทัดคำสั่ง, CLI) เช่น ผู้จัดการทางเลือกคุณสามารถใช้ convirt (GUI) หรือ convirt2 (อินเทอร์เฟซเว็บ)

ปัจจุบันมีเพียงไฮเปอร์ไวเซอร์ KVM เท่านั้นที่ได้รับการสนับสนุนอย่างเป็นทางการบน Ubuntu ไฮเปอร์ไวเซอร์นี้เป็นส่วนหนึ่งของรหัสเคอร์เนลของระบบปฏิบัติการ Linux KVM ไม่รองรับ Paravirtualization ซึ่งแตกต่างจาก Xen ซึ่งหมายความว่า CPU ของคุณต้องรองรับเทคโนโลยี VT เพื่อใช้งาน คุณสามารถตรวจสอบว่าโปรเซสเซอร์ของคุณรองรับเทคโนโลยีนี้หรือไม่โดยการรันคำสั่งในเทอร์มินัล:

หากคุณได้รับข้อความต่อไปนี้:

ข้อมูล: /dev/kvm มีอยู่ สามารถใช้การเร่งความเร็ว KVM ได้

ซึ่งหมายความว่า KVM จะทำงานได้โดยไม่มีปัญหา

หากคุณได้รับข้อความต่อไปนี้ที่ทางออก:

CPU ของคุณไม่รองรับส่วนขยาย KVM การเร่งความเร็ว KVM ไม่สามารถใช้งานได้

คุณยังคงสามารถใช้เครื่องเสมือนได้ แต่จะช้ากว่ามาก

    ติดตั้งระบบ 64 บิตในฐานะแขก

    จัดสรร RAM มากกว่า 2 GB ให้กับระบบของแขก

การติดตั้ง

Sudo apt-get ติดตั้ง qemu-kvm libvirt-bin ubuntu-vm-builder สะพาน-utils

นี่คือการติดตั้งบนเซิร์ฟเวอร์ที่ไม่มี X กล่าวคือ ไม่มีอินเทอร์เฟซแบบกราฟิก คุณสามารถติดตั้งได้ด้วยคำสั่ง

Sudo apt-get ติดตั้ง virt-manager

หลังจากนี้รายการ "Virtual Machine Manager" จะปรากฏในเมนูและทุกอย่างจะทำงานได้ด้วยความน่าจะเป็นระดับสูง หากยังคงเกิดปัญหาใดๆ คุณจะต้องอ่านคำแนะนำในวิกิภาษาอังกฤษ

การสร้างระบบแขก

ขั้นตอนการสร้างแขกโดยใช้ กุยค่อนข้างง่าย

แต่สามารถอธิบายโหมดข้อความได้

qcow2

เมื่อสร้างระบบโดยใช้อินเทอร์เฟซแบบกราฟิกเป็นฮาร์ดดิสก์ คุณจะได้รับแจ้งให้เลือกไฟล์รูปภาพหรืออุปกรณ์บล็อกที่มีอยู่ หรือสร้าง ไฟล์ใหม่ด้วยข้อมูลดิบ (RAW) อย่างไรก็ตาม นี่ยังห่างไกลจากรูปแบบไฟล์เดียวที่มีอยู่ ในบรรดาดิสก์ทุกประเภทที่แสดงอยู่ใน man qemu-img ดิสก์ที่ยืดหยุ่นและทันสมัยที่สุดคือ qcow2 รองรับสแน็ปช็อต การเข้ารหัส และการบีบอัด ต้องสร้างขึ้นก่อนสร้างแขกใหม่

Qemu-img สร้าง -o การจัดสรรล่วงหน้า = ข้อมูลเมตา -f qcow2 qcow2.img 20G

ตามชายคนเดียวกัน qemu-img การจัดสรรข้อมูลเมตาล่วงหน้า (-o preallocation=metadata) ทำให้ดิสก์ใหญ่ขึ้นเล็กน้อยในตอนแรก แต่ให้ประสิทธิภาพที่ดีขึ้นเมื่อรูปภาพจำเป็นต้องขยาย ที่จริงแล้วใน ในกรณีนี้ตัวเลือกนี้ช่วยให้คุณหลีกเลี่ยงข้อผิดพลาดอันไม่พึงประสงค์ได้ สร้างภาพแล้วเริ่มแรกใช้พื้นที่น้อยกว่าหนึ่งเมกะไบต์และขยายเป็นขนาดที่ระบุตามต้องการ ระบบแขกควรเห็นขั้นตอนสุดท้ายนี้ทันที ขนาดที่ระบุอย่างไรก็ตาม ในระหว่างขั้นตอนการติดตั้ง เธอสามารถมองเห็นได้ ขนาดจริงไฟล์. โดยธรรมชาติแล้ว ให้ติดตั้งบน ฮาร์ดไดรฟ์ขนาด 200 kB มันจะปฏิเสธ ข้อผิดพลาดไม่เฉพาะเจาะจงกับ Ubuntu อย่างน้อยก็ปรากฏใน RHEL

นอกจากประเภทของรูปภาพแล้ว คุณสามารถเลือกวิธีการเชื่อมต่อได้ในภายหลัง - IDE, SCSI หรือ Virtio Disk ประสิทธิภาพจะขึ้นอยู่กับตัวเลือกนี้ ระบบย่อยของดิสก์- ไม่มีคำตอบที่ถูกต้องแน่นอน คุณต้องเลือกตามงานที่จะกำหนดให้กับระบบแขก หากระบบแขกถูกสร้างขึ้น "เพื่อดู" วิธีการใดๆ ก็ตามจะทำได้ โดยทั่วไป I/O มักเป็นจุดคอขวดของเครื่องเสมือน ดังนั้นเมื่อสร้างระบบที่มีการโหลดสูง ปัญหานี้จะต้องได้รับการปฏิบัติอย่างมีความรับผิดชอบมากที่สุด

โดยส่วนตัวแล้ว มันง่ายที่สุดสำหรับฉันที่จะนึกถึง KVM (เครื่องเสมือนที่ใช้เคอร์เนล) ว่าเป็นระดับนามธรรมเหนือเทคโนโลยีการจำลองเสมือนสำหรับฮาร์ดแวร์ อินเทล VT-xและเอเอ็มดี-วี เราใช้เครื่องที่มีโปรเซสเซอร์ที่รองรับหนึ่งในเทคโนโลยีเหล่านี้และเดิมพันสิ่งนี้ เครื่องลินุกซ์ใน Linux เราติดตั้ง KVM ด้วยเหตุนี้เราจึงได้รับโอกาสในการสร้างเครื่องเสมือน นี่คือวิธีการทำงานของคลาวด์โฮสติ้งโดยประมาณ เช่น Amazon Web Services นอกเหนือจาก KVM แล้ว บางครั้งยังใช้ Xen ด้วย แต่การสนทนาเกี่ยวกับเทคโนโลยีนี้อยู่นอกเหนือขอบเขตของโพสต์นี้ ต่างจากเทคโนโลยีการจำลองเสมือนของคอนเทนเนอร์ เช่น Docker KVM อนุญาตให้คุณเรียกใช้ระบบปฏิบัติการใด ๆ ในฐานะระบบเกสต์ แต่ก็มี โอค่าใช้จ่ายที่สูงขึ้นสำหรับการจำลองเสมือน

บันทึก:ขั้นตอนที่อธิบายด้านล่างนี้ได้รับการทดสอบโดยฉันบน Ubuntu Linux 14.04 แต่ตามทฤษฎีแล้วจะใช้ได้กับทั้ง Ubuntu เวอร์ชันอื่นและ Linux อื่น ๆ ทุกอย่างควรทำงานได้ทั้งบนเดสก์ท็อปและบนเซิร์ฟเวอร์ที่เข้าถึงได้ผ่าน SSH

การติดตั้ง KVM

เราตรวจสอบว่าโปรเซสเซอร์ของเรารองรับ Intel VT-x หรือ AMD-V หรือไม่:

grep -E "(vmx|svm)" /proc/cpuinfo

หากมีสิ่งใดร้อนขึ้น แสดงว่าได้รับการรองรับ และคุณก็สามารถเดินหน้าต่อไปได้

การติดตั้ง KVM:

อัปเดต sudo apt-get
sudo apt-get ติดตั้ง qemu-kvm libvirt-bin virtinst bridge-utils

โดยปกติจะจัดเก็บอะไรไว้ที่:

  • /var/lib/libvirt/boot/ - อิมเมจ ISO สำหรับการติดตั้งระบบเกสต์
  • /var/lib/libvirt/images/ - รูปภาพ ฮาร์ดไดรฟ์ระบบแขก
  • /var/log/libvirt/ - คุณควรมองหาบันทึกทั้งหมดที่นี่
  • /etc/libvirt/ - ไดเร็กทอรีพร้อมไฟล์คอนฟิกูเรชัน;

เมื่อติดตั้ง KVM แล้ว มาสร้างเครื่องเสมือนเครื่องแรกของเรากันดีกว่า

การสร้างเครื่องเสมือนเครื่องแรก

ฉันเลือก FreeBSD เป็นระบบแขก ดาวน์โหลดอิมเมจ ISO ของระบบ:

ซีดี /var/lib/libvirt/boot/
sudo wget http:// ftp.freebsd.org/ เส้นทาง/ ถึง/ some-freebsd-disk.iso

เครื่องเสมือนได้รับการจัดการในกรณีส่วนใหญ่โดยใช้ยูทิลิตี้ virsh:

sudo virsh --help

ก่อนที่จะเปิดตัวเครื่องเสมือน เราจะต้องรวบรวมข้อมูลเพิ่มเติมบางอย่าง

เราดูรายการเครือข่ายที่มีอยู่:

sudo virsh net-list

ดูข้อมูลเกี่ยวกับเครือข่ายเฉพาะ (ตั้งชื่อเป็นค่าเริ่มต้น):

sudo virsh net-info เป็นค่าเริ่มต้น

ลองดูรายการการปรับให้เหมาะสมสำหรับระบบปฏิบัติการเกสต์:

sudo virt-install --os-variant รายการ

ตอนนี้เราสร้างเครื่องเสมือนที่มี 1 CPU, RAM 1 GB และพื้นที่ดิสก์ 32 GB เชื่อมต่อกับเครือข่ายเริ่มต้น:

sudo virt-ติดตั้ง\
--virt-type = kvm \
--ชื่อ freebsd10\
--แรม 1024\
--vcpus=1\
--os-variant =freebsd8 \
--hvm\
--cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--เครือข่ายเครือข่าย =ค่าเริ่มต้น รุ่น =virtio \
--กราฟิก vnc\
--disk path =/ var/ lib/ libvirt/ image/ freebsd10.img,size =32 ,bus =virtio

คุณสามารถดู:

คำเตือน ไม่สามารถเชื่อมต่อกับคอนโซลกราฟิกได้: virt-viewer ไม่ใช่
ติดตั้งแล้ว กรุณาติดตั้งแพ็คเกจ "virt-viewer"

การติดตั้งโดเมนยังคงอยู่ในระหว่างดำเนินการ คุณสามารถเชื่อมต่อกับคอนโซลอีกครั้งได้
เพื่อเสร็จสิ้นกระบวนการติดตั้ง

นี่เป็นเรื่องปกติ นี่คือวิธีที่มันควรจะเป็น

จากนั้นดูคุณสมบัติของเครื่องเสมือนในรูปแบบ XML:

sudo virsh dumpxml ฟรีbsd10

นี่คือมากที่สุด ข้อมูลครบถ้วน- ซึ่งรวมถึงที่อยู่ MAC ซึ่งเราจะต้องใช้ในภายหลัง ขณะนี้เรากำลังค้นหาข้อมูลเกี่ยวกับ VNC ในกรณีของฉัน:

เมื่อใช้ไคลเอนต์โปรดของฉัน (ฉันใช้ Ramina เป็นการส่วนตัว) เราเข้าสู่ระบบผ่าน VNC โดยใช้การส่งต่อพอร์ต SSH หากจำเป็น เราเข้าสู่โปรแกรมติดตั้ง FreeBSD ทันที จากนั้นทุกอย่างก็เป็นไปตามปกติ - ถัดไป, ถัดไป, ถัดไป เราจะได้ระบบที่ติดตั้ง

คำสั่งพื้นฐาน

ตอนนี้เรามาดูคำสั่งพื้นฐานสำหรับการทำงานกับ KVM

รับรายการเครื่องเสมือนทั้งหมด:

รายการ sudo virsh --all

การรับข้อมูลเกี่ยวกับเครื่องเสมือนเฉพาะ:

sudo virsh dominfo ฟรี bsd10

เปิดตัวเครื่องเสมือน:

sudo virsh เริ่ม freebsd10

หยุดเครื่องเสมือน:

sudo virsh ปิดเครื่อง freebsd10

แทบจะตอกย้ำเครื่องเสมือน (แม้จะชื่อนี้ก็ตาม ไม่การลบ):

sudo virsh ทำลาย freebsd10

รีบูทเครื่องเสมือน:

sudo virsh รีบูต freebsd10

โคลนเครื่องเสมือน:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file /var/lib/libvirt/images/freebsd10-clone.img

เปิด/ปิดการทำงานอัตโนมัติ:

sudo virsh เริ่มอัตโนมัติ freebsd10
sudo virsh เริ่มอัตโนมัติ -- ปิดการใช้งาน freebsd10

การรัน virsh ในโหมดไดอะล็อก (คำสั่งทั้งหมดในโหมดไดอะล็อก - ตามที่อธิบายไว้ข้างต้น):

ซูโด เวอร์ช

การแก้ไขคุณสมบัติของเครื่องเสมือนในรูปแบบ XML รวมถึงที่นี่คุณสามารถเปลี่ยนขีด จำกัด ของจำนวนหน่วยความจำ ฯลฯ :

sudo virsh แก้ไข freebsd10

สำคัญ!ความคิดเห็นจาก XML ที่แก้ไขถูกลบออกอย่างน่าเสียดาย

เมื่อเครื่องเสมือนหยุดทำงาน ดิสก์ยังสามารถปรับขนาดได้:

sudo qemu-img ปรับขนาด /var/ lib/ libvirt/ image/ freebsd10.img -2G
ข้อมูล sudo qemu-img /var/lib/libvirt/images/freebsd10.img

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

การสำรองและกู้คืนข้อมูลนั้นค่อนข้างง่าย ก็เพียงพอที่จะบันทึกเอาต์พุต dumpxml ไว้ที่ไหนสักแห่งรวมถึงดิสก์อิมเมจแล้วกู้คืน บน YouTube จัดการเพื่อค้นหาวิดีโอด้วยการสาธิตกระบวนการนี้ทุกอย่างก็ไม่ใช่เรื่องยากจริงๆ

การตั้งค่าเครือข่าย

คำถามที่น่าสนใจ - จะทราบที่อยู่ IP ใดที่เครื่องเสมือนได้รับหลังจากการบูทได้อย่างไร? KVM ทำสิ่งนี้ด้วยวิธีที่ชาญฉลาด ฉันลงเอยด้วยการเขียนสคริปต์นี้ใน Python:

#!/usr/bin/env python3

# สคริปต์ virt-ip.py
# (c) 2016 อเล็กซานเดอร์ อเล็กเซเยฟ
# http://site/

ระบบนำเข้า
นำเข้าอีกครั้ง
นำเข้าระบบปฏิบัติการ
กระบวนการย่อยการนำเข้า
จาก xml .etree นำเข้า ElementTree

def eprint(str) :
พิมพ์ (str, ไฟล์ = sys.stderr)

ถ้าเลน (sys.argv)< 2 :
eprint ("การใช้งาน: " + sys .argv [ 0 ] + " " )
eprint("ตัวอย่าง: " + sys .argv [ 0 ] + " freebsd10" )
sys.ออก(1)

ถ้า os .geteuid() != 0 :
eprint("ข้อผิดพลาด: คุณควรเป็น root")
eprint("คำแนะนำ: run `sudo " + sys .argv [ 0 ] + " ...`" ) ;
sys.ออก(1)

ถ้าประมวลผลย่อย .call ( "ซึ่ง arping 2>&1 >/dev/null", เชลล์ = จริง ) != 0 :
eprint("ข้อผิดพลาด: arping ไม่พบ" )
พิมพ์( "คำแนะนำ: เรียกใช้ `sudo apt-get install arping`")
sys.ออก(1)

โดเมน = sys.argv[1]

หากไม่ใช่ .match อีกครั้ง ("^*$" , โดเมน) :
พิมพ์( "ข้อผิดพลาด: อักขระที่ไม่ถูกต้องในชื่อโดเมน")
sys.ออก(1)

Domout = กระบวนการย่อย .check_output ("virsh dumpxml " +domain+" || true" ,
เปลือก = จริง)
domout = domout.decode("utf-8").strip()

ถ้า domout == "" :
# ข้อความแสดงข้อผิดพลาดพิมพ์โดย dumpxml แล้ว
sys.ออก(1)

Doc = ElementTree.fromstring (domout)

# 1. แสดงรายการอินเทอร์เฟซเครือข่ายทั้งหมด
# 2. เรียกใช้ `arping` ในทุกอินเทอร์เฟซแบบขนาน
#3.grep ตอบกลับ
คำสั่ง = "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
"grep "ไบต์จาก") || จริง"

สำหรับเด็กใน doc.iter() :
ถ้า child.tag == "mac" :
macaddr = child.attrib["ที่อยู่"]
macout = กระบวนการย่อย .check_output (cmd .format (macaddr) ,
เปลือก = จริง)
พิมพ์ (macout.decode ("utf-8"))

สคริปต์ทำงานได้กับทั้งเครือข่ายเริ่มต้นและเครือข่ายบริดจ์ การกำหนดค่าที่เราจะพิจารณาในภายหลัง อย่างไรก็ตาม ในทางปฏิบัติ จะสะดวกกว่ามากในการกำหนดค่า KVM เพื่อที่จะกำหนดที่อยู่ IP เดียวกันให้กับระบบเกสต์เสมอ เมื่อต้องการทำเช่นนี้ ให้แก้ไขการตั้งค่าเครือข่าย:

sudo virsh net-edit ค่าเริ่มต้น

... บางอย่างเช่นนี้:

>



>

หลังจากทำการเปลี่ยนแปลงเหล่านี้แล้ว


>

... และแทนที่ด้วยสิ่งที่ชอบ:




>

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

โปรแกรม virt-manager

คุณอาจสนใจโปรแกรม virt-manager:

sudo apt-get ติดตั้ง virt-manager
sudo usermod -a -G libvirtd ชื่อผู้ใช้

นี่คือลักษณะของหน้าต่างหลัก:

อย่างที่คุณเห็น virt-manager ไม่ได้เป็นเพียง GUI สำหรับเครื่องเสมือนที่ทำงานในเครื่องเท่านั้น ด้วยความช่วยเหลือนี้ คุณสามารถจัดการเครื่องเสมือนที่ทำงานบนโฮสต์อื่นได้ เช่นเดียวกับการดูกราฟิกที่สวยงามแบบเรียลไทม์ โดยส่วนตัวแล้วฉันพบว่ามันสะดวกเป็นพิเศษใน virt-manager ที่คุณไม่จำเป็นต้องค้นหาผ่านการกำหนดค่าเพื่อดูว่าพอร์ต VNC ใดที่ทำงานอยู่บนระบบเกสต์เฉพาะ คุณเพียงแค่พบเครื่องเสมือนในรายการ ดับเบิลคลิก และเข้าถึงจอภาพได้

ด้วยความช่วยเหลือจาก virt-manager ทำให้สะดวกมากในการทำสิ่งต่าง ๆ ที่ต้องใช้การแก้ไขไฟล์ XML ที่ใช้แรงงานเข้มข้น และในบางกรณี การดำเนินการ คำสั่งเพิ่มเติม- ตัวอย่างเช่น การเปลี่ยนชื่อเครื่องเสมือน การตั้งค่าความสัมพันธ์ของ CPU และสิ่งที่คล้ายกัน อนึ่ง, การใช้งานซีพียู affinity ช่วยลดผลกระทบของเพื่อนบ้านที่มีเสียงดังและผลกระทบของเครื่องเสมือนบนระบบโฮสต์ได้อย่างมาก ใช้มันเสมอถ้าเป็นไปได้

หากคุณตัดสินใจใช้ KVM แทน VirtualBox โปรดทราบว่าพวกเขาจะไม่สามารถแชร์การจำลองเสมือนสำหรับฮาร์ดแวร์ระหว่างกันได้ เพื่อให้ KVM ทำงานบนเดสก์ท็อปของคุณ คุณไม่เพียงต้องหยุดเครื่องเสมือนทั้งหมดใน VirtualBox และ Vagrant เท่านั้น แต่ยังต้องรีบูทระบบด้วย โดยส่วนตัวแล้วฉันพบว่า KVM สะดวกกว่า VirtualBox มาก อย่างน้อยก็เพราะมันไม่ต้องการให้คุณเรียกใช้คำสั่ง การตั้งค่า sudo /sbin/rcvboxdrvหลังจากการอัปเดตเคอร์เนลแต่ละครั้ง มันจะทำงานร่วมกับ Unity ได้อย่างเพียงพอ และโดยทั่วไปจะอนุญาตให้คุณซ่อนหน้าต่างทั้งหมดได้