กลับไปหน้าบทความ

อ่าน 9 นาที

เครื่องเสมือน

ใน ด้านคอมพิวเตอร์ เครื่อง เสมือน ( VM ) คือ การจำลอง หรือ การสร้าง ระบบคอมพิวเตอร์ ขึ้น มาใหม่ เครื่องเสมือนนั้นสร้างขึ้นจาก สถาปัตยกรรมคอมพิวเตอร์...

เครื่องเสมือน

virt-managerรัน ระบบปฏิบัติการ Haikuในหน้าต่าง

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

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

คำจำกัดความ

เครื่องเสมือนระบบ

เดิมที Popek และ Goldbergได้นิยาม 'เครื่องเสมือน' ว่าเป็น "สำเนาที่มีประสิทธิภาพและแยกจากกันของเครื่องคอมพิวเตอร์จริง" [ 2 ]การใช้งานในปัจจุบันรวมถึงเครื่องเสมือนที่ไม่มีความสอดคล้องโดยตรงกับฮาร์ดแวร์จริงใดๆ[ 3 ]ฮาร์ดแวร์ทางกายภาพ "โลกแห่งความเป็นจริง" ที่ใช้งาน VM โดยทั่วไปเรียกว่า 'โฮสต์' และเครื่องเสมือนที่จำลองบนเครื่องนั้นโดยทั่วไปเรียกว่า 'เกสต์' โฮสต์สามารถจำลองเกสต์ได้หลายเครื่อง โดยแต่ละเครื่องสามารถจำลองระบบปฏิบัติการและแพลตฟอร์มฮาร์ดแวร์ที่แตกต่างกันได้

ความต้องการใช้งานระบบปฏิบัติการหลายระบบเป็นแรงจูงใจเริ่มต้นสำหรับเครื่องเสมือน เพื่อให้สามารถแบ่งเวลาใช้งานระหว่างระบบปฏิบัติการแบบทำงานเดียวหลายระบบได้ ในบางแง่มุม เครื่องเสมือนระบบสามารถถือได้ว่าเป็นการขยายแนวคิดของหน่วยความจำเสมือน ซึ่งมีมาก่อนหน้านี้ ระบบ CP/CMSของ IBM ซึ่งเป็นระบบแรกที่อนุญาตให้มีการจำลองเสมือนอย่างเต็มรูปแบบได้นำการแบ่งเวลาใช้งาน มาใช้ โดยการจัดหาระบบปฏิบัติการแบบผู้ใช้เดียวให้กับผู้ใช้แต่ละคน ซึ่งก็คือระบบตรวจสอบการสนทนา (CMS) ซึ่งแตกต่างจากหน่วยความจำเสมือน เครื่องเสมือนระบบอนุญาตให้ผู้ใช้เขียนคำสั่งที่มีสิทธิ์พิเศษในโค้ดของตน แนวทางนี้มีข้อดีบางประการ เช่น การเพิ่มอุปกรณ์อินพุต/เอาต์พุตที่ไม่ได้รับอนุญาตจากระบบมาตรฐาน[ 3 ]

เมื่อเทคโนโลยีพัฒนาหน่วยความจำเสมือนเพื่อวัตถุประสงค์ในการจำลองเสมือน ระบบการจัดสรรหน่วยความจำเกินความจำเป็น แบบใหม่ อาจถูกนำมาใช้เพื่อจัดการการแบ่งปันหน่วยความจำระหว่างเครื่องเสมือนหลายเครื่องบนระบบปฏิบัติการคอมพิวเตอร์เครื่องเดียว อาจเป็นไปได้ที่จะแบ่งปันหน้าหน่วยความจำที่มีเนื้อหาเหมือนกันระหว่างเครื่องเสมือนหลายเครื่องที่ทำงานบนเครื่องจริงเครื่องเดียวกัน ซึ่งอาจส่งผลให้มีการแมปไปยังหน้าจริงเดียวกันโดยใช้เทคนิคที่เรียกว่าการรวมหน้าเดียวกันของเคอร์เนล (KSM) วิธีนี้มีประโยชน์อย่างยิ่งสำหรับหน้าแบบอ่านอย่างเดียว เช่น หน้าที่เก็บส่วนของโค้ด ซึ่งเป็นกรณีสำหรับเครื่องเสมือนหลายเครื่องที่เรียกใช้ซอฟต์แวร์เดียวกันหรือคล้ายกัน ไลบรารีซอฟต์แวร์ เว็บเซิร์ฟเวอร์ ส่วนประกอบ มิดเดิลแวร์ฯลฯ ระบบปฏิบัติการแขกไม่จำเป็นต้องเข้ากันได้กับฮาร์ดแวร์โฮสต์ ทำให้สามารถเรียกใช้ระบบปฏิบัติการที่แตกต่างกันบนคอมพิวเตอร์เครื่องเดียวกันได้ (เช่นWindows , Linuxหรือระบบปฏิบัติการเวอร์ชันก่อนหน้า) เพื่อรองรับซอฟต์แวร์ในอนาคต[ 4 ]

การใช้เครื่องเสมือนเพื่อรองรับระบบปฏิบัติการแขกแยกต่างหากเป็นที่นิยมในระบบฝังตัว การ ใช้งาน ทั่วไปคือการเรียกใช้ระบบปฏิบัติการแบบเรียลไทม์พร้อมกันกับระบบปฏิบัติการที่ซับซ้อนที่ต้องการ เช่น Linux หรือ Windows การใช้งานอีกอย่างหนึ่งคือสำหรับซอฟต์แวร์ใหม่และที่ยังไม่ได้รับการพิสูจน์ซึ่งยังอยู่ในขั้นตอนการพัฒนา ดังนั้นจึงทำงานภายในแซนด์บ็อกซ์ เครื่องเสมือนมีข้อดีอื่นๆ สำหรับการพัฒนาระบบปฏิบัติการ และอาจรวมถึงการเข้าถึงการดีบักที่ดีขึ้นและการรีบูตที่เร็วขึ้น[ 5 ]

VM หลายเครื่องที่รันระบบปฏิบัติการแขกของตนเองมักถูกนำมาใช้เพื่อการรวมเซิร์ฟเวอร์[ 6 ]

ประมวลผลเครื่องเสมือน

เครื่องเสมือนกระบวนการบางครั้งเรียกว่าเครื่องเสมือนแอปพลิเคชันหรือManaged Runtime Environment (MRE) ทำงานเหมือนแอปพลิเคชันทั่วไปภายในระบบปฏิบัติการโฮสต์และรองรับกระบวนการเดียว โดยจะถูกสร้างขึ้นเมื่อกระบวนการนั้นเริ่มต้นและถูกลบเมื่อปิดกระบวนการนั้น จุดประสงค์คือเพื่อจัดเตรียม สภาพแวดล้อมการเขียนโปรแกรมที่ไม่ขึ้นกับ แพลตฟอร์มซึ่งจะแยกรายละเอียดของฮาร์ดแวร์หรือระบบปฏิบัติการพื้นฐานออกไป และอนุญาตให้โปรแกรมทำงานในลักษณะเดียวกันบนทุกแพลตฟอร์ม[ 7 ]

เครื่องเสมือนกระบวนการ (Process VM) ให้การนามธรรมระดับสูง – ซึ่งก็คือภาษาโปรแกรมระดับสูง (เมื่อเทียบกับการนามธรรมระดับต่ำของชุดคำสั่งคำสั่ง (ISA) ของเครื่องเสมือนระบบ (System VM)) เครื่องเสมือนกระบวนการถูกนำไปใช้โดยใช้ตัวแปล ภาษา ประสิทธิภาพที่เทียบเท่ากับภาษาโปรแกรมที่คอมไพล์แล้วสามารถทำได้โดยใช้การคอมไพล์แบบทันเวลา (just-in-time compilation )

เครื่องเสมือนประเภทนี้ได้รับความนิยมอย่างมากในภาษาโปรแกรม Javaซึ่งถูกนำไปใช้โดยใช้Java Virtual Machineตัวอย่างอื่นๆ ได้แก่Parrot Virtual Machineและ.NET Frameworkซึ่งทำงานบนเครื่องเสมือนที่เรียกว่าCommon Language Runtimeทั้งหมดนี้สามารถทำหน้าที่เป็นชั้นนามธรรมสำหรับภาษาคอมพิวเตอร์ใดๆ ก็ได้

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

แตกต่างจากเครื่องเสมือนแบบประมวลผลอื่นๆ ระบบเหล่านี้ไม่ได้ให้ภาษาโปรแกรมเฉพาะเจาะจง แต่ฝังอยู่ในภาษาที่มีอยู่แล้ว โดยทั่วไประบบดังกล่าวจะให้การเชื่อมต่อสำหรับหลายภาษา (เช่นCและFortran ) ตัวอย่างเช่นเครื่องเสมือนแบบขนาน (Parallel Virtual Machine : PVM) และ อินเทอร์ เฟซการส่งข้อความ (Message Passing Interface : MPI)

ประวัติศาสตร์

ทั้งเครื่องเสมือนระบบและเครื่องเสมือนกระบวนการมีมาตั้งแต่ทศวรรษ 1960 และยังคงเป็นพื้นที่ที่มีการพัฒนาอย่างต่อเนื่อง

ระบบเครื่องเสมือนพัฒนามาจากระบบแบ่งเวลาใช้งาน (Time-sharing ) โดยเฉพาะอย่างยิ่งในระบบ Compatible Time-Sharing System (CTSS) ระบบแบ่งเวลาใช้งานอนุญาตให้ผู้ใช้หลายคนใช้คอมพิวเตอร์พร้อมกันได้ โดยแต่ละโปรแกรมจะดูเหมือนว่ามีสิทธิ์เข้าถึงเครื่องอย่างเต็มที่ แต่จะมีเพียงโปรแกรมเดียวเท่านั้นที่ทำงานในแต่ละครั้ง โดยระบบจะสลับไปมาระหว่างโปรแกรมในช่วงเวลาต่างๆ และบันทึกและเรียกคืนสถานะในแต่ละครั้ง ระบบนี้พัฒนามาเป็นเครื่องเสมือน โดยเฉพาะอย่างยิ่งผ่านระบบวิจัยของ IBM ได้แก่M44/44Xซึ่งใช้การจำลองเสมือนบางส่วนและCP-40และSIMMONซึ่งใช้ การจำลอง เสมือนแบบเต็มรูปแบบและเป็นตัวอย่างแรกๆ ของไฮเปอร์ไวเซอร์สถาปัตยกรรมเครื่องเสมือนที่ใช้งานกันอย่างแพร่หลายเป็นครั้งแรกคือCP-67 /CMS (ดู รายละเอียดเพิ่มเติมได้ใน ประวัติของ CP/CMS ) ข้อแตกต่างที่สำคัญคือระหว่างการใช้เครื่องเสมือนหลายเครื่องบนระบบโฮสต์เดียวสำหรับการแบ่งเวลาใช้งาน เช่นใน M44/44X และ CP-40 กับการใช้เครื่องเสมือนเพียงเครื่องเดียวบนระบบโฮสต์สำหรับการสร้างต้นแบบ เช่นใน SIMMON อีมูเลเตอร์ซึ่งมีการจำลองฮาร์ดแวร์ของระบบรุ่นก่อนหน้าเพื่อความเข้ากันได้ มีมาตั้งแต่IBM System/360ในปี พ.ศ. 2506 [ 8 ] [ 9 ]ในขณะที่การจำลองซอฟต์แวร์ (ซึ่งในตอนนั้นเรียกว่า "การจำลอง") มีมาก่อนหน้านั้น

