ย้อนกลับไปหลายปีก่อน แนวคิดของ "เครื่องเสมือน (Virtual Machine - VM)" ออกเป็นเรื่องที่ค่อนข้างไกลตัว ซึ่งมันก็เป็นความจริงในระดับหนึ่ง เพราะก่อนที่เทคโนโลยี VM จะเฟื่องฟู บริษัทที่มีความจำเป็นต้องใช้งานหลายแพลตฟอร์ม ก็จะต้องติดตั้งฮาร์ดแวร์ และซอฟต์แวร์สำหรับแต่ละแพลตฟอร์มโดยเฉพาะ เช่น เครื่อง A เป็นระบบปฏิบัติการ Windows, เครื่อง B เป็นระบบปฏิบัติการ Linux, เครื่อง C เป็นระบบปฏิบัติการ macOS เป็นต้น
แต่ปัจจุบันนี้ การมาของเทคโนโลยี Virtual Machine ทำให้เราสามารถรันได้หลากหลายระบบปฏิบัติด้วยคอมพิวเตอร์เพียงเครื่องเดียว หรืออาจไม่จำเป็นต้องมีฮาร์ดแวร์เลยด้วยซ้ำไป
Virtual Machine คืออะไร ? มันมีข้อดี-ข้อเสียอะไรบ้าง ? มาเรียนรู้เกี่ยวกับเทคโนโลยี Virtual Machine กัน
หากจะนิยามง่าย ๆ Virtual Machine (VM) ก็คือคอมพิวเตอร์เครื่องหนึ่ง แต่แทนที่จะมันจะเป็นคอมพิวเตอร์แบบฟิสิกส์ที่อยู่ในโลกจริง มันจะเป็นคอมพิวเตอร์ที่อยู่ในโลกดิจิทัลเท่านั้น
Virtual Machine (VM) เป็นเทคโนโลยีที่อนุญาตให้ผู้ใช้สามารถใช้งานได้หลายระบบปฏิบัติการ บนฮาร์ดแวร์เพียงตัวเดียว โดย VM จะจำลองสภาพแวดล้อมขึ้นมาภายในคอมพิวเตอร์ ซึ่งภายในสภาพแวดล้อมจำลองนี้ ผู้ใช้สามารถติดตั้งซอฟต์แวร์ หรือทดสอบการทำงานต่าง ๆ ได้ โดยที่ไม่ส่งผลต่อระบบปฏิบัติการหลัก
สำหรับผู้ใช้ทั่วไป มักจะใช้ซอฟต์แวร์ Virtual Machine ในการจำลองแพลตฟอร์มต่าง ๆ เนื่องจากเป็นวิธีการที่ค่อนข้างง่าย ด้วยการผสมผสานการทำงานร่วมกันระหว่างฮาร์ดแวร์ และ ซอฟต์แวร์ มันจะทำการแบ่งทรัพยากรที่มีอยู่ออกมาบางส่วน เพื่อนำมาใช้จำลองคอมพิวเตอร์ดิจิทัลอีกเครื่องขึ้นมาในระบบ
วิธีการนี้ จะสังเกตเห็นว่า แม้ VM ต้องใช้ฮาร์ดแวร์ในการทำงานก็จริง แต่ผู้ใช้ไม่จำเป็นต้องมีฮาร์ดแวร์เพิ่มเติมเพื่อจำลองมัน สามารถแบ่งทรัพยากรที่มีอยู่แล้วมาทำงานได้เลย เช่น แบ่ง CPU มาประมวลผล, แบ่งฮาร์ดดิสก์มาเก็บข้อมูล , แบ่งแรมมาทำงาน ฯลฯ
ซึ่งในการทำงานที่ต้องการจำลอง VM เป็นจำนวนมาก (Multiple VM) หรือการทำงานในระดับองค์กร จะนิยมนำเครื่องเซิร์ฟเวอร์มาใช้ติดตั้ง ซอฟต์แวร์ Virtual Machine เพื่อเพิ่มความยืดหยุ่นในการบริหาร อย่างไรก็ตาม ในปัจจุบันนี้ ความนิยมในการนำระบบคลาวด์มาใช้ในการทำ VM ก็เริ่มแพร่หลายมากขึ้น
ภาพจาก : https://thewebguru.it/information-technology/containers/vintage-bikes-are-back-in-style/
อย่างที่เราได้อธิบายไปแล้วว่า Virtual Machine เป็นการจำลองสภาพแวดล้อมที่อิสระขึ้นมาภายในคอมพิวเตอร์ของเรา ในโครงสร้างการทำงานของ Virtual Machine เราจะเรียกคอมพิวเตอร์ดังกล่าวว่า "Host" ส่วน VM ที่ทำงานอยู่บนเครื่อง Host จะถูกเรียกว่า "Guest OS" ซึ่งมันอาจจะเป็นระบบปฏิบัติการเดียวกับเครื่อง Host ก็ได้ หรือจะเป็นระบบปฏิบัติการอื่น ๆ ที่แตกต่างจาก Host ก็ได้เช่นกัน
ภาพจาก : https://velog.io/@eugenie8/VM-vs.-Docker
จากแผนภูมิภาพในหัวข้อที่แล้ว เราจะเห็นว่าในการทำงานของ Virtual Machine จะมีองค์ประกอบหนึ่งที่เรียกว่า "Hypervisor" มันมีหน้าที่ที่สำคัญต่อการทำงานของ Virtual Machine เป็นอย่างมาก
การที่เครื่องคอมพิวเตอร์จะทำหน้าที่ Host ให้กับ VM ได้ จำเป็นต้องใช้ซอฟต์แวร์เฉพาะทางเข้ามาช่วยในการบริหารจัดทรัพยากรให้กับ VM ซึ่ง Hypervisor คือซอฟต์แวร์ดังกล่าวนั่นเอง โดย Hypervisor จะควบคุมทั้งการแจกทรัพยากร และการกู้กลับทรัพยากรกลับคืนมาด้วย เพื่อตอบสนองการทำงานของ VM ที่ความต้องการทรัพยากรในการทำงานจะมีการเพิ่ม และลดตลอดเวลา
Hypervisor ยังมีหน้าที่ในการจำลองการทำงานฮาร์ดแวร์ของคอมพิวเตอร์ด้วย ไม่ว่าจะเป็น CPU, หน่วยความจำ, ฮาร์ดดิสก์, ระบบเครือข่าย และฮาร์ดแวร์ต่าง ๆ ส่วนใหญ่แล้ว Hypervisor จะไม่ต้องการฮาร์ดแวร์พิเศษในการทำงาน อย่างไรก็ตาม คอมพิวเตอร์ที่ Hypervisor สามารถทำงานได้ ต้องมีทรัพยากรที่รองรับ VM ได้ด้วย
Hypervisor ส่วนใหญ่แล้วจะแบ่งออกเป็น 2 ประเภท คือ Type 1 และ Type 2
หรือที่รู้จักกันในชื่อว่า "Bare-metal hypervisors" โดย Type 1 Hypervisor จะทำงานโดยตรงบนฮาร์ดแวร์ของเครื่องโฮสต์ และสามารถเข้าถึงทรัพยากรของฮาร์ดแวร์ได้โดยตรง ทำให้มันประสิทธิภาพการทำงานที่ดีกว่า Type 2 Hypervisor
ตัวอย่าง Type 1 Hypervisor ที่ได้รับความนิยมก็อย่างเช่น Microsoft Hyper-V และ VMware ESXi
หรือที่รู้จักกันในชื่อว่า "Hosted hypervisors" โดย Hypervisor ชนิดนี้ จะติดตั้งอยู่บนระบบปฏิบัติการขอวเครื่องโฮสต์ นั่นหมายความว่าการจัดการทรัพยากรในการทำงาน จะต้องสั่งผ่านโฮสต์ไม่ได้เข้าถึงฮาร์ดแวร์โดยตรงเหมือนกับ Type 1 Hypervisor
ตามปกติแล้ว Type 2 Hypervisor นิยมใช้กับ End-user ในสถานการณ์เฉพาะ เช่น นักพัฒนาที่ต้องการทดสอบการทำงานของแอปพลิเคชันบนระบบปฏิบัติการที่ต่างจากเครื่องโฮสต์
ตัวอย่าง Type 2 Hypervisor ที่ได้รับความนิยมก็อย่างเช่น VirtualBox, VMware Workstation
โดยพื้นฐานแล้ว Virtual Machine เป็นองค์ประกอบพื้นฐานของทรัพยากรในการจำลองทรัพยากรของคอมพิวเตอร์ ซึ่งเป็นบทบาทที่สำคัญต่อการพัฒนาเทคโนโลยีหลายด้าน ไม่ว่าจะเป็นซอฟต์แวร์, แอปพลิเคชัน, เครื่องมือ ฯลฯ หน้าที่โดยทั่วไปของ Virutal Machine จะมีดังต่อไปนี้
Virtual Machine สามารถทำงานเป็นเซิร์ฟเวอร์สำหรับโฮสต์ Virtual Machine ต่าง ๆ ซึ่งช่วยให้เราสามารถบริหารฮาร์ดแวร์ได้ง่ายขึ้น เพราะมีฮาร์ดแวร์เพียงเครื่องเดียว
Virtual Machine สามารถจำลองสภาพแวดล้อมที่เป็นอิสระออกจากระบบหลัก เพื่อใช้ในการทดสอบ และพัฒนาสิ่งที่ต้องการได้ โดยไม่ส่งผลกระทบต่อโครงสร้างของระบบ
DevOps เป็นวัฒนธรรมการพัฒนาแบบทีมที่มีนักพัฒนาหลายคนมีส่วนร่วมในการทำงาน ไม่ใช่ต่างคนต่างทำ แม้มันจะเป็นวิธีที่มีประสิทธิภาพดี แต่มันก็ต้องมีเครื่องมือที่เข้ามาช่วยควบคุม บริหารจัดการการแบ่งงานด้วย ซึ่ง Virtual Machine ก็สามารถช่วยสนับสนุนการทำงานในจุดนี้ได้
ความยืดหยุ่นที่มีใน Virtual Machine เป็นหนึ่งในกุญแจสำคัญ ที่ช่วยกระตุ้นให้การย้ายแพลตฟอร์มเร็วมากขึ้น
การยกระบบทั้งหมดไปจำลองการทำงานบน Cloud ด้วย VM ช่วยเพิ่มความปลอดภัยให้กับทั้งระบบ ซึ่งคลาวด์มีระบบสำรองข้อมูลที่ดี และมีผู้เชี่ยวชาญคอยดูแล
Virtual Machine เป็นรากฐานที่สำคัญในการทำให้ภายในระบบหนึ่ง สามารถมีหลายแพลตฟอร์มทำงานร่วมกันได้ และยังช่วยผสานการทำงานระหว่างระบบที่เป็นออฟไลน์ กับระบบคลาวด์ที่เป็นออนไลน์เข้าด้วยกันได้ด้วย ทำให้องค์กรสามารถปรับเปลี่ยนได้โดยไม่จำเป็นต้องทิ้งระบบดั้งเดิม (Legacy systems) ที่ใช้งานมาหลายปี
สำหรับการแบ่งประเภทของ Virtual Machine มีอยู่หลายประเภท ที่สามารถพบเจอได้บ่อย ๆ ก็อย่างเช่น
Hypervisors แทบทุกตัวรองรับ VM ในการจำลองระบบปฏิบัติการ Windows ในฐานะ Guest ถ้าเป็น Hyper-V ของ Microsoft ด้วยความที่มันเป็นส่วนหนึ่งของระบบปฏิบัติการ Windows อยู่แล้ว มันจึงสามารถสร้างพาร์ทิชันของมันขึ้นมาในระบบ เพื่อดึงทรัพยากรจากฮาร์ดแวร์มาใช้งานได้โดยตรง
ระบบปฏิบัติการ Android เป็น Open-source ที่แพร่หลายบนอุปกรณ์พกพา และในอุปกรณ์เพื่อความบันเทิงภายในบ้าน ซึ่งระบบปฏิบัติการ Android จะทำงานอยู่บนชิปประมวลผลที่เป็น สถาปัตยกรรมแบบ ARM เท่านั้น แต่ก็มีคนติดเกมมือถือ หรือนักพัฒนาแอปพลิเคชัน ที่ต้องการจะใช้งานระบบปฏิบัติการ Android บนเครื่อง PC
ปัญหาคือ PC ใช้สถาปัตยกรรมแบบ x86 ในการทำงาน จึงมีการพัฒนาซอฟต์แวร์จำลองสถาปัตยกรรม ARM ขึ้นมา หรือเขียนโค้ดขึ้นมาใหม่เปลี่ยนชุดคำสั่งในระบบปฏิบัติการ Android ให้เป็นแบบ x86 แทน
macOS เป็นระบบปฏิบัติการของ Apple ที่มีให้ใช้งานแค่ในคอมพิวเตอร์ของ Apple เท่านั้น แต่ด้วย Type 2 hypervisors มันทำให้เราสามารถติดตั้ง macOS เป็น Guest ผ่าน VM ได้ภายใต้เงื่อนไขที่กำหนด (End user license agreement)
ในปัจจุบันนี้ยังไม่มี VM ตัวไหนที่จำลอง iOS ได้ เนื่องจาก Apple ค่อนข้างเข้มงวดมาก ไม่อนุญาตให้ iOS ทำงานบนอุปกรณ์อื่นได้นอกเหนือจาก iPhone เท่านั้น
สิ่งที่ใกล้เคียงกับ iOS VM ที่สุดในตอนนี้คือ iPhone simulator ที่อยู่ใน Xcode ชุดพัฒนาซอฟต์แวร์สำหรับ macOS, iOS, iPadOS, watchOS, tvOS และ VisionOS ที่มีระบบจำลอง iOS ใส่มาให้ด้วย
แพลตฟอร์ม Java มีชื่อเสียงในฐานะ "เขียนทีเดียว ทำงานได้ทุกแพลตฟอร์ม" นั่นหมายความว่า ซอฟต์แวร์ตัวใดก็ตามที่เขียนด้วย Java จะสามารถนำไปใช้งานกับฮาร์ดแวร์ทุกตัวที่รองรับ Java ได้ ซึ่งการที่มันทำแบบนั้นได้ก็เพราะว่าภายในแพลตฟอร์ม Java นั้นมี Java virtual machine (JVM) อยู่ด้วย
ภายในซอฟต์แวร์ Java จะมีสิ่งที่เรียกว่า Bytecode อยู่ มันเป็นชุดคำสั่งสำหรับ JVM โดย JVM จะทำการคอมไฟล์ (Compiles) ตัว Bytecode ให้เป็น Machine Code ภาษาในระดับที่ต่ำสุด (Lowest-Level Language) ที่ใช้ในเครื่อง Host ซึ่งแพลตฟอร์ม Java มีความเจ๋งตรงที่สามารถสร้างชุดคำสั่งที่เป็น Machine code ได้หลายรูปแบบให้เหมาะสมกับชิปประมวลผลที่ทำงานอยู่ได้
ทั้งนี้การทำงานของ JVM จะไม่ได้จำลองการทำงาน Java ทั้งระบบ และไม่ได้ใช้ Hypervisors เหมือน VM ตัวอื่น ๆ มันแค่เปลี่ยนภาษาที่ใช้ในการสื่อสารให้ตรงกับฮาร์ดแวร์เท่านั้นเอง
เหมือนกับการทำงานของ JVM ตัว Python Virtual Machine ก็ไม่ได้ทำงานอยู่บน Hypervisor เช่นกัน และไม่มี Guest OS ด้วย มันเป็นเพียงเครื่องมือตัวหนึ่งที่ช่วยให้ซอฟต์แวร์ที่พัฒนาด้วยภาษา Python สามารถทำงานบนระบบปฏิบัติการต่าง ๆ ได้
Python ใช้หลักการเดียวกับ Java คือใช้ Bytecode ที่เก็บชุดคำสั่งเตรียมไว้ล่วงหน้า เมื่อซอฟต์แวร์เริ่มทำงาน Python VM ก็จะเปลี่ยน Bytecode เป็น Machine code
ระบบปฏิบัติการ Linux เป็น Guest OS แบบพื้นฐานที่ VM ส่วนใหญ่รองรับได้ ในทางตรงกันข้าม Linux ก็เป็น Host OS ยอดนิยมที่ใช้ในการติดตั้ง VM ด้วยเช่นกัน ถึงกับมี Hypervisor ของตัวเองโดยเฉพาะเรียกว่า Kernel-based virtual machine (KVM) Linux ส่วนใหญ่มาพร้อมกับ KVm ตั้งแต่ปี ค.ศ. 2007 (พ.ศ. 2550)
VMware เป็นหนึ่งในผู้บุกเบิกซอฟต์แวร์ Virtualization ซึ่งปัจจุบันนี้ก็มีชื่อเสียงเป็นที่ยอมรับ และได้รับความนิยมเป็นอันดับต้น ๆ มีให้เลือกใช้ทั้ง Type 1 และ Type 2 Hypervisor มีการแบ่งระดับซอฟต์แวร์ทั้งสำหรับผู้ใช้งานทั่วไป และระดับองค์กร
Ubuntu เป็น Linux distribution ที่พัฒนาโดย Canonical มีให้เลือกใช้งานได้ทั้ง Desktop และ Server ซึ่งทั้งคู่รองรับการทำงานแบบ VM และยังสามารถติดตั้งเป็น Guest OS บน Hyper-V ได้ด้วย
ในปัจจุบันนี้ระบบคลาวด์ได้รับความนิยมนำมาใช้การทำ Virtual Machine เพื่อสร้างคอมพิวเตอร์ที่เราสามารถเข้าใช้ทำงานได้จากทุกที่ ทุกอุปกรณ์ ซึ่ง Virtual Machine บน Cloud จะมีการแบ่งออกเป็น 2 ประเภท คือ Single-tenant และ Multi-tenant
โดย Single-tenant จะเป็นการเช่าฮาร์ดแวร์ทั้งระบบเพื่อให้ได้สิทธิ์ในการควบคุม และบริหาร มีข้อดีในด้านความปลอดภัย และการปรับแต่งระบบได้อิสระมากกว่า ส่วน Multi-tenant เป็นการเช่าโครงสร้างแบบแบ่งกันใช้งานร่วมกับผู้ใช้บริการรายอื่น ๆ ซึ่งทำให้มีข้อดีตรงที่ค่าบริการที่ถูกกว่ามาก
Virtual Machine ดูแล และควบคุมได้ง่าย ทำให้มันมีข้อได้เปรียบกว่าการทำฮาร์ดแวร์แยกอยู่หลายด้าน
ถึงแม้ว่า Virtual Machine จะมีข้อได้เปรียบกว่าการทำฮาร์ดแวร์แยกอยู่หลายด้าน แต่หากเทียบกัน ก็ไม่ได้มีแต่ข้อดีเสมอไป มันก็มีข้อเสียเปรียบอยู่ด้วยเช่นกัน
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |