Giới thiệu
Máy ảo (VM) ảo hóa phần cứng của một máy tính vật lý (như CPU, RAM, lưu trữ) để cho phép nhiều hệ điều hành (OS) cách ly trên cùng một máy tính vật lý. Công nghệ này không chỉ giúp tối ưu hóa tài nguyên mà còn mang lại sự linh hoạt cho các lập trình viên và người dùng.
Lịch sử ngắn gọn
Trước thời đại máy tính cá nhân, máy tính thường là những hệ thống lớn (mainframe) được sử dụng tại các tổ chức lớn và trường học như MIT. Những máy tính này có rất nhiều tài nguyên, và để sử dụng tài nguyên một cách hiệu quả và giảm thời gian idle, Hệ thống Chia sẻ Thời gian Tương thích (CTSS) đã được giới thiệu.
- Vào đầu những năm 1960, các nhà nghiên cứu trong Dự án MAC của MIT đã giới thiệu CTSS. CTSS cho phép nhiều người dùng sử dụng cùng một máy tính vào cùng một thời điểm, tạo cho họ ảo giác rằng họ là người duy nhất có quyền truy cập vào máy tính đó. Nó cung cấp một số hình thức cách ly, bảo vệ các tệp cá nhân nhưng vẫn sử dụng chung ứng dụng và hệ điều hành trên máy.
- Trong những năm 1960, IBM đã giới thiệu CP-40, một dự án chia sẻ thời gian thử nghiệm, đã đặt nền tảng cho các máy ảo. Nó tiến xa hơn CTSS bằng cách sử dụng ảo hóa để cho người dùng ảo giác rằng họ có một máy tính riêng biệt. Người dùng có thể chạy nhiều phiên làm việc cách ly trên máy, mang lại cho họ kiểm soát, linh hoạt và sự cách ly cao hơn.
- Dựa trên thí nghiệm CP-40, IBM đã phát hành VM/370 vào tháng 8 năm 1972, trở thành hệ thống máy ảo thương mại đầu tiên. Điều này đánh dấu sự khởi đầu thực sự của ảo hóa như chúng ta biết ngày nay.
Khái niệm ảo hóa ban đầu từ VM/370 đã phát triển qua nhiều thập kỷ, cuối cùng trở thành nền tảng cho công nghệ hypervisor hiện nay.
Cách thức hoạt động
Máy ảo sử dụng những gì chúng ta gọi là hypervisor để tạo ra phần cứng ảo hóa cho phép các hệ điều hành chạy cách ly trên phần cứng của máy tính vật lý. Điều này cho phép các hệ điều hành khác nhau chạy trên phần cứng mà không biết rằng chúng không chạy trực tiếp trên máy vật lý. Quy trình này bao gồm 3 thành phần:
Thành phần
- Máy chủ (Host machine): Đây là máy tính vật lý cung cấp tài nguyên phần cứng.
- Máy khách (Guest machine): Đây là máy ảo sẽ chạy trên máy chủ.
- Hypervisor: Đây là phần mềm nằm giữa máy chủ và máy khách, hoạt động như một bộ dịch. Nó quản lý tài nguyên của máy chủ để phân phối cho các VM khách.
Quy trình
Giả sử hệ điều hành khách muốn ghi dữ liệu vào một tệp trong ổ đĩa ảo, nó sẽ phát sinh một syscall để thực hiện hành động, giống như trên một máy vật lý.
- Chặn yêu cầu: Hypervisor sẽ chặn yêu cầu từ máy khách.
- Dịch yêu cầu: Hypervisor sẽ dịch yêu cầu đến máy chủ. Trong trường hợp này, nó đảm bảo tệp mà máy khách đang cố gắng ghi vào được ánh xạ đến thư mục cụ thể trên ổ đĩa vật lý. Điều này bởi vì các máy ảo, cấu hình và ứng dụng của chúng đều tồn tại trong một thư mục cụ thể trên ổ đĩa của bạn. Nó cũng dịch các lệnh thành các hướng dẫn mà máy chủ có thể hiểu.
- Phân bổ tài nguyên: Hypervisor sẽ quản lý và phân bổ tài nguyên cho VM khách từ nhóm tài nguyên của máy chủ và đảm bảo mỗi VM được cách ly.
- Trả kết quả: Khi máy tính vật lý hoàn thành hành động, hypervisor sẽ dịch trở lại định dạng mà hệ điều hành khách có thể hiểu.
Các loại Hypervisors
Hypervisors có hai loại khác nhau dựa trên vị trí của chúng trên ngăn xếp.
- Loại 1 (Type 1): Hypervisor loại 1 chạy trực tiếp trên phần cứng mà không có hệ điều hành máy chủ truyền thống bên dưới. Điều này khiến nó nhanh và hiệu quả. Nó chủ yếu được sử dụng trong các trung tâm dữ liệu doanh nghiệp và môi trường đám mây. Ví dụ: VMware ESXi.
- Loại 2 (Type 2): Hypervisors loại 2 được cài đặt như một ứng dụng trên hệ điều hành của máy chủ. Điều này tạo ra một lớp bổ sung vì hypervisor phải dịch yêu cầu qua hệ điều hành máy chủ thay vì trực tiếp đến phần cứng. Điều này dễ dàng cài đặt và chủ yếu được các lập trình viên sử dụng để thử nghiệm trong một hệ điều hành khác và chơi đùa an toàn trong một hệ điều hành khác. Ví dụ: VirtualBox.
Tại sao bạn nên quan tâm?
Máy ảo rất hữu ích, chúng cung cấp sự cách ly, linh hoạt và khả năng di động. Đây là một số lý do bạn nên quan tâm:
Tạo môi trường thử nghiệm
Máy ảo tạo ra môi trường thử nghiệm tối ưu nếu bạn là lập trình viên hoặc người tò mò. Bạn có thể sử dụng nó để;
- thử nghiệm phần mềm không rõ nguồn gốc
- tùy chỉnh cấu hình hệ thống
- kiểm tra chương trình của bạn trên nhiều hệ điều hành
Chạy nhiều hệ điều hành
- Nếu bạn là người dùng Mac, tò mò về Linux, bạn có thể cài đặt nó trên một máy ảo mà không cần phải phân vùng đĩa.
- Bạn có thể thử nghiệm các ứng dụng cụ thể cho nền tảng mà không cần phải chuyển đổi hệ điều hành máy chủ.
Các thực tiễn tốt nhất
- Sao lưu định kỳ: Đảm bảo sao lưu các máy ảo của bạn thường xuyên để tránh mất mát dữ liệu.
- Giới hạn tài nguyên: Đặt giới hạn cho tài nguyên mà mỗi máy ảo có thể sử dụng để tránh tình trạng quá tải.
- Bảo mật: Thiết lập tường lửa và bảo mật cho các máy ảo của bạn, đặc biệt nếu chúng kết nối với Internet.
Những cạm bẫy thường gặp
- Thiếu tài nguyên: Nhiều máy ảo chạy trên cùng một máy chủ có thể dẫn đến thiếu hụt tài nguyên, làm giảm hiệu suất.
- Cấu hình sai: Nếu không cấu hình đúng, máy ảo có thể không hoạt động như mong đợi hoặc gây ra lỗi.
Mẹo hiệu suất
- Sử dụng ổ đĩa SSD: Cài đặt máy ảo trên ổ đĩa SSD sẽ cải thiện tốc độ truy cập và hiệu suất tổng thể.
- Tối ưu hóa cài đặt mạng: Đảm bảo cấu hình mạng cho máy ảo hiệu quả để giảm độ trễ.
Giải quyết sự cố
- Máy ảo không khởi động: Kiểm tra cấu hình và tài nguyên đã cấp phát cho máy ảo.
- Kết nối mạng không hoạt động: Kiểm tra cài đặt mạng và đảm bảo rằng máy ảo có địa chỉ IP hợp lệ.
Kết luận
Máy ảo là công nghệ phổ biến mặc dù có vẻ trừu tượng. Khi bạn tạo một phiên bản trên AWS, bạn đang tạo ra một máy ảo trên một trong những máy lớn của Amazon và bạn không đơn độc. Công nghệ máy ảo đã mở ra một con đường mới cho các container, một cách tiếp cận ảo hóa khác đã trở nên thiết yếu trong việc triển khai phần mềm hiện đại. Hãy áp dụng ảo hóa để tối ưu hóa quy trình phát triển và triển khai ứng dụng của bạn ngay hôm nay!