เครื่องเสมือนกระบวนการเกิดขึ้นครั้งแรกในฐานะแพลตฟอร์มนามธรรมสำหรับภาษาตัวกลางที่ใช้เป็นตัวแทนตัวกลางของโปรแกรมโดยคอมไพเลอร์ตัวอย่างแรกๆ ย้อนกลับไปราวปี 1964 โดย ระบบเขียนคอมไพเลอร์ META IIใช้สำหรับการอธิบายไวยากรณ์และการสร้างโค้ดเป้าหมาย ตัวอย่างที่โดดเด่นในปี 1966 คือเครื่อง O-codeซึ่งเป็นเครื่องเสมือนที่ดำเนินการO-code (โค้ดวัตถุ) ที่ปล่อยออกมาจากส่วนหน้าของ คอมไพเลอร์ BCPLนามธรรมนี้ทำให้คอมไพเลอร์สามารถพอร์ตไปยังสถาปัตยกรรมใหม่ได้อย่างง่ายดายโดยการใช้งานส่วนหลัง ใหม่ ที่รับ O-code ที่มีอยู่และคอมไพล์เป็นโค้ดเครื่องสำหรับเครื่องทางกายภาพพื้นฐาน ภาษา ออยเลอร์ใช้การออกแบบที่คล้ายกัน โดยมีภาษาตัวกลางชื่อP (พกพาได้) [ 10 ]สิ่งนี้ได้รับความนิยมราวปี 1970 โดยPascalโดยเฉพาะใน ระบบ Pascal-P (1973) และ คอมไพเลอร์ Pascal-S (1975) ซึ่งเรียกว่าp-codeและเครื่องที่ได้เรียกว่าเครื่องp-codeสิ่งนี้มีอิทธิพลอย่างมาก และเครื่องเสมือนในความหมายนี้มักถูกเรียกว่าเครื่อง p-code โดยทั่วไป นอกจากการเป็นภาษากลางแล้ว p-code ของ Pascal ยังถูกประมวลผลโดยตรงโดยตัวแปลภาษาที่ใช้เครื่องเสมือน โดยเฉพาะอย่างยิ่งในUCSD Pascal (1978) ซึ่งมีอิทธิพลต่อตัวแปลภาษาในภายหลัง โดยเฉพาะอย่างยิ่งเครื่องเสมือน Java (JVM) ตัวอย่างแรกๆ อีกตัวอย่างหนึ่งคือSNOBOL4 (1967) ซึ่งเขียนด้วยภาษาการใช้งาน SNOBOL (SIL) ซึ่งเป็นภาษาแอสเซมบลีสำหรับเครื่องเสมือน จากนั้นจึงกำหนดเป้าหมายไปยังเครื่องจริงโดยการแปลงเป็นแอสเซมเบลอร์ดั้งเดิมผ่านแอ สเซมเบลอ ร์มาโคร[ 11 ]อย่างไรก็ตาม มาโครไม่เป็นที่นิยมอีกต่อไปแล้ว ดังนั้นวิธีการนี้จึงมีอิทธิพลน้อยลง เครื่องเสมือนกระบวนการเป็นแนวทางที่นิยมในการใช้งานซอฟต์แวร์ไมโครคอมพิวเตอร์ยุคแรก รวมถึงTiny BASICและเกมผจญภัย ตั้งแต่การใช้งานแบบครั้งเดียว เช่นPyramid 2000ไปจนถึงเอนจิ้นอเนกประสงค์อย่างz-machineของInfocomซึ่งGraham Nelsonโต้แย้งว่า "อาจเป็นเครื่องเสมือนที่พกพาได้มากที่สุดเท่าที่เคยสร้างมา" [ 12 ]

ความก้าวหน้าที่สำคัญเกิดขึ้นในการนำSmalltalk -80 ไปใช้[ 13 ] โดยเฉพาะอย่างยิ่งการนำ Deutsch/Schiffmann ไปใช้[ 14 ] ซึ่งผลักดันการคอมไพล์แบบทันเวลาพอดี (JIT)ไปข้างหน้าในฐานะแนวทางการนำไปใช้ที่ใช้เครื่องเสมือนกระบวนการ[ 15 ] ต่อมาเครื่องเสมือน Smalltalk ที่โดดเด่น ได้แก่VisualWorks , เครื่องเสมือน Squeak [ 16 ] และStrongtalk [ 17 ] ภาษาที่เกี่ยวข้องที่สร้างนวัตกรรมเครื่องเสมือนจำนวนมากคือภาษาการเขียนโปรแกรมSelf [ 18 ]ซึ่งเป็นผู้บุกเบิกการเพิ่มประสิทธิภาพแบบปรับตัวได้ [ 19 ] และการรวบรวมขยะแบบรุ่นต่อรุ่นเทคนิคเหล่านี้พิสูจน์แล้วว่าประสบความสำเร็จในเชิงพาณิชย์ในปี 1999 ใน เครื่องเสมือน HotSpot Java [ 20 ]นวัตกรรมอื่นๆ ได้แก่ เครื่องเสมือนแบบใช้รีจิสเตอร์ เพื่อให้เข้ากับฮาร์ดแวร์พื้นฐานได้ดีกว่าเครื่องเสมือนแบบใช้สแต็ก ซึ่งเข้ากับภาษาการเขียนโปรแกรมได้ดีกว่า ในปี 1995 เครื่องเสมือน Disสำหรับภาษา Limbo เป็นผู้บุกเบิกสิ่งนี้

