เครื่องเสมือน kvm การจำลองเสมือน KVM คืออะไร การสร้างระบบแขก

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

ทำไม ? ระบบปฏิบัติการนี้อยู่ใกล้และเข้าใจได้สำหรับฉัน ดังนั้นจึงไม่มีการทรมาน ทรมาน หรือโยนทิ้งเมื่อเลือกการแจกจ่าย สิทธิพิเศษเหนือ 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

อื่น

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

ต้นฉบับ: ยินดีต้อนรับสู่ KVM virtualization - บทนำโดยละเอียด
ผู้เขียน : อิกอร์ ลูบุนซิช
วันที่เผยแพร่: 4 พฤษภาคม 2554
การแปล: A. Krivoshey
วันที่แปล: กรกฎาคม 2554

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

อภิธานศัพท์ KVM

ก่อนอื่น เรามาพูดถึงวิธีการทำงานของ KVM กันก่อน ไม่มีอะไรพิเศษ เพียงแค่แนะนำสั้นๆ เพื่อให้คุณทราบคำศัพท์พื้นฐาน
KVM ใช้เทคโนโลยีการจำลองเสมือนสำหรับฮาร์ดแวร์ที่รองรับ โปรเซสเซอร์ที่ทันสมัยจาก Intel และ AMD และรู้จักกันในชื่อ Intel-VT และ AMD-V การใช้โมดูลเคอร์เนลที่โหลด KVM ด้วยความช่วยเหลือของไดรเวอร์โหมดผู้ใช้ (ซึ่งเป็นไดรเวอร์ที่แก้ไขจาก QEMU) จะจำลองเลเยอร์ ฮาร์ดแวร์นอกเหนือจากที่สามารถสร้างและเปิดใช้งานเครื่องเสมือนได้ KVM สามารถทำงานได้โดยไม่ต้องมีการจำลองเสมือนด้วยฮาร์ดแวร์ (หากโปรเซสเซอร์ไม่รองรับ) แต่ในกรณีนี้จะทำงานในโหมดการจำลองล้วนๆ โดยใช้ QUEMU และประสิทธิภาพของเครื่องเสมือนจะลดลงอย่างมาก
หากต้องการควบคุม KVM คุณสามารถใช้ ยูทิลิตี้กราฟิกคล้ายกับผลิตภัณฑ์จาก VMware และ VirtualBox รวมถึงบรรทัดคำสั่ง
GUI ที่ได้รับความนิยมมากที่สุดคือ Virtual Machine Manager (VMM) ซึ่งสร้างโดย RedHat เป็นที่รู้จักในชื่อแพ็คเกจว่า virt-manager และมียูทิลิตี้หลายอย่าง รวมถึง virt-install, virt-clone, virt-image และ virt-viewer สำหรับการสร้าง โคลนนิ่ง ติดตั้ง และดูเครื่องเสมือน VMM ยังรองรับเครื่องเสมือน Xen อีกด้วย
อินเตอร์เฟสบรรทัดคำสั่ง KVM พื้นฐานจัดทำโดยยูทิลิตี้ virsh ในบางกรณี คุณสามารถใช้ยูทิลิตี้สนับสนุน เช่น virt-install เพื่อสร้างเครื่องเสมือนของคุณได้ Ubuntu มียูทิลิตี้พิเศษ ubuntu-vm-builder ซึ่งพัฒนาโดย Canonical ซึ่งคุณสามารถสร้าง Ubuntu builds ได้
หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ KVM สามารถดูข้อมูลเพิ่มเติมได้ตามที่อยู่ต่อไปนี้:

ข้อดีและข้อเสียของ KVM

คุณต้องการ KVM หรือไม่? ขึ้นอยู่กับสิ่งที่คุณต้องการ
หากคุณไม่เคยใช้ Virtual Machine มาก่อนหรือเริ่มต้นใช้งานมาสองสามครั้งเพื่อความสนุกสนาน การควบคุม KVM ให้เชี่ยวชาญอาจเป็นเรื่องยาก โปรแกรมนี้ควบคุมจากบรรทัดคำสั่งเป็นหลัก และไม่เป็นมิตรกับผู้ใช้เท่ากับ VMware หรือ VirtualBox เราสามารถพูดได้ว่าในแง่ของ กุย KVM ล้าหลังคู่แข่งเป็นเวลาหลายปีแม้ว่าในความเป็นจริงแล้วในแง่ของความสามารถก็เท่ากับก็ตาม อย่างน้อยไม่ด้อยกว่า ความสามารถของ KVM เป็นที่ต้องการมากที่สุดเมื่อใช้เพื่อวัตถุประสงค์เชิงพาณิชย์ในสภาพแวดล้อมทางธุรกิจ
นอกจากนี้ หากโปรเซสเซอร์ของคุณไม่รองรับการจำลองเสมือนสำหรับฮาร์ดแวร์ KVM จะทำงานในโหมดการจำลองซอฟต์แวร์ที่ช้ามากและไม่มีประสิทธิภาพ นอกจากนี้ยังเป็นที่ทราบกันว่า KVM ขัดแย้งกับ VirtualBox แต่จะทุ่มเทหมายเหตุแยกต่างหากสำหรับกรณีนี้
จากข้อมูลข้างต้น เราสามารถสรุปได้ว่า KVM เหมาะสำหรับผู้ที่มีส่วนร่วมในการจำลองเสมือนเพื่อจุดประสงค์ทางวิชาชีพมากกว่า ไม่น่าเป็นไปได้ว่ามันจะกลายเป็นของเล่นในบ้านที่คุณชื่นชอบ แต่ถ้าคุณตัดสินใจที่จะศึกษามันความรู้ที่ได้รับจากสิ่งนี้จะช่วยให้คุณคุ้นเคยกับเทคโนโลยีเสมือนจริง ต่างจาก VMware และ VirtualBox ซึ่งในตอนแรกสันนิษฐานว่าผู้ใช้จะทำงานกับโปรแกรมโดยใช้อินเทอร์เฟซแบบกราฟิก KVM มุ่งเน้นไปที่การใช้บรรทัดคำสั่งและการเขียนสคริปต์
โดยสรุป เราสามารถพูดได้ว่าข้อดีของ KVM อยู่ที่การใช้เทคโนโลยีเวอร์ช่วลไลเซชั่นล่าสุด การไม่มีข้อจำกัดด้านลิขสิทธิ์ในการใช้งาน และอินเทอร์เฟซบรรทัดคำสั่งที่มีประสิทธิภาพ หากโปรเซสเซอร์ของคุณไม่รองรับการจำลองเสมือนสำหรับฮาร์ดแวร์ คุณคงไม่อยากเขียนสคริปต์ และคุณชอบระบบที่จัดการง่ายกว่า เช่น VMware Server, ESXi หรือ VirtualBox งั้น KVM ไม่เหมาะกับคุณ

แพลตฟอร์มทดสอบ

KVM สามารถใช้กับอะไรก็ได้ การกระจายลินุกซ์- อย่างไรก็ตาม ผู้พัฒนาและผู้สนับสนุนหลักของ KVM คือ RedHat ตัวอย่างเช่น RHEL เปิดตัวครั้งแรกพร้อมกับ KVM ดังนั้นคุณสามารถค้นหาได้จากการแจกจ่ายบน RedHat เช่น CentOS, Scientific Linux หรือ Fedora
เนื่องจากฉันใช้ Ubuntu ที่บ้านเป็นหลัก ฉันจะทดสอบ KVM บนระบบนี้ซึ่งติดตั้งไว้ในระบบของฉัน แล็ปท็อปเครื่องใหม่ HP ซึ่งมาพร้อมกับโปรเซสเซอร์ i5 พร้อมรองรับการจำลองเสมือนสำหรับฮาร์ดแวร์
ในบทความนี้ ฉันจะบอกวิธีการติดตั้ง KVM บน Ubuntu Lucid (LTS) แบบ 64 บิต

กำลังเตรียมการติดตั้ง

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

$ egrep -c "(vmx|svm)" /proc/cpuinfo

หากผลลัพธ์เป็นตัวเลขที่ไม่ใช่ศูนย์ ทุกอย่างเรียบร้อยดี นอกจากนี้ คุณต้องตรวจสอบว่ามีการเปิดใช้งานเทคโนโลยีการจำลองเสมือนใน BIOS หรือไม่
โดยปกติแล้ว หลังจากเปิดใช้งานแล้ว คุณจะต้องรีบูตเครื่องเพื่อให้การเปลี่ยนแปลงมีผล หากต้องการตรวจสอบ ให้รันคำสั่ง kvm-ok:

การดาวน์โหลดและติดตั้ง KVM

เพื่อให้ KVM ทำงานได้ คุณต้องติดตั้งแพ็คเกจต่อไปนี้ (สำหรับการแจกแจงด้วย apt):

$ apt-get ติดตั้ง qemu-kvm libvirt-bin

$ apt-get ติดตั้ง bridge-utils virt-manager python-virtinst

ป.ล. แพ็คเกจอาจมีชื่อแตกต่างกันตามการแจกแจงที่ต่างกัน ตัวอย่างเช่น virt-install อาจเรียกว่า python-virt-install หรือ python-virtinst การพึ่งพาสำหรับ virt-clone, virt-image และ virt-viewer ควรได้รับการติดตั้งโดยอัตโนมัติ ตรงกันข้ามกับที่เขียนไว้ในคู่มือส่วนใหญ่ ไม่จำเป็นต้องติดตั้งยูทิลิตี้บริดจ์ จำเป็นเฉพาะในกรณีที่คุณต้องการสร้างสะพานเครือข่ายระหว่างการ์ดเครือข่ายเสมือนและฟิสิคัล คู่มือส่วนใหญ่ยังระบุด้วยว่าอินเทอร์เฟซเครือข่ายไร้สายส่วนใหญ่ใช้งานไม่ได้กับบริดจ์ นี่อาจเป็นจริงในบางกรณี แต่สะพานก็ใช้ได้ดีสำหรับฉัน อะแดปเตอร์ไร้สายหวังว่ามันจะเหมาะกับคุณเช่นกัน
ฉันขอแนะนำ VMM (virt-manager) เป็นอย่างยิ่ง ยิ่งไปกว่านั้น จะเป็นการดีกว่าถ้าติดตั้งยูทิลิตี้สนับสนุนทั้งหมด รวมถึง virt-viewer, virt-install, virt-image และ virt-clone
และสิ่งสุดท้ายอย่างหนึ่ง คุณอาจต้องการ ubuntu-vm-builder:

$ apt-get ติดตั้ง ubuntu-vm-builder

นอกจากนี้ อาจมีการติดตั้งการอ้างอิงจำนวนมาก ดังนั้นการดาวน์โหลดจึงอาจใช้เวลานานพอสมควร
ป.ล. บน RedHat ให้ใช้การติดตั้ง yum บน SUSE - การติดตั้ง zypper

ข้อขัดแย้งกับ VirtualBox

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

การใช้ KVM

ตอนนี้ส่วนที่น่าสนใจที่สุด เราจะเริ่มทำความรู้จักกับ KVM ด้วยอินเทอร์เฟซแบบกราฟิกซึ่งแตกต่างจากระบบอะนาล็อกเล็กน้อย เช่นคอนโซล VMware และโดยเฉพาะ VirtualBox

ตัวจัดการเครื่องเสมือน (VMM)

เมื่อคุณเปิดโปรแกรมครั้งแรก คุณจะเห็น 2 หมวดหมู่ ซึ่งทั้งสองประเภทไม่ได้เชื่อมต่อกัน ลิงก์เหล่านี้คือลิงก์ไปยังโมดูล KVM มาตรฐานที่ยังใช้งานไม่ได้ หากต้องการใช้งาน ให้คลิก คลิกขวาเมาส์และเลือก "เชื่อมต่อ"

หากต้องการใช้งาน ให้คลิกขวาและเลือก "เชื่อมต่อ" หากต้องการเพิ่มการเชื่อมต่อใหม่ ให้เลือกไฟล์ > เพิ่มการเชื่อมต่อจากเมนู นี่จะเป็นการเปิดหน้าต่างที่คุณสามารถตั้งค่าประเภทไฮเปอร์ไวเซอร์และประเภทการเชื่อมต่อได้ VMM สามารถใช้ทั้งภายในและ การเชื่อมต่อระยะไกลรวมถึง QUEMU/KVM และ Xen นอกจากนี้ยังรองรับวิธีการรับรองความถูกต้องทั้งหมดอีกด้วย

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

เคอร์เนลกับโหมดผู้ใช้

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

เราศึกษา VMM ต่อไป

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

ในทำนองเดียวกัน คุณสามารถเปลี่ยนพารามิเตอร์ของระบบย่อยของดิสก์ได้:

การเปลี่ยนค่าที่ตั้งล่วงหน้า

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

จากนั้นคุณจะสามารถดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับเครื่องเสมือนได้ ตัวอย่างเช่น ด้านล่างนี้คือผลลัพธ์การใช้งาน CPU, ดิสก์ และเครือข่ายสำหรับผู้เยี่ยมชม Ubuntu

ไอคอนถาดระบบมีลักษณะดังนี้:

ตอนนี้เราพร้อมที่จะสร้างเครื่องเสมือนใหม่แล้ว

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

คุณสามารถสร้างเครื่องเสมือนได้จากบรรทัดคำสั่ง แต่ก่อนอื่นเราจะใช้ VMM ขั้นตอนแรกควรเป็นแบบสัญชาตญาณ ป้อนชื่อและระบุตำแหน่งของดิสก์การติดตั้ง มันอาจจะเป็นเช่นนั้น อุปกรณ์ท้องถิ่นในรูปแบบของดิสก์ซีดี/ดีวีดีหรืออิมเมจ ISO รวมถึงเซิร์ฟเวอร์ HTTP หรือ FTP, NFS หรือ PXE

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

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

ต่อไปเราจะให้ความสนใจมากขึ้น ระบบย่อยของดิสก์- อย่างไรก็ตาม โปรดทราบว่าเมื่อทำงานใน Usermode คุณจะไม่ได้รับอนุญาตให้เขียนไปยัง /var โดยที่รูปภาพจะถูกจัดเก็บตามค่าเริ่มต้น ดิสก์เสมือน- ดังนั้นคุณจะต้องกำหนดตำแหน่งอื่นสำหรับรูปภาพ ปัญหานี้จะมีการกล่าวถึงโดยละเอียดเพิ่มเติมในบทความแยกต่างหาก
ขั้นตอนที่ 5 คือผลลัพธ์ของข้อมูลสรุปพร้อมความสามารถในการกำหนดค่าตัวเลือกขั้นสูงบางอย่าง ที่นี่คุณสามารถเปลี่ยนประเภทเครือข่าย ตั้งค่าที่อยู่ MAC แบบคงที่ เลือกประเภทการจำลองเสมือน และสถาปัตยกรรมเป้าหมาย หากคุณใช้งานในโหมดผู้ใช้ ตัวเลือกการกำหนดค่าเครือข่ายของคุณจะถูกจำกัด เช่น คุณจะไม่สามารถสร้างบริดจ์ระหว่างอินเทอร์เฟซเครือข่ายได้ สิ่งสุดท้าย: หากโปรเซสเซอร์ของคุณไม่รองรับการจำลองเสมือนสำหรับฮาร์ดแวร์ ฟิลด์ Virt Type จะเป็น QUEMU และจะไม่สามารถเปลี่ยนเป็น KVM ได้ ด้านล่างนี้เราจะดูข้อเสียของการทำงานในโหมดจำลอง ตอนนี้คุณสามารถดูได้ว่าการตั้งค่าทั่วไปสำหรับเครื่องเสมือน Ubuntu มีลักษณะอย่างไร:

เครื่องของเราพร้อมใช้งาน

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

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

ด้านล่างนี้เป็นภาพหน้าจอสองสามภาพที่แสดงตัวเลือกสำหรับการโคลนและการย้ายเครื่องเสมือน ในอนาคตเราจะพิจารณาปัญหานี้โดยละเอียด

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

ตอนนี้ส่วนที่สนุกมา ด้านล่างนี้เป็นภาพหน้าจอที่สวยงามบางส่วน...
เริ่มจากเมนูการบูตของ Ubuntu 10.10 Maverick รุ่น 32 บิต:

เดสก์ท็อป Puppy Linux นั้นยอดเยี่ยมเช่นเคย:

ตอนนี้ Ubuntu ทำงานภายใต้ NAT สังเกตการใช้งาน CPU ต่ำ เราจะพูดถึงเรื่องนี้ในภายหลังเมื่อเราพูดถึงโหมดการจำลอง

หน้าต่างคอนโซลสามารถปรับขนาดให้ตรงกับความละเอียดเดสก์ท็อปของแขกได้ ภาพหน้าจอต่อไปนี้แสดง Puppy และ Ubuntu เคียงข้างกัน:

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

หากจำเป็น คุณสามารถลบเครื่องเสมือนพร้อมกับไฟล์ทั้งหมดได้:

บรรทัดคำสั่ง

ทีนี้เรามาดูบรรทัดคำสั่งที่ไม่มีใครรักกันดีกว่า ตัวอย่างเช่น เรามาแสดงรายการเครื่องเสมือนที่มีอยู่ทั้งหมดโดยใช้ virsh

$virsh "รายการ -- ทั้งหมด"

ด้านล่างนี้เป็นลำดับคำสั่งในการสร้างและรันเครื่องเสมือนโดยใช้ virt-install

คำสั่งที่สมบูรณ์มีลักษณะดังนี้:

$ virt-install --เชื่อมต่อ qemu://system -n ลูกสุนัข -r 512 -fpuppy.img -c lupu-520.iso --vnc --noautoconsole --os-type linux --accelerate --network=network :ค่าเริ่มต้น

--เชื่อมต่อ qemu:///systemระบุประเภทไฮเปอร์ไวเซอร์ ตัวเลือกระบบจะใช้เมื่อรันเครื่องบนเคอร์เนลเปล่าในฐานะผู้ใช้ขั้นสูง เมื่อทำงานในฐานะผู้ใช้ทั่วไป ให้ใช้ตัวเลือกเซสชัน
- ลูกสุนัขเป็นชื่อเฉพาะของเครื่องเสมือน สามารถเปลี่ยนได้โดยใช้ virsh
-ร 512ตั้งค่าขนาด RAM
-ฉระบุไฟล์อิมเมจของดิสก์ ในกรณีของฉันคือ Puppy.img ซึ่งฉันสร้างขึ้นโดยใช้คำสั่ง dd
-คระบุซีดีรอมซึ่งอาจเป็นเช่นนั้น อุปกรณ์ทางกายภาพและอิมเมจ ISO
--vncสร้างคอนโซลผู้เยี่ยมชมและส่งออกเป็นเซิร์ฟเวอร์ VNC ตัวเลือก --ไม่มีการเชื่อมต่ออัตโนมัติป้องกันการเปิดคอนโซลอัตโนมัติเมื่อเครื่องเสมือนเริ่มทำงาน
--os-ประเภทระบุประเภทของระบบปฏิบัติการเกสต์
--เร่งอนุญาตให้ KVM ใช้คุณสมบัติการปรับให้เหมาะสมที่ปรับปรุงประสิทธิภาพของแขก
--เครือข่ายกำหนดประเภทเครือข่าย ในกรณีของเรา จะใช้การเชื่อมต่อเริ่มต้น

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

โหมดการจำลองล้วนๆ

ฉันบอกแล้วว่ามันไม่ได้ผลอย่างมาก ตอนนี้เรามายืนยันสิ่งนี้ในทางปฏิบัติ ตัวอย่างเช่น ในภาพหน้าจอด้านล่าง คุณจะเห็นว่าเมื่อระบบทำงาน จะใช้ทรัพยากรตัวประมวลผลที่มีอยู่ทั้งหมด ซึ่ง ในกรณีนี้ด้วยหนึ่งคอร์จะคิดเป็น 25% ของทรัพยากรของโปรเซสเซอร์ทางกายภาพ ซึ่งหมายความว่าเครื่องเสมือนสี่เครื่องจะโหลดโฮสต์ Quad-Core โดยสมบูรณ์

นอกจากนี้ประสิทธิภาพของระบบแขกยังต่ำกว่าคำวิจารณ์ทั้งหมด หากเปิดใช้งานการจำลองเสมือนด้วยฮาร์ดแวร์ การโหลด Ubuntu แขกใช้เวลาประมาณ 1 นาที จากนั้นหลังจากปิดใช้งานแล้วจะใช้เวลาประมาณ 20 นาที ควรสังเกตว่าหากไม่มีการใช้การจำลองเสมือนสำหรับฮาร์ดแวร์ ประสิทธิภาพของ QUEMU/KVM จะต่ำกว่าคู่แข่งมาก

บันทึกนี้จะเป็นประโยชน์สำหรับทุกคนที่สนใจใช้ระบบเสมือนจริงในการทำงาน โซลูชันของฉันอาจมีคุณสมบัติเหมาะสมสำหรับการใช้งานในอุตสาหกรรม และจะเป็นประโยชน์สำหรับผู้ที่ต้องการลดต้นทุนด้านฮาร์ดแวร์ หากพวกเขาต้องการมีโครงสร้างพื้นฐานเครือข่ายที่กว้างขวาง ตัวอย่างเช่น โซลูชันบางอย่างจาก IBM จะใช้ตัวเลือกที่คล้ายกัน แต่โซลูชันเหล่านี้ไม่ได้เป็นมิตรกับงบประมาณและเป็นที่ต้องการเฉพาะในกรณีพิเศษเท่านั้น
ดังนั้น วันหนึ่งฉันจำเป็นต้องสร้างโครงสร้างพื้นฐานเครือข่ายที่ครอบคลุมซึ่งประกอบด้วยแพลตฟอร์มซอฟต์แวร์ต่างๆ ที่บ้าน เส้นทางเริ่มต้นจาก VMWare Workstation และสิ้นสุดด้วย KVM... ทำไม KVM และเกิดขึ้นได้อย่างไร อ่านด้านล่าง

