By Arnon Puitrakul - 17 ธันวาคม 2018
จากตอนก่อนหน้านี้ที่เราพูดถึงวิธีการลง Windows ในเครื่อง Mac (กลับไปอ่านได้ ที่นี่) หนึ่งในวิธีที่เราแนะนำคือการใช้ Virtual Machine นั่นเอง วันนี้เราเลยจะมาอธิบายว่า เอ๊ะ ! จริง ๆ แล้ว Virtual Machine หรือที่เราเรียกย่อ ๆ กันว่า VM มันคืออะไรกันแน่
แน่นอนว่า เว็บเราก็อินดี้ เขียนตามที่เราจำได้ไม่มี Reference ถ้าเจอผิดรบกวน Comment มาแก้ให้ด้วยนะ
ปกติแล้ว เครื่องคอมพิวเตอร์ของเรา เวลาเราซื้อมา หลัก ๆ มันก็น่าจะมี CPU, Primary Memory (ที่เราใช้กันก็จะเป็น RAM) และ อุปกรณ์อื่น ๆ ที่เอามาเชื่อมต่อ แต่เอาอุปกรณ์เหล่านี้มาต่อรวมกัน ก็ไม่ได้หมายความว่า มันจะเป็นเครื่องคอมพิวเตอร์ที่เราสามารถใช้งานได้
รูปข้างในเป็นเพียงการจำลอง ไม่ได้สื่อความอะไรแต่อย่างใด ต้องการจะบอกว่า ข้างในมีวงจรยั่วเยี้ยไปหมด
มันจำเป็นที่จะต้องใช้อะไรบางอย่าง ที่เข้ามาช่วยควบคุม ทำให้เครื่องสามารถรับคำสั่ง จัดการทำ และเอาผลออกมาให้เราได้ เพราะว่า เราไม่สามารถนั่งสับ Switch ไฟทีละอันในเครื่องได้แน่ ๆ เหนื่อยตายเลย แค่ใน CPU ก็มีวงจรเล็กจิ๋วขนาดนาโนอยู่เต็มไปหมด ซึ่งเราจะใช้โปรแกรมนึงที่เรียกว่า Operating System (OS) หรือที่เราเรียกกันในภาษาไทยว่า **ระบบปฏิบัติการ **นั่นเอง
หน้าที่ของระบบปฏิบัติมีหลายงานมาก ๆ แต่งานนึงที่น่าสนใจของมันคือ การเป็นกาวเชื่อม Software เข้ากับ Hardware กล่าวคือ OS เนี่ยจะเป็นโปรแกรมที่คอยสั่งงาน Hardware ที่เราใส่ลงไปในเครื่อง เพื่อให้เรามั่นใจได้ว่า โปรแกรมของเราจะทำงานได้ และยังได้ผลที่ถูกต้องนั่นเอง ส่วนหน้าที่อื่นก็อย่างเช่น การจัดการหน่วยความจำ การเรียงคิวของการทำงาน อะไรเทือก ๆ นั้น ส่วนนี้เดี๋ยวเราจะมาอธิบายในคราวหลังละกันนะ
ส่วนเหนือกว่านั้น ก็จะเป็นโปรแกรมที่เราเอามาใช้งานกันละ ด้วยโครงสร้างแบบนี้อาจจะงงกัน ลองนึกภาพว่า เวลาเราจะใช้เครื่องเราต้องลงพวก Windows, macOS หรือ Linux ก่อน ไม่งั้นเราก็จะใช้โปรแกรมที่เราต้องการไม่ได้ใช่ม่ะ นั่นแหละที่เราลงไปตอนแรกนั่นคือ OS นั่นเอง และโปรแกรมต่าง ๆ ที่เราทำงานก็จะถูกสั่งให้ทำงาน ทำงาน และเอาผลมาให้เราผ่าน OS นั่นเอง
Virtual Machine หรือถ้าแปลตรงตัวก็ เครื่องเสมือน หรือย่อสั้น ๆ ว่า VM โอ๊ยจะเยอะไปไหน !! เรียกมัน VM นั่นแหละ
สิ่งที่มันทำง่าย ๆ เลยคือ การจำลองเครื่องคอมพิวเตอร์เครื่องนึงขึ้นมา ที่สามารถรถทำงานได้เหมือนเครื่องคอมพิวเตอร์จริง ๆ เลย อ่าน ๆ ดูแล้วน่าจะดูเหมือนง่ายสินะ แต่จริง ๆ แล้วเบื้องหลังของมันมีการทำงานที่ค่อนข้างซับซ้อนกว่าที่เราคิดสักหน่อย
กลับไปคำถามเมื่อครู่ที่ว่า เครื่องคอมพิวเตอร์ทำงานอย่างไร ? เราอธิบายไปว่ามันจะประกอบด้วย Hardware, OS และ User Application สินะ
เจ้าตัว OS และ User Application เป็นสิ่งที่เราติดตั้งกันในเครื่องคอมพิวเตอร์จริง ๆ แน่นอนว่า 2 สิ่งนี้วิธีทำนั้นง่ายมาก ๆ ไม่ต้องจำลองเลย เพราะมันเป็นโปรแกรม เราสามารถลงได้เลย แต่ปัญหามันอยู่ที่ Hardware ต่างหาก เราจะจำลอง Hardware ขึ้นมาในโปรแกรมได้อย่างไร ?
อย่างที่บอกไปว่า การจำลอง Hardware น่าจะเป็นเรื่องที่ยาก ด้วยน้ำมือของมนุษย์ก็มีการคิดค้นโปรแกรมที่ทำหน้าที่ที่ได้กล่าวไป เราเรียกโปรแกรมนั้นว่า Hypervisor หน้าที่ของมันสั้นมากคือ การจำลอง Hardware ให้เราใน Virtual Machine สำหรับการลง OS และ User Application ต่อไปนั่นเอง
โครงสร้างของ Type 2 Hypervisior
ดังนั้นโครงสร้างมันก็จะเป็นดังภาพด้านบน ที่ด้านล่างสุด เราจะมี Hardware ขึ้นมาเป็น OS เหมือนกับภาพที่เราดูก่อนหน้านี้ ถัดขึ้นมาก็จะเป็น Hypervisor ที่เป็น Hardware จำลอง ด้านบนของ Hypervisor ขึ้นก็ไปอีกก็จะเป็น OS และ User Application ของแต่ละ VM นั่นเอง ในขณะเดียวกัน OS ที่อยู่ใต้ Hypervisor เราก็ยังสามารถรัน User Application เหมือนเราใช้งานเครื่องตามปกติได้ด้วย โดยเราจะเรียก Hypervisor ที่รันอยู่บน OS แบบนี้ว่า Type 2 Hypervisor นั่นเอง หรือก็คือเป็นประเภทที่เราใช้กันทั่วไปนั่นเอง อาจจะผ่านโปรแกรมอย่าง Parallel Desktop (เขาไม่ได้จ่าย แต่เราจ่าย) และ Oracle VirtualBox ที่เราต้องลง OS ก่อนแล้วค่อยลง Hypervisor ลงไป
ข้อดีของประเภทที่ 2 คือความง่ายในการใช้งานและติดตั้ง เพราะมันมี OS อยู่ก่อนแล้วที่มันมักจะมากับหน้าตาที่ค่อนข้างเป็นมิตรกับผู้ใช้ทั่วไป แต่ข้อเสียคือ เราต้องรัน OS ก่อน เพราะฉะนั้น ถ้างานของเราต้องการประสิทธิภาพที่สูงขึ้น และการจัดการได้ทั่วถึง รวมไปถึงการทำงานในสเกลใหญ่ก็อาจจะไม่เหมาะเลย
โครงสร้างของ Type 1 Hypervisor
เพื่อแก้ปัญหาที่กล่าวไป ทำให้มันเกิด Type 1 Hypervisor ขึ้นมา ที่โครงสร้างของมันจะคล้ายกับ Type 2 หน่อย แค่ตัด OS ออก แล้วรัน Hypervisor ต่อจาก Hardware เลย ด้วยลักษณะการทำงานแบบนี้ บางคนเลยเรียก Hypervisor พวกนี้ว่า Bare Metal Hypervisor หรือไม่ก็ Embedded Hypervisor นั่นเอง นั่นส่งผลให้การทำงานสามารถทำได้ไวขึ้น รองรับการทำงานในสเกลใหญ่ ๆ ได้ดีขึ้นทั้งในด้านการบริหารจัดการ และประสิทธิภาพการทำงาน รวมไปถึงเรื่องของระบบรักษาความปลอดภัยที่มักจะออกแบบมาให้ถึกทนยิ่งกว่า Type 2 เสียอีก นั่นเพราะ Type 1 มันถูกออกแบบมาเพื่องานที่เป็น Mission Critical หรือพูดง่าย ๆ คืองานที่สำคัญมาก ๆ ล่มไม่ได้นั่นเอง ข้อเสียก็ไม่แน่ใจว่ามันคือข้อเสียรึเปล่าคือ มันติดตั้งยากกว่าอีกประเภทนึง ก็แหงแหละ มันไม่ได้ออกแบบมาสำหรับผู้ใช้ทั่ว ๆ ไปนี่หว่า และราคาก็แพงกว่าด้วย ฮ่า ๆ ซึ่ง Hypervisor พวกนี้ก็ผลิตออกมามากมายอาธิเช่น VMware ESXi และ Xen
ลองเดากันดูมั้ยฮ่ะ ว่า VM จะไม่เกิดขึ้นบนโลกเลย ถ้าเราไม่มีเทคโนโลยีอะไร ?
ลองนึกถึงเมื่อก่อนนานมาแล้วตอนคอมพิวเตอร์พึ่งเกิด ตอนนั้น เครื่องคอมพิวเตอร์ไม่ได้ทำงานได้หลายอย่างพร้อม ๆ กันเหมือนปัจจุบัน ทำได้แค่ป้อนที่ละโปรแกรมแล้วมันก็อ่านคำสั่งทีละบรรทัดและทำเรียงไปเรื่อย ๆ จนจบโปรแกรม
ด้วยเทคโนโลยีในปัจจุบัน เราทำให้คอมพิวเตอร์สามารถคิดอะไรได้พร้อม ๆ กันได้ โดยอาศัยหลักการที่เรียกว่า Context Switch หลักการนี้แนวคิดของมันคือ การพับงานที่มันทำอยู่ไว้ในหน่วยความจำ แล้วไปทำงานอื่นก่อน แล้วค่อยสูบงานเก่าจากหน่วยความจำขึ้นมาทำต่อได้ ตัวอย่างเช่น ระหว่างที่เครื่องกำลังทำงานอะไรบางอย่างอยู่ เรากดปุ่มบน Keyboard ไป เครื่องจะบอกว่า สัญญาณจากปุ่ม Keyboard สำคัญที่สุดจัดการมันก่อน เครื่องก็จะต้องพับงานที่เราสั่งไว้ก่อนหน้านี้มาจัดการกับสัญญาณที่ได้จาก Keyboard อย่างเช่นการทำให้หน้าจอขึ้นตัวอักษรที่เรากดลงไปบนจอ และเอางานที่ทำก่อนหน้านี้ขึ้นมาทำต่อ ด้วยหลักการนี้ก็ทำให้ ดูเผิน ๆ แล้วคล้ายกับเราได้เครื่องที่กทำได้หลายงานพร้อม ๆ กันแล้วใช่ม่ะ ! แต่สุดท้ายมันก็ปลอมม่ะ เพราะสุดท้ายแล้วเครื่องก็ต้องหยุดอีกงานเพื่อมาทำอีกงานอยู่ดี
เวลาถัดมาด้วยความก้าวหน้าทางวิศวะกรรมอิเล็กทรอนิค ทำให้โลกเราได้รู้จักกับสิ่งที่ว่า Multi-core Processor หรือหน่วยประมวลผลที่มีหลาย ๆ หัวนั่นเอง ยิ่งจำนวนหัวเยอะเท่าไหร่ ก็คล้ายกับเรามีคนช่วยคิดมากขึ้นนั่นเอง นั่นหมายความว่า เครื่องสามารถทำงานหลายอย่างได้พร้อม ๆ กันจริง ๆ เสียที ที่ในปัจจุบัน CPU ที่เราใช้ตามบ้านก็ไปกันถึง 16C/32T กันไปแล้ว หรือ Server ก็ล่อกันไป 20C/40T กันไปเลย ชิค ๆ
ถามว่า ที่เล่ามาเกี่ยวอะไรกับ VM ?? คำตอบคือ การรัน VM คือการทำงานหลาย ๆ อย่างพร้อม ๆ กันแน่นอน แม้แต่เราจะบอกว่า เรารันแค่เครื่องเดียว เพราะสุดท้าย การที่เราจะสร้างเครื่องจำลองแบบนี้ขึ้นมาได้ มันก็ต้องอาศัยโปรแกรมอื่นทำงานไปพร้อม ๆ กันนั่นเอง ดังนั้น Key Technology ที่เรามองว่า ถ้าไม่มี VM จะเกิดได้ยากมากก็คือ ความสามารถที่เครื่องจะทำงานหลาย ๆ งานพร้อม ๆ กันได้ในเวลาเดียวกันนั่นเอง
อาจจะยังนึกภาพไม่ออกว่าเป็นยังไง ตัวอย่างเช่น ในองค์กรบางที่ก็อาจจะมีความต้องการใช้เครื่องคอมพิวเตอร์ที่มีประสิทธิภาพสูง เช่น ด้านงานวิจัย แต่ถ้าเราจะซื้อเครื่องที่สเปกสูงขนาดนี้ให้กับนักวิจัยทุกคนดูน่าจะเป็นการลงทุนที่สูงอยู่ แต่ถ้าเราซื้อเครื่องที่สเปกสูงปรี๊ดไว้เครื่องเดียวเลย แล้วให้แต่ละคนแบ่งกันใช้ น่าจะเป็นทางเลือกที่ถูกกว่าการซื้อเครื่องโหด ๆ ให้ทุกคน และยังมีเคสที่บางคนบางเวลาต้องการพลังการประมวลผลที่สูงมาก ๆ ถ้าเราซื้อเครื่องให้ทุกคน เมื่อมีความต้องการแบบนี้นั่นหมายความว่า เราต้องซื้อ CPU อันใหม่มาเปลี่ยน แต่ถ้าเป็น VM ก็อาจจะไปปรับลดประสิทธิภาพของเครื่องอื่นแล้วเอามาเพิ่มให้กับเครื่องที่ต้องการชั่วคราวได้ ทำให้เกิดการบริการจัดการทรัพยากรการประมวลผลได้อย่างมีประสิทธิภาพมากขึ้น ในราคาที่ถูกลงนั่นเอง
หรือในฝั่งองค์กรที่การมีเครื่องคอมพิวเตอร์ที่มากขึ้นนั่นหมายความว่า องค์กรจะต้องเสียค่าใช้จ่ายในการดูแลเครื่องมากขึ้น กับในองค์กรใหญ่ ๆ ที่มีเครื่องเป็นจำนวนมาก การนั่ง Update การจัดการต่าง ๆ น่าจะทำได้ยากมาก ๆ เพราะต้องวิ่งไล่ไปทำทีละเครื่อง หรือไม่ก็ Remote เข้าไปทีละเครื่อง แต่ด้วย VM ทำให้ผู้ดูแลสามารถที่จะ Deploy Update ใหม่ให้กับทุกคนพร้อม ๆ กันได้ง่าย และใช้เวลาอันสั้น นั่นหมายความว่า ค่าใช้จ่ายที่ลดลงนั่นเอง หรือแม้แต่การ Backup ก็ยังทำได้ง่ายมาก เผื่อเครื่องหลักที่ทุกคนใช้ทำงานเกิดมาปัญหา Hypervisor บางตัวก็จะมี Feature ที่เป็น High Availability (HA) ที่จะเหมือนมีเครื่องสำรองอีกเครื่องที่เหมือนเครื่องหลักเป๊ะ พอเครื่องหลักมีปัญหาทุกคนก็ยังทำงานได้อยู่ เพราะจะไปใช้อีกเครื่อง ทำให้การทำงานไม่สะดุดนั่นเอง
ที่ว่ามามันเป็นระดับองค์กร แล้วเราละ ?? ก็ง่าย ๆ เลยนะ มันทำให้เราสามารถรันโปรแกรมที่ไม่ได้รองรับใน OS ที่เรากำลังใช้งานอยู่ พูดให้ง่ายกว่านั้นคือ อยากรันโปรแกรมที่อยู่บน Linux เท่านั้อะ แต่กำลังใช้ macOS อยู่ และต้องใช้โปรแกรมบน macOS ไปพร้อม ๆ กัน นี่แหละ VM จะเข้ามาช่วยตรงนี้แหละ ไม่งั้นเราก็ต้องซื้อคอม 2 เครื่องก็ย่อมแพงกว่าแน่นอน !
Virtual Machine หรือ VM เป็นอะไรที่เข้ามาทำให้ชีวิตเราง่ายขึ้นมาก ๆ ตั้งแต่ชีวิตประจำวันของเรา จนไปถึงองค์กรใหญ่ ๆ ที่สามารถลดเวลา และต้นทุนในการทำงานได้มหาศาลถ้าบริหารจัดการเป็น เรามองว่ามันเป็นอะไรที่ค่อนข้างเปลี่ยนการทำงานในด้านธุรกิจไปพอสมควรเลย จากที่ต้องซื้อเครื่อง แล้ววิ่งไล่บำรุงรักษา กลายเป็นทุกคนใช้ Image เดียวกัน แล้วพอมี Update ก็ Deploy Image ใหม่ใส่ลงไปทุกคนก็จะอัพเดทเหมือนกันเรียบร้อย ง่ายกว่าเดิมเยอะ ทุกคนคิดว่า VM มันมีข้อดี ข้อเสีย หรือประโยชน์อย่างไรก็ลอง Comment มาคุยกันได้ สำหรับวันนี้มาไม่ยาวมาก สวัสดี ~
ปล. รูปวาดเอง มันจะกาก ๆ หน่อย ยังหาวิธีทำดี ๆ ไม่ได้ ถ้ามีก็แนะนำหน่อย ตกสกิลการทำ Graphic อย่างรุนแรง
เคยสงสัยกันมั้ยว่า Filter ที่เราใช้เบลอภาพ ไม่ว่าจะเพื่อความสวยงาม หรืออะไรก็ตาม แท้จริงแล้ว มันทำงานอย่างไร วันนี้เราจะพาไปดูคณิตศาสตร์และเทคนิคเบื้องหลังกันว่า กว่าที่รูปภาพจะถูกเบลอได้ มันเกิดจากอะไร...
หลังจากดูงาน Google I/O 2024 ที่ผ่านมา เรามาสะดุดเรื่องของการใส่ Watermark ลงไปใน Content ที่ Generate จาก AI วันนี้เราจะมาเล่าให้อ่านกันว่า วิธีการทำ Watermark ใน Content ทำอย่างไร...
ก่อนหน้านี้เราทำ Content เล่าความแตกต่างระหว่าง CPU, GPU และ NPU ทำให้เราเกิดคำถามขึ้นมาว่า เอาเข้าจริง เราจำเป็นต้องมี NPU อยู่ในตลาดจริง ๆ รึเปล่า หรือมันอาจจะเป็นแค่ Hardware ตัวนึงที่เข้ามาแล้วก็จากไปเท่านั้น วันนี้เราจะมาเล่าให้อ่านกัน...
บทความนี้ เราเขียนสำหรับมือใหม่ หรือคนที่ไม่ได้เรียนด้านนี้แต่อยากรู้ละกัน สำหรับวันนี้เรามาพูดถึงคำที่ถ้าเราทำงานกับพวก Developer เขาคุยกันบ่อย ๆ ใช้งานกันเยอะ ๆ อย่าง Database กันว่า มันคืออะไร ทำไมเราต้องใช้ และ เราจะมีตัวเลือกอะไรในการใช้งานบ้าง...