AWS เพิ่มการรองรับ nested virtualization
(github.com/aws)- เมื่อ AWS SDK for Go v2 ได้รับการอัปเดต ก็มีการเพิ่ม ความสามารถในการรันเครื่องเสมือนอีกตัวภายในเครื่องเสมือน
- ฟีเจอร์ใหม่นี้ทำให้ สามารถรัน nested VM ได้แม้บน EC2 instance ที่ไม่ใช่ bare metal
- การขยาย การรองรับ nested virtualization บน AWS EC2 จะเป็นพื้นฐานที่ช่วยเพิ่ม การใช้ประโยชน์ของชั้น virtualization ในสภาพแวดล้อมการพัฒนาและการทดสอบ
1 ความคิดเห็น
ความเห็นจาก Hacker News
ก่อนหน้านี้ถ้าจะทำแบบนี้ต้องใช้ bare-metal instance ที่มีราคาแพง
อนึ่ง GCP รองรับ nested virtualization มานานแล้ว
การตั้งค่าสภาพแวดล้อมทดสอบหรือพัฒนาได้ง่ายก็เป็นข้อดีอีกอย่าง
nested virtualization ไม่ได้หมายถึงแค่ VM เต็มรูปแบบเท่านั้น
ในรีเจียน us-west-2 สามารถเห็นตัวเลือก “Nested Virtualization” ได้แล้ว และใช้งานได้กับ instance type M8id / C8id / R8id
สำหรับโซลูชัน sandbox แบบ micro-VM อย่าง E2B ที่ผมมีส่วนร่วมด้วย นี่เป็นข่าวใหญ่มาก
ตอนก่อนหน้านี้ที่ผมลอง nested virtualization รู้สึกว่ามันไม่ค่อยมีประโยชน์นอกจากระดับ PoC
มีโซลูชันคอนเทนเนอร์แบบอิง VM จำนวนมาก เช่น Kata Containers, gVisor, Firecracker
ตัวอย่างเช่น สามารถแยก pod ของ Kubernetes ในระดับ VM ได้
นอกจากนี้ยังทำให้ live migration ระหว่าง EC2 instance เป็นไปได้ จึงดูแลงานที่รันต่อเนื่องได้ง่ายขึ้น
ในสภาพแวดล้อม CI/CD ก็สะดวกขึ้นมาก เพราะสามารถ build และทดสอบ system image ได้โดยตรงบน EC2
GCP, VMWare, KVM ต่างก็มีความสามารถนี้มานานแล้ว เลยเสียดายที่ EC2 เพิ่งตามมาทันตอนนี้
มีประโยชน์อย่างยิ่งกับงานอย่าง network simulation ที่จำลองฮาร์ดแวร์เครือข่ายด้วย QEMU
ผมใช้สิ่งนี้บนฮาร์ดแวร์ผู้บริโภคทั่วไปที่บ้านผ่าน libvirt มานานแล้ว
เรียกได้ว่า AWS เพิ่งตามฟีเจอร์เก่า ๆ นี้ทัน
น่าจะมี MMU overhead ซ้อนกันหลายชั้น
งาน CPU ล้วนแทบไม่ต่าง แต่ IO อาจ แทบไม่ต่างเลยหรือแย่มากก็ได้ แล้วแต่วิธี implement
เหตุการณ์อย่าง trap/vmexit ต้องผ่านเพิ่มอีกหนึ่งชั้น
ไม่แน่ใจว่า implementation ของ AWS ใช้วิธีนี้หรือเปล่า