1. ประวัติเล็กน้อยหรือจุดเริ่มต้นทั้งหมด
ในขณะที่ทำงานที่ธนาคาร ฉันได้พบกับระบบเสมือนจริงโดยตรง เป็นระบบปฏิบัติการ AIX ของ IBM ที่ทำงานบนเมนเฟรม ตั้งแต่แรกเริ่ม ฉันรู้สึกประหลาดใจกับพลังและความยืดหยุ่นของแนวทางนี้ และเมื่อฉันต้องการสร้างโครงสร้างพื้นฐานซอฟต์แวร์ขนาดใหญ่ที่บ้านเพื่อการทดสอบ ฉันก็ยึดหลักการของการจำลองเสมือนทันที ทำให้สามารถหลีกเลี่ยงค่าใช้จ่ายจำนวนมากสำหรับฮาร์ดแวร์และเพื่อให้พอดีกับทุกสิ่งที่มีขนาดกะทัดรัดในแง่ของพื้นที่
ผู้อ่านควรทราบว่าจริงๆ แล้วมีเครื่องมือการจำลองเสมือนมากมาย แต่ละคนมีรายละเอียดปลีกย่อยและความแตกต่างของตัวเอง เป้าหมายของฉันคือการพูดคุยเกี่ยวกับทางเลือกหนึ่งที่ฉันทำงานด้วยเป็นการส่วนตัว โดยอธิบายข้อบกพร่องและคุณลักษณะของตัวเลือกอื่นๆ หากเป็นไปได้
2. ตัวเลือกของฉันเรียกว่า KVM (หรือ Virtual Machine ที่ใช้เคอร์เนล)
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับตัวเลือกนี้ได้
แต่จะดีกว่าถ้านำเสนอทุกอย่างตามลำดับ ฉันจะเริ่มต้นด้วยเงื่อนไขการเลือก และตัวเลือกใดที่ฉันทราบไม่ตรงตามเงื่อนไขเหล่านี้:
— ระบบหลักจะต้องมีราคาไม่แพงและทรงพลัง

ในแง่ของฮาร์ดแวร์ ฉันเลือกตัวเลือกนี้ เอเอ็มดี ฟีนอม X4 9550 / Asus M3A78 / 2x2Gb DDR-II / 1x160Gb IDE + 2x1Tb SATA-II วิดีโอไม่สำคัญเลยที่นี่ ยกเว้นในกรณีของวิดีโอในตัว คุณจะต้องคำนึงว่ามันใช้ส่วนหนึ่งของ RAM ดังนั้นจะมีน้อยลงสำหรับเครื่องเสมือน ฉันจะบอกทันทีว่าการเลือกมาเธอร์บอร์ดที่มีคอนโทรลเลอร์ RAID ในตัวนั้นไม่ถูกต้องทั้งหมด ปรากฎว่า RAID นี้ใช้งานได้เฉพาะในโหมดซอฟต์แวร์เท่านั้น เช่น จำเป็นต้องใช้ไดรเวอร์สำหรับระบบ Windows แต่ใน Linux เอฟเฟกต์เดียวกันนี้สามารถทำได้ง่ายกว่ามากโดยใช้เครื่องมือมาตรฐาน
การใช้แพลตฟอร์มซอฟต์แวร์สำหรับระบบหลักเห็นได้ชัดว่าสนับสนุน GNU/Linux เนื่องจาก ทำให้สามารถรับสภาพแวดล้อมการจำลองเสมือนได้โดยไม่ต้อง ค่าใช้จ่ายเพิ่มเติมสำหรับการออกใบอนุญาตรวมถึงภาระที่เบากว่า (ฉันจะไม่เข้าใจว่าทำไมใน วินโดวส์เซิร์ฟเวอร์หากไม่มีกราฟิก คุณจะไม่สามารถแสดงหรือทำอะไรได้เลย…. โหลดที่ไม่มีจุดหมาย IMHO) ในตอนแรกมีแผนที่จะใช้ตัวเลือกนี้ เซิร์ฟเวอร์อูบุนตู Hardy LTS แต่เกือบจะในทันทีที่มีการโยกย้ายไปยัง Debian Lenny (เพิ่งเปิดตัวในเวลานั้น) ฉันจะไม่ดูถูกข้อดีของ Ubuntu แต่อย่างใด แต่โดยส่วนตัวแล้ว Debian นั้นมีเสถียรภาพและรวดเร็วกว่า

— ระบบเวอร์ช่วลไลเซชั่นจะต้องมีความเสถียร เข้าถึงได้แบบสาธารณะ และไม่ต้องการทรัพยากรมากนัก

ตัวเลือกนั้นน่าเวียนหัว แต่หลังจากศึกษาบทวิจารณ์บนอินเทอร์เน็ตและพยายามใช้แล้วฉันก็มีความคิดเห็นส่วนตัว
ผลิตภัณฑ์ VMWare ไม่เหมาะสม ชำระค่าเวิร์คสเตชั่นแล้ว ไม่สามารถติดตั้ง ESXi บนระบบของฉันได้เนื่องจากชิปเซ็ตที่ไม่รองรับ (กลายเป็นว่าทันสมัยกว่า) น่าจะเป็นทางเลือกที่ดี เซิร์ฟเวอร์ VMwareแต่เมื่อพิจารณาจากรีวิวแล้ว มันค่อนข้างหนักและขัดข้องเป็นระยะ ฉันไม่ได้ลองด้วยตัวเองหลังจากเกิดข้อผิดพลาดกับ ESXi ไม่เหมาะกับเหตุผลอื่น - บริษัทยังคงจำหน่ายผลิตภัณฑ์ของตนและมีเพียงบางส่วนเท่านั้นที่สามารถหาซื้อได้ฟรี
VirtualBox กลายเป็นตัวเลือกที่ดีมาก มีสองเวอร์ชัน - OSE และฟรีแวร์ แหล่งที่มาของเวอร์ชันฟรีแวร์ไม่ได้เปิดเผยต่อสาธารณะ แต่ได้รับการชดเชยด้วยฟังก์ชันการทำงาน จากความแตกต่างที่ฉันทราบ นี่คือการไม่มีในเวอร์ชัน OSE รองรับยูเอสบี, ข้อ จำกัด เมื่อทำงานกับเครือข่าย, ไม่รองรับการเร่งความเร็วกราฟิก (โดยวิธีนี้จะช่วยเพิ่มความเร็วของเครื่องเสมือนได้ดีมาก) VirtualBox เหมาะอย่างยิ่งสำหรับการใช้งานที่ง่ายที่สุด เนื่องจาก... ช่วยให้คุณได้รับเครื่องเสมือนที่ทำงานได้อย่างรวดเร็วโดยไม่มีการเคลื่อนไหวที่ไม่จำเป็นและศึกษาคู่มืออย่างละเอียด คุณสมบัติที่ดีคือการรองรับการทำงานจากคอนโซลซึ่งช่วยให้คุณหลีกเลี่ยงการใช้ส่วนเสริมแบบกราฟิกและด้วยเหตุนี้จึงลบภาระเพิ่มเติมบนเครื่องโฮสต์ สำหรับผู้เริ่มต้น “โฮมเวอร์ช่วลไลเซอร์” ฉันอยากจะแนะนำตัวเลือกนี้ โดยส่วนตัวแล้ว ฉันยังคงใช้มันบนแล็ปท็อปส่วนตัวของฉันเพื่อตั้งค่าสภาพแวดล้อมการทดสอบอย่างรวดเร็ว เช่นเดียวกับการทำงานใน Windows (Ubuntu ได้รับการยอมรับว่าเป็นระบบหลักมานานแล้ว) ตามความรู้สึกส่วนตัว VirtualBox ทำงานได้เร็วกว่า VMWare Workstation มาก และใช้พื้นที่น้อยลงทั้งบนดิสก์และในหน่วยความจำ แต่ละเครื่องมีการจัดสรรหน้าต่างแยกต่างหากและหากมีการติดตั้งไดรเวอร์ในระบบเกสต์ (มีให้ใช้งานทันที) ก็สามารถรวมไดรเวอร์เหล่านั้นเข้ากับโฮสต์เดสก์ท็อปได้ซึ่งสะดวกมากและช่วยให้คุณกระจายงานไปยังที่ต่างๆ เดสก์ท็อปเสมือน
QEMU เป็นสิ่งที่ทรงพลังมาก แต่เมื่อฉันจำได้ ฉันให้ความสนใจกับการจำลองเสมือนที่ใช้เคอร์เนลและข้อมูลเกี่ยวกับ Xen และ KVM แล้ว ดังนั้นฉันจึงไม่คุ้นเคยกับ QEMU เพียงอย่างเดียวมากนัก
Xen เป็นระบบในอุดมคติสำหรับการจำลองเสมือน แต่มีข้อเสียเปรียบที่สำคัญมาก - ต้องเตรียมระบบแขกล่วงหน้า
KVM ซึ่งใช้ QEMU นั้นเกือบจะเร็วเท่ากับ Xen แต่มีฟังก์ชันการทำงานที่ยืดหยุ่นมากกว่าและพลังทั้งหมดของการตั้งค่า QEMU (แม้ว่าสิ่งที่ฉันต้องการส่วนใหญ่อยู่ใน VirtualBOX) ทั้งสองตัวเลือก Xen และ KVM ได้รับการปรับใช้ในการแจกแจงสมัยใหม่ทั้งหมด และไม่ต้องใช้ความพยายามอย่างจริงจังในการใช้งาน แต่มีความแตกต่างพื้นฐานระหว่างพวกเขาซึ่งจะกล่าวถึงต่อไป