เทคนิคการจำลองเสมือน

แผนภาพเชิงตรรกะของการจำลองเสมือนแบบเต็มรูปแบบ

เวอร์ชวลไลเซชันแบบเต็มรูปแบบ

ในการจำลองเสมือนแบบเต็มรูปแบบ เครื่องเสมือนจะจำลองฮาร์ดแวร์มากพอที่จะทำให้ระบบปฏิบัติการ "แขก" (ระบบปฏิบัติการที่ออกแบบมาสำหรับชุดคำสั่ง เดียวกัน ) สามารถทำงานได้อย่างเป็นอิสระ แนวทางนี้ได้รับการบุกเบิกในปี 1966 ด้วยเครื่อง IBM CP-40และCP-67ซึ่งเป็นรุ่นก่อนหน้าของ ตระกูล เครื่องเสมือน (VM )

ตัวอย่างซอฟต์แวร์นอกเหนือจากเมนเฟรม ได้แก่Parallels Workstation , Parallels Desktop for Mac , VirtualBox , Virtual Iron , Oracle VM , Virtual PC , Virtual Server , Hyper-V , VMware Fusion , VMware Workstation , VMware Server (เลิกผลิตแล้ว เดิมชื่อ GSX Server), VMware ESXi , QEMU , Adeos, Mac-on-Linux, Win4BSD, Win4Lin Proและเทคโนโลยี Egenera vBlade

การจำลองเสมือนโดยใช้ฮาร์ดแวร์ช่วย

ในการจำลองเสมือนด้วยฮาร์ดแวร์ ฮาร์ดแวร์จะให้การสนับสนุนทางสถาปัตยกรรมที่ช่วยอำนวยความสะดวกในการสร้างมอนิเตอร์เครื่องเสมือนและอนุญาตให้ระบบปฏิบัติการแขกทำงานแยกกันได้[ 21 ] การจำลองเสมือนด้วยฮาร์ดแวร์ได้รับการแนะนำครั้งแรกบน IBM System/370 ในปี 1972 เพื่อใช้กับVM/370ซึ่งเป็นระบบปฏิบัติการเครื่องเสมือนตัวแรกที่ IBM นำเสนอเป็นผลิตภัณฑ์อย่างเป็นทางการ[ 22 ]

ในปี 2005 และ 2006 IntelและAMDได้จัดหาฮาร์ดแวร์เพิ่มเติมเพื่อรองรับการจำลองเสมือน (virtualization) Sun Microsystems (ซึ่งถูกซื้อกิจการโดยOracle Corporation ) ได้เพิ่มคุณสมบัติที่คล้ายกันใน โปรเซสเซอร์ UltraSPARC T-Series ของตน ในปี 2005 ตัวอย่างของแพลตฟอร์มการจำลองเสมือนที่ปรับให้เข้ากับฮาร์ดแวร์ดังกล่าว ได้แก่KVM , VMware Workstation , VMware Fusion , Hyper-V , Windows Virtual PC , Xen , Parallels Desktop for Mac , Oracle VM Server for SPARC , VirtualBoxและParallels Workstation