— จำเป็นต้องสามารถทำซ้ำแพลตฟอร์มซอฟต์แวร์ต่างๆ บนเครื่องเสมือนได้

แม้จะมีผลิตภัณฑ์ VMWare และ VirtualBOX ในเรื่องนี้ แต่ฉันปฏิเสธที่จะใช้ก่อนหน้านี้ ดังนั้นฉันจะไม่พิจารณาพวกเขา... แต่เกี่ยวกับ Xen และ KVM ฉันจะอธิบายรายละเอียดเพิ่มเติมเล็กน้อยเพราะ ฉันค้นหาข้อมูลด้วยตัวเองเป็นเวลานานมาก
Xen ไม่อนุญาตให้คุณรันระบบอื่นนอกเหนือจากระบบโฮสต์!!! หรือเป็นระบบที่ไม่ได้เตรียมไว้ล่วงหน้าสำหรับการทำงานในสภาพแวดล้อมเสมือน และน่าเสียดาย (หรืออาจโชคดี) ไม่สามารถประมวลผลการแจกแจงของ Windows ด้วยวิธีนี้ได้ ซึ่งไม่เหมาะกับฉันเพราะท้ายที่สุดตัวเลือกก็ตกอยู่ที่ตัวเลือกในการใช้ KVM ซึ่งไม่จำเป็นต้องเตรียมระบบแขกล่วงหน้า

เหตุผลในการเลือก KVM สั้น ๆ :

1. การใช้งานพร้อมใช้งานทันทีในการกระจายขนาดใหญ่
2. ใช้งานบนพื้นฐานของเคอร์เนล Linux จึงมีความเร็วสูง
3. ใช้โดยยักษ์ใหญ่เช่น RedHat และ Ubuntu ซึ่งบ่งบอกถึงความเสถียรและความยืดหยุ่นสูง
4. ไม่จำเป็นต้องมีการจัดการเพิ่มเติมกับระบบเกสต์สำหรับการติดตั้งในเครื่องเสมือน

3. ฉันทำมันบน Debian ได้อย่างไร
ถัดไปจะเป็นคำอธิบายทางเทคนิคเพิ่มเติม โดยอธิบายทีละขั้นตอนว่าฉันสร้างเซิร์ฟเวอร์ของฉันได้อย่างไร ซึ่งสามารถจัดการเซิร์ฟเวอร์เสมือนได้หลายสิบเซิร์ฟเวอร์ได้อย่างง่ายดาย
แม้ว่าที่จริงแล้วการกระจายที่ฉันชื่นชอบคือ Ubuntu แต่ท้ายที่สุดแล้ว ระบบพื้นฐานเดเบียนถูกเลือก ภายในกรอบของบทความฉันจะไม่อธิบายรายละเอียดปลีกย่อยอะไรและอย่างไร แต่บนเดสก์ท็อปฉันยังคงชอบใช้ Ubuntu คำแนะนำส่วนใหญ่สำหรับ Ubuntu และ Debian นั้นเกี่ยวข้องกับทั้งสองตัวเลือก ดังนั้นเมื่อตั้งค่าฉันใช้ทั้งสองอย่าง
เรามาเริ่มตั้งค่าเซิร์ฟเวอร์กันดีกว่า
มาดูการแจกแจง Debian กัน เพื่อไม่ให้ดาวน์โหลดมากเกินไปในภายหลังและรับระบบใหม่ทันที ฉันจึงใช้ตัวเลือก netinstall ซึ่งฉันติดตั้งเฉพาะตัวเลือก "ระบบมาตรฐาน" เท่านั้น เราไม่ต้องการอะไรอีกแล้ว อีกอย่าง ฉันใช้รุ่น 64 บิตเพื่อรับการสนับสนุน มากกว่า RAM (>3GB) โดยไม่มีวิธีแก้ปัญหาหรือลูกเล่น (เช่น เคอร์เนลเซิร์ฟเวอร์ 32 บิตของการเผยแพร่ Ubuntu รองรับมากกว่า 3GB แต่เฉพาะในกรณีที่ความสามารถนี้มีอยู่ในชิปเซ็ต)
ผมใช้อันเดอร์. พาร์ติชันระบบ(“/”, “/home”, swap) ฮาร์ดไดรฟ์ IDE เพื่อไม่ให้เกิดปัญหากับระบบเมื่อติดตั้งบนอาร์เรย์ RAID (และมีบางส่วน) ระหว่างการติดตั้ง ฉันจะสร้าง RAID-1 โดยใช้ฮาร์ดไดรฟ์สองตัวทันที ไดรฟ์ SATAเพื่อให้เกิดความปลอดภัยของข้อมูลมากขึ้น (ข้อมูลพื้นฐานจะถูกเก็บไว้ในนั้น) ในอนาคต หากต้องการทำงานกับอาร์เรย์ RAID ของซอฟต์แวร์ คุณควรใช้ยูทิลิตี้ mdadm
ฉันกำลังรีทัชระบบที่ติดตั้งใหม่เล็กน้อย ก่อนอื่นฉันติดตั้ง ssh เพื่อให้ฉันสามารถถอดยูนิตระบบออกไปได้ทันทีและถอดจอภาพที่ไม่ต้องการอีกต่อไปออกจากมัน: sudo apt-get install ssh หลายคนแนะนำให้เปลี่ยนพอร์ตจากมาตรฐาน 22 เป็นพอร์ตอื่น แต่ควรทำก็ต่อเมื่อคุณมั่นใจในการกระทำของคุณและเซิร์ฟเวอร์ของคุณเชื่อมต่อกับอินเทอร์เน็ตโดยตรง อย่างไรก็ตามควรกล่าวถึงว่าหากใช้พอร์ตที่ไม่ได้มาตรฐานจะเกิดปัญหากับการจัดการ KVM virtualization จากระยะไกล ดังนั้นฉันจึงออกจากพอร์ตมาตรฐาน แต่ส่งต่อผ่านเราเตอร์ฮาร์ดแวร์ไปยังพอร์ตที่ไม่ได้มาตรฐานซึ่งสามารถเข้าถึงได้จากภายนอก

จากนั้นเราเปิดใช้งานการซิงโครไนซ์เวลาผ่านอินเทอร์เน็ต (ขอแนะนำอย่างยิ่งซึ่งจะมีประโยชน์)
sudo apt-get ติดตั้ง ntp ntpdate
วิธีตรวจสอบอุณหภูมิของชิปเซ็ต โปรเซสเซอร์ และฮาร์ดไดรฟ์:
sudo apt-get ติดตั้ง lm-เซ็นเซอร์ hddtemp
ยูทิลิตี้ hddtemp ทำงานได้ทันทีเพื่อกำหนดค่า lm-sensor ที่เราเรียกใช้หลังการติดตั้ง: sudo sensors-detect และตอบคำถามทุกข้อในเชิงยืนยัน
มันใช้งานง่ายมาก:
— ค้นหาอุณหภูมิของโปรเซสเซอร์ ชิปเซ็ต และคุณสมบัติอื่น ๆ ของเซ็นเซอร์ sudo ที่เราได้รับดังนี้:

it8712-isa-0290
อะแดปเตอร์: อะแดปเตอร์ ISA
VCore 1: +1.33 V (ต่ำสุด = +3.54 V, สูงสุด = +3.30 V) สัญญาณเตือน
VCore 2: +3.76 V (ต่ำสุด = +1.39 V, สูงสุด = +1.01 V) สัญญาณเตือน
+3.3V: +3.28 V (ต่ำสุด = +4.00 V, สูงสุด = +0.91 V) สัญญาณเตือน
+5V: +6.69 V (ต่ำสุด = +3.04 V, สูงสุด = +6.10 V) สัญญาณเตือน
+12V: +12.67 V (ต่ำสุด = +15.23 V, สูงสุด = +5.57 V) สัญญาณเตือน
-12V: -15.33 V (ต่ำสุด = -0.85 V, สูงสุด = -12.39 V) สัญญาณเตือน
-5V: +2.85 V (ต่ำสุด = +3.06 V, สูงสุด = +3.47 V) สัญญาณเตือน
แรงดันไฟฟ้าปกติ: +5.99 V (ต่ำสุด = +0.11 V, สูงสุด = +6.37 V)
Vแบต: +3.31 V
พัดลม 1: 2922 RPM (ต่ำสุด = 3260 RPM, div = 2)
fan2: 0 RPM (ต่ำสุด = 5400 RPM, div = 2) สัญญาณเตือน
fan3: 0 RPM (ต่ำสุด = 2732 RPM, div = 2) สัญญาณเตือน
อุณหภูมิ M/B: +44.0°C (ต่ำ = -73.0°C, สูง = -49.0°C) เซ็นเซอร์ = ทรานซิสเตอร์
อุณหภูมิ CPU: +32.0°C (ต่ำ = -65.0°C, สูง = -9.0°C) เซ็นเซอร์ = ทรานซิสเตอร์
อุณหภูมิ 3: +128.0°C (ต่ำ = +23.0°C สูง = -66.0°C) เซ็นเซอร์ = ปิดใช้งาน
cpu0_vid: +0.000 โวลต์

— ค้นหาอุณหภูมิ 1 ฮาร์ดไดรฟ์ SATA - sudo hddtemp /dev/sda เราได้รับสิ่งที่ชอบ:

/dev/sda: WDC WD1001FALS-00J7B0: 33°C

สำหรับ ทำงานต่อไปฉันแนะนำให้ซื้อเซิร์ฟเวอร์ DHCP ของบริษัทอื่นและตั้งค่าอินเทอร์เฟซบริดจ์บนเซิร์ฟเวอร์การจำลองเสมือนของเรา
มาติดตั้งยูทิลิตี้ที่จำเป็น: sudo apt-get install bridge-utils
ฉันใช้เราเตอร์เป็นเซิร์ฟเวอร์ DHCP และสร้างอินเทอร์เฟซบริดจ์ตามคำแนะนำ คำแนะนำเดียวกันนี้จะบอกวิธีสร้างเครื่องเสมือน KVM ตามค่าเริ่มต้นโดยใช้วิธีการเชื่อมต่อนี้ เพื่อเร่งการรีบูต (ไม่ใช่สถานการณ์วิกฤติเลยหากเซิร์ฟเวอร์เปิดตลอด 24 ชั่วโมงทุกวัน) ฉันแนะนำให้คุณระบุที่อยู่คงที่สำหรับอินเทอร์เฟซล่วงหน้า แม้ว่า DHCP จะพร้อมใช้งานก็ตาม

และส่วนที่ดีที่สุดคือการติดตั้งโมดูล KVM และยูทิลิตี้ที่มีประโยชน์ มาเพิ่มผู้ใช้ปัจจุบันในกลุ่มที่เหมาะสมทันทีเพื่อให้พร้อมใช้งาน KVM คำอธิบายวิธีใช้ยูทิลิตี้สามารถพบได้ในคู่มือที่กล่าวถึงแล้ว sudo aptitude ติดตั้ง kvm libvirt-bin virtinst virt-top python-virtinst
sudo adduser softovick libvirt จริงๆ แล้วคุณสามารถใช้งานได้ทันที ฉันไม่เห็นประเด็นใดในการอธิบายคำสั่งทั้งหมด มีหน้าคู่มือสำหรับสิ่งนั้น แต่ฉันจะแสดงให้คุณเห็นว่าฉันสร้างเครื่องเสมือนได้อย่างไร:
สำหรับ Linux virt-install -n linux -r 512 -f linux.img -s 15 -c image.iso --accelerate --vnc --vncport=5900 --noautoconsole --os-type=linux --os-variant =ทั่วไป26
สำหรับ Windows virt-install -n windows -r 512 -f windows.img -s 15 -c image.iso --accelerate --vnc --vncport=5901 --noautoconsole --os-type=windows --os-variant =win2k3 --noacpi หลังจากนี้ ความคืบหน้าเพิ่มเติมของการติดตั้งและหน้าจอของเครื่องเกสต์สามารถควบคุมได้โดยการเชื่อมต่อโดยใช้ไคลเอนต์ VNC กับเซิร์ฟเวอร์บนพอร์ต 5900 และ 5901 (ฉันแนะนำให้กำหนดพอร์ต VNC สำหรับแต่ละเครื่องล่วงหน้า เพื่อให้สะดวกในการเชื่อมต่อ) มีตัวเลือกที่มีประโยชน์อื่น ๆ อีกมากมาย ฉันไม่ได้ใช้เพียงเพราะฉันไม่พบความต้องการเหล่านั้นเท่านั้น

และอีกหนึ่งสัมผัส แต่ไม่ใช่ครั้งสุดท้าย ฉันยังไม่ทราบวิธีเชื่อมต่อกับระบบเกสต์ความสามารถในการเขียนบางสิ่งโดยตรงไปยังฟิสิคัลพาร์ติชันหรือโฟลเดอร์ในการจู่โจมแม้ว่าฉันจะลองก็ตาม ดังนั้น ในกรณีของ Linux ฉันจะเชื่อมต่อกับข้อมูลบนเซิร์ฟเวอร์โดยใช้ nfs และในกรณีของ Windows โดยใช้ Samba การตั้งค่า Samba นั้นค่อนข้างจะเล็กน้อย ติดตั้ง sudo aptitude ติดตั้ง samba และแก้ไขไฟล์การกำหนดค่า /etc/samba/smb.conf เพื่อให้เหมาะกับงานของคุณ แต่การติดตั้งและกำหนดค่า nfs นั้นไม่ใช่เรื่องเล็กน้อยเลย ฉันใช้ตัวเลือกการติดตั้งนี้ซึ่งทำให้ฉันสามารถเชื่อมต่อได้ โฟลเดอร์ที่จำเป็นจากที่อยู่ IP ของเครือข่ายท้องถิ่น (ประเภท 192.168.10.*): sudo aptitude install nfs-kernel-server portmap
perl -pi -e "s/^OPTIONS/#OPTIONS/" /etc/default/portmap.perl
echo "พอร์ตแมป: 192.168.10" >> /etc/hosts.allow
/etc/init.d/portmap รีสตาร์ท
echo "/media/raid 192.168.10.0/255.255.255.0(rw,no_root_squash,subtree_check)" >> /etc/exports
/etc/init.d/nfs-kernel-server รีโหลด
หลังจากขั้นตอนข้างต้น การดำเนินการนี้บนระบบเกสต์ก็เพียงพอแล้ว:
เซิร์ฟเวอร์เมานต์ sudo:/media/raid local_folder
หากจำเป็น คุณสามารถเปิดใช้งานได้ ติดตั้งอัตโนมัติเมื่อโหลดให้แก้ไขไฟล์คอนฟิกูเรชัน /etc/fstab โดยเพิ่มบรรทัดดังนี้:
virtual:/media/raid /media/raid nfs เป็นค่าเริ่มต้น 0 2
โดยทั่วไปแล้ว การตั้งค่าเซิร์ฟเวอร์การจำลองเสมือนของเราเสร็จสมบูรณ์แล้ว คุณสามารถจัดการได้ทั้งในคอนโซลและใช้เครื่องมือกราฟิก virsh หรือ virtual manager

ป.ล. :
เคล็ดลับที่เป็นประโยชน์:
1. หากคุณระบุพอร์ต VNC เฉพาะสำหรับเครื่องเกสต์ คุณจะไม่สามารถเปิดคอนโซลกราฟิกได้โดยอัตโนมัติผ่าน Virtual Manager
2. Virtual Manager จะไม่สามารถเชื่อมต่อได้หากคุณได้แทนที่ พอร์ต ssh- แม่นยำยิ่งขึ้นสิ่งนี้จะต้องอาศัยความเข้าใจที่ยาวนานและน่าเบื่อ
3. ตรวจสอบให้แน่ใจว่าใช้โหมด --noacpi สำหรับแขก Windows Server เพื่อให้ติดตั้งได้ตามปกติ
4. ตั้งค่าโหมดประหยัดพลังงานบนระบบแขกอย่างระมัดระวัง ห้ามปิดหน้าจอ มิฉะนั้น คุณจะไม่สามารถเชื่อมต่อผ่าน VNC ในภายหลังได้
5. หากคุณต้องการปิดเครื่องจากระยะไกลและรีบูตเครื่องผ่าน Virtual Manager ให้ปิดการใช้งานโปรแกรมรักษาหน้าจอเพราะว่า มันบล็อกการจัดการพลังงาน

ฉันกำลังเขียนบันทึกนี้เพื่อสาธิตการติดตั้งและการกำหนดค่าเครื่องเสมือนที่ใช้ 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 อย่างเป็นทางการ (ส่วนหนึ่งของเคอร์เนล Linux) และแนะนำให้ใช้ไลบรารี libvirt เป็นเครื่องมือในการจัดการ ซึ่งเป็นสิ่งที่เราจะทำต่อไป

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

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

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

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

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

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

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 | grep "ที่อยู่ mac"

จำที่อยู่ 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 ได้

ไฮเปอร์ไวเซอร์ การจำลองเสมือน และคลาวด์

การวิเคราะห์ไฮเปอร์ไวเซอร์ KVM

ซีรี่ส์เนื้อหา:

เกี่ยวกับบทความชุดนี้

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

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

สิ่งที่คุณต้องรู้เพื่อเริ่มต้น

Kernel-based Virtual Machine (KVM) เป็นโซลูชันการจำลองเสมือนเฉพาะแพลตฟอร์มที่สมบูรณ์แบบสำหรับ Linux บนโปรเซสเซอร์ x86 พร้อมส่วนขยายการจำลองเสมือน (Intel VT หรือ AMD-V) การสนับสนุน paravirtualization แบบจำกัดสำหรับ Linux และ Windows ยังมีให้สำหรับผู้เยี่ยมชมในรูปแบบของไดรเวอร์เครือข่าย paravirtual

ปัจจุบัน KVM สื่อสารกับเคอร์เนลผ่านโมดูลเคอร์เนลที่โหลดได้ รองรับระบบปฏิบัติการเกสต์ที่หลากหลาย เช่น Linux, BSD, Solaris, Windows, Haiku, ReactOS และ AROS Research Operating System KVM เวอร์ชันแก้ไข (qemu) สามารถทำงานบน Mac OS X ได้

หมายเหตุ: KVM จะไม่ดำเนินการจำลองตัวเองใดๆ แต่โปรแกรมที่ทำงานในพื้นที่ผู้ใช้จะใช้อินเทอร์เฟซ /dev/kvm เพื่อกำหนดค่าพื้นที่ที่อยู่ของเซิร์ฟเวอร์เสมือนของแขก ใช้ทรัพยากร I/O จำลอง และแมปอิมเมจกับอิมเมจโฮสต์

สถาปัตยกรรม KVM แสดงในรูปที่ 1

รูปที่ 1. สถาปัตยกรรม KVM
พาราเวอร์ชวลไลเซชัน

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

มี "ตะขอ" พิเศษที่ช่วยให้แขกและระบบโฮสต์สามารถร้องขอและยืนยันวิธีแก้ปัญหาของงานที่ซับซ้อนเหล่านี้ที่สามารถทำได้ในสภาพแวดล้อมเสมือนจริง แต่ในอัตราที่ช้ากว่ามาก

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

การจำลองอุปกรณ์ถูกควบคุมโดย qemu เวอร์ชันดัดแปลงซึ่งมีการจำลอง BIOS, บัส PCI, บัส USB รวมถึงชุดอุปกรณ์มาตรฐานเช่น ตัวควบคุมดิสก์ IDE และ SCSI การ์ดเครือข่ายฯลฯ

ฟังก์ชั่นการทำงาน

คุณสมบัติหลักของ KVM มีดังต่อไปนี้

ความปลอดภัย

เนื่องจากเครื่องเสมือนถูกนำมาใช้เป็นกระบวนการ Linux จึงใช้โมเดลความปลอดภัยของ Linux มาตรฐานเพื่อแยกและจัดการทรัพยากร ด้วย SELinux (Security-Enhanced Linux) เคอร์เนล Linux จะเพิ่มการควบคุมการเข้าถึงที่จำเป็น การรักษาความปลอดภัยแบบหลายชั้นและหลายชั้น และจัดการนโยบายความปลอดภัย SELinux ให้การแยกทรัพยากรที่เข้มงวดและจำกัดการเคลื่อนที่ของกระบวนการที่ทำงานในเคอร์เนล Linux