ในปี พ.ศ. 2549 พบว่าการสนับสนุนฮาร์ดแวร์ x86 รุ่นแรกแบบ 32 บิตและ 64 บิตแทบจะไม่ให้ข้อได้เปรียบด้านประสิทธิภาพเหนือกว่าการจำลองเสมือนด้วยซอฟต์แวร์[ 23 ]

การจำลองเสมือนระดับระบบปฏิบัติการ

ในการจำลองเสมือนระดับระบบปฏิบัติการ เซิร์ฟเวอร์ทางกายภาพจะถูกจำลองเสมือนที่ระดับระบบปฏิบัติการ ทำให้สามารถเรียกใช้เซิร์ฟเวอร์เสมือนที่แยกต่างหากและปลอดภัยหลายเครื่องบนเซิร์ฟเวอร์ทางกายภาพเครื่องเดียวได้ สภาพแวดล้อมระบบปฏิบัติการ "แขก" จะใช้ระบบปฏิบัติการเดียวกันกับระบบโฮสต์ ดังนั้นเคอร์เนลของระบบปฏิบัติการ เดียวกัน จึงถูกใช้เพื่อสร้างสภาพแวดล้อม "แขก" และแอปพลิเคชันที่ทำงานในสภาพแวดล้อม "แขก" จะมองเห็นมันเป็นระบบแบบสแตนด์อะโลน การใช้งานที่เป็นผู้บุกเบิกคือFreeBSD jailsตัวอย่างอื่นๆ ได้แก่Docker , Solaris Containers , OpenVZ , Linux-VServer , LXC , AIX Workload Partitions , Parallels Virtuozzo Containers และ iCore Virtual Accounts

ภาพถ่าย

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

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

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

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

การย้ายถิ่นฐาน

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

เฟลโอเวอร์

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

เวอร์ชวลไลเซชันแบบซ้อนกัน

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

การจำลองเสมือนแบบซ้อนกันมีความจำเป็นมากขึ้นเมื่อระบบปฏิบัติการที่แพร่หลายมีฟังก์ชันไฮเปอร์ไวเซอร์ในตัว ซึ่งในสภาพแวดล้อมเสมือนสามารถใช้งานได้ก็ต่อเมื่อไฮเปอร์ไวเซอร์โดยรอบรองรับการจำลองเสมือนแบบซ้อนกันเท่านั้น ตัวอย่างเช่นWindows 7สามารถเรียกใช้ แอปพลิเคชัน Windows XPภายในเครื่องเสมือนในตัวได้ นอกจากนี้ การย้ายสภาพแวดล้อมเสมือนที่มีอยู่แล้วไปยังคลาวด์ตาม แนวทาง โครงสร้างพื้นฐานในฐานะบริการ (IaaS) จะซับซ้อนมากขึ้นหากแพลตฟอร์ม IaaS ปลายทางไม่รองรับการจำลองเสมือนแบบซ้อนกัน[ 26 ] [ 27 ]

วิธีการนำการจำลองเสมือนแบบซ้อนกันไปใช้บนสถาปัตยกรรมคอมพิวเตอร์ เฉพาะนั้น ขึ้นอยู่กับ ความสามารถ ในการจำลองเสมือนที่ได้รับการสนับสนุนจากฮาร์ดแวร์หากสถาปัตยกรรมเฉพาะนั้นไม่ให้การสนับสนุนฮาร์ดแวร์ที่จำเป็นสำหรับการจำลองเสมือนแบบซ้อนกัน จะมีการใช้เทคนิคซอฟต์แวร์ต่างๆ เพื่อเปิดใช้งาน[ 26 ] เมื่อเวลาผ่านไป สถาปัตยกรรมต่างๆ จะได้รับการสนับสนุนฮาร์ดแวร์ที่จำเป็นมากขึ้น ตัวอย่างเช่น ตั้งแต่ สถาปัตยกรรมไมโคร Haswell (ประกาศในปี 2013) Intel เริ่มรวมVMCS shadowingเป็นเทคโนโลยีที่ช่วยเร่งการจำลองเสมือนแบบซ้อนกัน[ 28 ]

ความปลอดภัย