โครงการ SVirt เป็นความพยายามของชุมชนในการรวมคุณสมบัติด้านความปลอดภัย Mandatory Access Control (MAC) และการจำลองเสมือน บนพื้นฐานลินุกซ์(KVM) - สร้างบน SELinux เพื่อจัดเตรียมโครงสร้างพื้นฐานที่ช่วยให้ผู้ดูแลระบบสามารถกำหนดนโยบายการแยกเครื่องเสมือนได้ SVirt ได้รับการออกแบบมาเพื่อให้แน่ใจว่าทรัพยากรเครื่องเสมือนไม่สามารถเข้าถึงได้โดยกระบวนการอื่น (หรือเครื่องเสมือน) ผู้ดูแลระบบสามารถขยายนโยบายนี้ได้โดยการกำหนดสิทธิ์แบบละเอียด ตัวอย่างเช่น ต้องการให้กลุ่มของเครื่องเสมือนใช้ทรัพยากรเดียวกันร่วมกัน

การจัดการหน่วยความจำ

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

KVM รองรับคุณสมบัติการจำลองเสมือนหน่วยความจำล่าสุดจากผู้ผลิตโปรเซสเซอร์ เช่น Intel Extended Page Table (EPT) และ AMD Rapid Virtualization Indexing (RVI) เพื่อลดภาระของโปรเซสเซอร์และบรรลุผลในระดับสูง แบนด์วิธ.

รองรับการแชร์เพจหน่วยความจำโดยใช้ฟังก์ชันเคอร์เนล Kernel Same-page Merging (KSM) KSM สแกนหน่วยความจำของเครื่องเสมือนแต่ละเครื่อง และหากหน้าหน่วยความจำบางหน้าของเครื่องเสมือนเหมือนกัน ก็จะรวมหน้าเหล่านั้นเป็นหน้าเดียว ซึ่งจะกลายเป็นเรื่องธรรมดาสำหรับเครื่องเสมือนเหล่านี้และจะถูกจัดเก็บไว้ในสำเนาเดียว หากแขกพยายามแก้ไขเพจที่แชร์นี้ ก็จะได้รับสำเนาของตัวเอง

การจัดเก็บข้อมูล

KVM สามารถใช้สื่อที่รองรับ Linux เพื่อจัดเก็บอิมเมจเครื่องเสมือนได้ รวมถึง ดิสก์ในเครื่องกับ อินเทอร์เฟซ IDE, SCSI และ SATA, เครือข่าย ที่เก็บข้อมูลที่แนบมา(NAS) รวมถึง NFS และ SAMBA/CIFS หรือ SAN ที่รองรับ iSCSI และ ไฟเบอร์แชนเนล- I/O แบบมัลติเธรดสามารถใช้เพื่อปรับปรุงปริมาณงานการจัดเก็บข้อมูลและความซ้ำซ้อน

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

KVM รองรับอิมเมจเครื่องเสมือนบนระบบไฟล์แบบกระจายเช่น Global ระบบไฟล์(GFS2) เพื่อให้สามารถแชร์ผ่านหลายโฮสต์หรือรวมเข้าด้วยกันโดยใช้โลจิคัลวอลุ่ม สนับสนุน การปรับแต่งอย่างละเอียด (การจัดเตรียมแบบบาง) ของดิสก์อิมเมจช่วยให้คุณสามารถเพิ่มประสิทธิภาพการใช้ทรัพยากรการจัดเก็บข้อมูล โดยไม่ได้จัดสรรทั้งหมดล่วงหน้าในครั้งเดียว แต่จะเฉพาะเมื่อเครื่องเสมือนต้องการเท่านั้น รูปแบบดิสก์ที่เป็นเอกสิทธิ์ของ KVM คือ QCOW2 รองรับสแน็ปช็อตและให้สแน็ปช็อต การบีบอัด และการเข้ารหัสหลายระดับ

การโยกย้ายสด

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

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

ไดรเวอร์อุปกรณ์

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

ไฮเปอร์ไวเซอร์ KVM ใช้มาตรฐาน VirtIO ที่พัฒนาโดย IBM และ Red Hat ร่วมกับชุมชน Linux สำหรับไดรเวอร์พาราเวอร์ชวลไลซ์ เป็นอินเทอร์เฟซที่ไม่ขึ้นกับไฮเปอร์ไวเซอร์สำหรับสร้างไดรเวอร์อุปกรณ์ ช่วยให้ไฮเปอร์ไวเซอร์หลายรายแชร์ไดรเวอร์อุปกรณ์ชุดเดียวกันได้ ปรับปรุงการทำงานร่วมกันระหว่างแขก

ไดรเวอร์ VirtIO รวมอยู่ด้วย รุ่นที่ทันสมัยเคอร์เนล Linux (ล่าสุดคือ 2.6.25) รวมอยู่ใน Red Hat Enterprise Linux 4.8+ และ 5.3+ และยังพร้อมใช้งานสำหรับ Red Hat Enterprise Linux 3 อีกด้วย Red Hat ได้พัฒนาไดรเวอร์ VirtIO สำหรับระบบปฏิบัติการ Microsoft Windows guest ที่ปรับเครือข่ายและ การดำเนินการดิสก์ I/O; ไดรเวอร์เหล่านี้ได้รับการรับรองโดยโปรแกรมการรับรอง Microsoft Windows Hardware Quality Labs (WHQL)

ประสิทธิภาพและความสามารถในการขยายขนาด

KVM สืบทอดประสิทธิภาพและความสามารถในการปรับขนาดของ Linux โดยรองรับเครื่องเสมือนที่มีโปรเซสเซอร์เสมือน 16 ตัวและ RAM ขนาด 256 GB รวมถึงระบบโฮสต์ที่มี 256 คอร์และ RAM มากกว่า 1 TB มันสามารถให้:

  • ประสิทธิภาพ 95-135% เมื่อเทียบกับ Bare Metal ในแอปพลิเคชันระดับองค์กรจริง เช่น SAP, Oracle, LAMP และ Microsoft Exchange
  • มากกว่าหนึ่งล้านข้อความต่อวินาทีและเวลาแฝงน้อยกว่า 200 ไมโครวินาทีในเครื่องเสมือนที่ทำงานบนเซิร์ฟเวอร์มาตรฐาน
  • ระดับสูงสุดของการรวมเข้ากับเครื่องเสมือนมากกว่า 600 เครื่องที่ใช้งานแอปพลิเคชันระดับองค์กรบนเซิร์ฟเวอร์เดียว

ซึ่งหมายความว่า KVM สามารถจำลองเวิร์กโหลดที่มีความต้องการมากที่สุดได้

การปรับใช้ระบบเสมือนจริง

การปรับใช้ KVM นั้นเป็นกระบวนการที่ค่อนข้างซับซ้อน เต็มไปด้วยข้อกำหนดการกำหนดค่าพิเศษ ดังนั้น โปรดดูข้อมูลเพิ่มเติมในส่วนนี้

การจัดการเครื่องเสมือน

มีผู้จัดการเครื่องเสมือนหลายเครื่อง ในหมู่พวกเขา:

  • ผู้จัดการเสมือนของ Univention;
  • qemu/KVM: ทำงานโดยตรงจากบรรทัดคำสั่งในเครื่อง KVM
  • Virsh: เชลล์ขั้นต่ำสำหรับการจัดการเครื่องเสมือน
  • Virtual Machine Manager: หรือที่รู้จักกันในชื่อ virt-manager ซึ่งเป็นส่วนต่อประสานผู้ใช้สำหรับจัดการเครื่องเสมือน

การเลือก KVM

ข้อดี:

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

จุดด้อย:

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