แผนภาพการออกแบบสถาปัตยกรรม ของ Qubes OS แสดงให้เห็นว่าการถูกโจมตีของ Firefox หรือ Thunderbird (ใน AppVM 1) จะไม่นำไปสู่การถูกโจมตีของ โปรแกรมจัดการรหัสผ่าน KeePass ของผู้ใช้(ใน AppVM 2) เนื่องจากมีการออกแบบโดยใช้ VM ที่แยกจากกันเพื่อให้ได้สถาปัตยกรรมแบบแบ่งส่วน

เครื่องเสมือน (Virtual Machine) มักถูกใช้เพื่อแยกแอปพลิเคชันออกจากกันเพื่อความปลอดภัย

การออกแบบสถาปัตยกรรมนี้ (ที่ใช้โดยQubes OS , Whonix , KickSecureและ Dangerzone) สามารถป้องกันการแพร่กระจายของมัลแวร์จากระบบที่ถูกบุกรุกระบบหนึ่ง (เช่นไคลเอนต์อีเมลที่เปิดเอกสารที่ติดเชื้อ ) ไปยังระบบอื่น (เช่นโปรแกรมจัดการรหัสผ่าน ) [ 29 ] [ 30 ]

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • James E. Smith, Ravi Nair, เครื่องเสมือน: แพลตฟอร์มอเนกประสงค์สำหรับระบบและกระบวนการ , Morgan Kaufmann, พฤษภาคม 2548, ISBN 1-55860-910-5656 หน้า (ครอบคลุมทั้งเครื่องเสมือนแบบกระบวนการและแบบระบบ)
  • เครก, เอียน ดี. เครื่องเสมือน . สปริงเกอร์ , 2006, ISBN 1-85233-969-1269 ​​หน้า (ครอบคลุมเฉพาะกระบวนการเครื่องเสมือน)
  • Mendel Rosenblum (31 สิงหาคม 2547). "การกลับชาติมาเกิดของเครื่องเสมือน" . ACM Queue . เล่ม 2, ฉบับที่ 5.
  • ห้องปฏิบัติการแห่งชาติแซนเดียใช้งานเคอร์เนลลินุกซ์ 1 ล้านตัวในรูปแบบเครื่องเสมือน (Virtual Machine)
  • การออกแบบเครื่องเสมือน Inferno โดย Phil Winterbottom และ Rob Pike
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Virtual_machine&oldid=1360297466 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เครื่องเสมือน

ใน ด้านคอมพิวเตอร์ เครื่อง เสมือน ( VM ) คือ การจำลอง หรือ การสร้าง ระบบคอมพิวเตอร์ ขึ้น มาใหม่ เครื่องเสมือนนั้นสร้างขึ้นจาก สถาปัตยกรรมคอมพิวเตอร์...

เครื่องเสมือนระบบ

เดิมที Popek และ Goldberg ได้นิยาม 'เครื่องเสมือน' ว่าเป็น "สำเนาที่มีประสิทธิภาพและแยกจากกันของเครื่องคอมพิวเตอร์จริง" [ 2 ] การใช้งานในปัจจุบันรวมถึงเครื่องเสมือนที่ไม่มีความสอดคล้องโดยตรงกับฮาร์ดแวร์จริงใดๆ [ 3 ] ฮาร์ดแวร์ทางกายภาพ "โลกแห่งความเป็นจริง"...

ประมวลผลเครื่องเสมือน

เครื่อง เสมือนกระบวนการ บางครั้งเรียกว่า เครื่องเสมือนแอปพลิเคชัน หรือ Managed Runtime Environment (MRE) ทำงานเหมือนแอปพลิเคชันทั่วไปภายในระบบปฏิบัติการโฮสต์และรองรับกระบวนการเดียว โดยจะถูกสร้างขึ้นเมื่อกระบวนการนั้นเริ่มต้นและถูกลบเมื่อปิดกระบวนการนั้น...

ประวัติศาสตร์

ทั้งเครื่องเสมือนระบบและเครื่องเสมือนกระบวนการมีมาตั้งแต่ทศวรรษ 1960 และยังคงเป็นพื้นที่ที่มีการพัฒนาอย่างต่อเนื่อง