Máy ảo hoạt động trên máy chủ vật lý như thế nào?
- Máy ảo và máy chủ vật lý có mối quan hệ như thế nào?
- Hypervisor làm gì để nhiều máy ảo cùng chạy trên một máy chủ?
- CPU được chia sẻ giữa các máy ảo như thế nào?
- RAM của máy chủ được phân bổ cho máy ảo ra sao?
- Ổ đĩa và mạng được ảo hóa như thế nào?
- Điều gì xảy ra khi nhiều máy ảo cùng tăng tải?
- Vì sao các máy ảo vẫn có thể hoạt động độc lập?
- Máy ảo khác máy vật lý ở điểm nào?
- Khi nào việc chia sẻ tài nguyên có thể trở thành vấn đề?
Cơ chế đứng phía sau là hypervisor. Thành phần này nằm giữa phần cứng vật lý và các máy ảo, chịu trách nhiệm tạo môi trường cô lập, ánh xạ tài nguyên vật lý thành tài nguyên ảo và điều phối việc sử dụng CPU, bộ nhớ, thiết bị lưu trữ và mạng. Vì vậy, một máy chủ có thể đồng thời chạy nhiều máy ảo thay vì dành toàn bộ phần cứng cho một hệ điều hành duy nhất.
Máy ảo không phải là một máy tính vật lý thu nhỏ nằm bên trong máy chủ. Nó là một môi trường thực thi được hypervisor cung cấp một góc nhìn phần cứng ảo. Hệ điều hành khách hoạt động dựa trên góc nhìn đó, còn hypervisor quyết định các yêu cầu của máy ảo sẽ được thực hiện trên phần cứng vật lý như thế nào.
Máy ảo và máy chủ vật lý có mối quan hệ như thế nào?
Trong một hệ thống ảo hóa cơ bản có ba thành phần chính:
· Máy chủ vật lý (host): Cung cấp CPU, RAM, ổ lưu trữ, thiết bị mạng và các phần cứng khác
· Hypervisor: Quản lý và phân phối tài nguyên vật lý cho các môi trường ảo
· Máy ảo (guest): Môi trường chạy hệ điều hành và ứng dụng riêng
Ví dụ, một máy chủ vật lý có 16 lõi CPU và 64 GB RAM có thể được dùng để chạy nhiều máy ảo. Mỗi VM được cấu hình một số lượng vCPU và một lượng RAM riêng, chẳng hạn VM A có 4 vCPU và 16 GB RAM, VM B có 2 vCPU và 8 GB RAM.
Điểm quan trọng là vCPU không phải một lõi CPU vật lý riêng biệt. Nó là bộ xử lý logic mà hypervisor lập lịch chạy trên các bộ xử lý vật lý. Tương tự, RAM mà VM nhìn thấy là không gian bộ nhớ ảo được ánh xạ tới bộ nhớ vật lý.
Do đó, cấu hình của các VM không đơn giản là việc “chia đều” phần cứng. Hypervisor phải liên tục điều phối tài nguyên theo trạng thái và nhu cầu của từng máy ảo.

Hypervisor làm gì để nhiều máy ảo cùng chạy trên một máy chủ?
Hypervisor là lớp kiểm soát trung tâm của hệ thống ảo hóa. Nó tạo ra các môi trường thực thi được cô lập và kiểm soát quyền truy cập của chúng vào phần cứng bên dưới.
Có hai mô hình hypervisor phổ biến:
· Type 1: Chạy trực tiếp trên phần cứng máy chủ, thường dùng trong môi trường máy chủ và trung tâm dữ liệu
· Type 2: Chạy bên trên một hệ điều hành chủ, thường gặp trên máy tính cá nhân dùng để thử nghiệm hoặc phát triển
Trong môi trường máy chủ, Type 1 thường được sử dụng vì kiến trúc của nó phù hợp với việc quản lý nhiều VM và tài nguyên phần cứng ở quy mô lớn.
Khi một VM yêu cầu thực hiện một thao tác liên quan đến CPU, bộ nhớ hoặc thiết bị I/O, hypervisor và lớp ảo hóa liên quan sẽ xử lý yêu cầu đó thay vì để VM tự do truy cập trực tiếp vào toàn bộ phần cứng. Cơ chế này vừa tạo sự cô lập vừa cho phép nhiều VM dùng chung một máy chủ.
Phần cứng hiện đại còn hỗ trợ các cơ chế như Intel VT-x, AMD-V và SLAT để giảm chi phí của quá trình ảo hóa. Nhờ vậy, VM có thể thực thi nhiều thao tác với hiệu năng gần với môi trường vật lý trong những trường hợp phù hợp.
CPU được chia sẻ giữa các máy ảo như thế nào?
CPU là tài nguyên được hypervisor phân phối theo cơ chế lập lịch.
Một VM có thể được cấp nhiều vCPU. Khi hệ điều hành khách cần CPU, các vCPU đó được hypervisor lập lịch lên các logical processor của máy chủ vật lý.
Ví dụ, máy chủ có 8 logical processor nhưng đang chạy ba VM:
· VM A: 4 vCPU
· VM B: 2 vCPU
· VM C: 2 vCPU
Điều này không nhất thiết có nghĩa mỗi VM được “sở hữu” cố định số lõi tương ứng. Khi tải thay đổi, hypervisor có thể phân bổ thời gian xử lý cho các vCPU dựa trên cấu hình, mức ưu tiên và nhu cầu thực tế.
Đây là lý do có thể tồn tại tình trạng overcommit CPU: tổng số vCPU được cấu hình cho các VM có thể lớn hơn số logical processor vật lý. Cách làm này có thể tăng mức sử dụng phần cứng khi các VM không đồng thời sử dụng CPU tối đa, nhưng nếu tải thực tế cùng tăng cao, tranh chấp CPU sẽ xuất hiện và hiệu năng có thể giảm.
Vì vậy, “có 4 vCPU” không nên được hiểu là “có 4 lõi vật lý dành riêng”.
RAM của máy chủ được phân bổ cho máy ảo ra sao?
Bộ nhớ có cơ chế ánh xạ phức tạp hơn việc chỉ chia RAM thành các phần cố định.
VM nhìn thấy một không gian địa chỉ bộ nhớ riêng. Hypervisor quản lý mối quan hệ giữa địa chỉ mà hệ điều hành khách sử dụng và địa chỉ bộ nhớ thực tế trên máy chủ.
Với phần cứng hỗ trợ dịch địa chỉ, các công nghệ như Second Level Address Translation (SLAT) giúp tăng hiệu quả quá trình ánh xạ này.
Tùy nền tảng ảo hóa, máy chủ còn có thể sử dụng các cơ chế quản lý bộ nhớ động hoặc overcommit. Chẳng hạn, một VM có thể được phép sử dụng lượng RAM thay đổi theo nhu cầu trong giới hạn cấu hình.
Tuy nhiên, overcommit không tạo ra RAM vật lý mới. Nếu tổng nhu cầu bộ nhớ thực tế của các VM vượt quá khả năng đáp ứng của máy chủ, hypervisor hoặc hệ điều hành có thể phải sử dụng các cơ chế giảm áp lực bộ nhớ, chẳng hạn paging, và hiệu năng có thể suy giảm đáng kể.
Vì vậy, RAM là một trong những tài nguyên cần theo dõi chặt chẽ nhất khi hợp nhất nhiều VM lên cùng một máy chủ.
Ổ đĩa và mạng được ảo hóa như thế nào?
Không chỉ CPU và RAM được ảo hóa. Máy ảo còn được cung cấp các thiết bị I/O ảo.
Lưu trữ
Một VM thường nhìn thấy một hoặc nhiều ổ đĩa ảo. Từ góc nhìn của hệ điều hành khách, đây có thể là một thiết bị lưu trữ bình thường.
Ở phía máy chủ, dữ liệu của ổ đĩa ảo có thể được lưu dưới dạng một tệp hoặc một cấu trúc lưu trữ khác tùy nền tảng. Khi VM đọc hoặc ghi dữ liệu, yêu cầu I/O được chuyển qua lớp ảo hóa tới hệ thống lưu trữ vật lý.
Một số nền tảng cung cấp thiết bị ảo hiệu năng cao để giảm overhead so với mô phỏng hoàn toàn thiết bị phần cứng.
Mạng
VM thường có một virtual network adapter kết nối vào virtual switch.
Virtual switch hoạt động tương tự một switch mạng bằng phần mềm. Nó có thể cho phép:
· VM giao tiếp với VM khác trên cùng máy chủ
· VM giao tiếp với hệ điều hành hoặc các mạng nội bộ theo cấu hình
· VM truy cập mạng vật lý bên ngoài thông qua card mạng của máy chủ
Như vậy, một card mạng vật lý có thể phục vụ nhiều VM thông qua lớp mạng ảo, trong khi mỗi VM vẫn nhìn thấy một giao diện mạng riêng.
Điều gì xảy ra khi nhiều máy ảo cùng tăng tải?
Đây là lúc cơ chế chia sẻ tài nguyên trở nên rõ ràng nhất.
Giả sử một máy chủ có 64 GB RAM và nhiều VM đang hoạt động bình thường. Khi một VM chạy ứng dụng nặng, nhu cầu CPU hoặc RAM của nó tăng lên. Hypervisor phải tiếp tục cân bằng nhu cầu này với nhu cầu của các VM khác.
Có ba trường hợp quan trọng:
Tài nguyên còn dư: VM có thể tăng mức sử dụng mà không ảnh hưởng đáng kể đến các VM khác
Tài nguyên bắt đầu cạnh tranh: Các VM phải tranh giành CPU, RAM hoặc băng thông I/O, khiến độ trễ tăng hoặc hiệu năng giảm
Tài nguyên bị thiếu nghiêm trọng: Máy chủ trở thành nút thắt cổ chai; việc tăng thêm VM hoặc tăng tải có thể làm hiệu năng của nhiều VM cùng suy giảm
Vì vậy, số lượng VM mà một máy chủ có thể chạy không thể xác định chỉ bằng cách đếm CPU hoặc RAM. Khả năng thực tế phụ thuộc vào kiểu workload, mức sử dụng đồng thời, I/O, yêu cầu hiệu năng và chính sách phân bổ tài nguyên.
Vì sao các máy ảo vẫn có thể hoạt động độc lập?
Mỗi VM có hệ điều hành, không gian bộ nhớ và thiết bị ảo riêng. Hypervisor kiểm soát việc VM nào được phép truy cập tài nguyên nào.
Sự cô lập này khiến một VM không đơn giản nhìn thấy toàn bộ bộ nhớ hoặc thiết bị của VM khác. Các yêu cầu truy cập phần cứng cũng được kiểm soát thông qua lớp ảo hóa.
Tuy nhiên, cô lập không có nghĩa là hiệu năng hoàn toàn độc lập. Các VM vẫn chia sẻ những tài nguyên vật lý chung. Nếu một VM tạo ra tải CPU, RAM, lưu trữ hoặc mạng rất lớn, các VM khác có thể chịu ảnh hưởng ở cấp độ hiệu năng dù vẫn được cô lập về mặt thực thi.
Đây là điểm quan trọng để phân biệt hai khái niệm:
· Isolation: Ngăn các VM truy cập tùy ý vào tài nguyên của nhau
· Resource contention: Các VM vẫn cạnh tranh về tài nguyên vật lý chung
Máy ảo khác máy vật lý ở điểm nào?
Điểm khác biệt cốt lõi nằm ở cách phần cứng được cung cấp.
Máy vật lý có phần cứng thực tế gắn trực tiếp với hệ điều hành. Ngược lại, máy ảo nhìn thấy một tập hợp phần cứng được ảo hóa và do hypervisor quản lý.
Điều này tạo ra một số đặc điểm:
· VM có thể được tạo, xóa và cấu hình bằng phần mềm
· Nhiều VM có thể cùng sử dụng một máy chủ vật lý
· Tài nguyên có thể được điều chỉnh mà không nhất thiết thay đổi phần cứng vật lý
· VM có thể được sao lưu, nhân bản hoặc di chuyển tùy nền tảng và kiến trúc
· Hiệu năng phụ thuộc không chỉ vào cấu hình VM mà còn vào mức tải của máy chủ vật lý và các VM khác
Ngược lại, máy vật lý thường có tài nguyên phần cứng dành riêng hơn, nhưng việc mở rộng hoặc thay đổi cấu hình thường gắn với việc thay đổi phần cứng thực tế.
Khi nào việc chia sẻ tài nguyên có thể trở thành vấn đề?
Ảo hóa giúp tăng mức sử dụng phần cứng, nhưng không loại bỏ giới hạn vật lý.
Một máy chủ vẫn chỉ có một lượng CPU, RAM, băng thông lưu trữ và băng thông mạng hữu hạn. Nếu cấu hình quá nhiều VM hoặc cho phép overcommit quá mức, hệ thống có thể gặp:
· CPU contention
· Thiếu RAM
· I/O storage bottleneck
· Network congestion
· Tăng latency
· Giảm throughput
· Hiệu năng VM không ổn định
Do đó, quản trị máy ảo không chỉ là tạo VM và cấp vCPU/RAM. Người quản trị còn phải quan sát mức sử dụng thực tế, xác định nút thắt cổ chai và điều chỉnh việc phân bổ tài nguyên theo workload.
Đặc biệt, không nên đánh giá sức chứa máy chủ chỉ bằng tổng tài nguyên được cấu hình cho VM. Một máy chủ có thể chứa nhiều VM về mặt cấu hình nhưng không đủ khả năng duy trì hiệu năng khi tất cả VM cùng hoạt động ở mức tải cao.
Tóm lại, máy ảo là một môi trường máy tính được hypervisor tạo ra trên phần cứng vật lý. Hypervisor cung cấp cho mỗi VM một tập tài nguyên ảo gồm CPU, bộ nhớ, lưu trữ và mạng, sau đó ánh xạ và điều phối các tài nguyên đó lên phần cứng thật. Nhờ cơ chế này, nhiều hệ điều hành có thể chạy độc lập trên cùng một máy chủ, nhưng vẫn phải chia sẻ giới hạn tài nguyên vật lý chung. Hiểu rõ mối quan hệ giữa tài nguyên ảo, tài nguyên vật lý và cơ chế lập lịch là chìa khóa để hiểu cách một máy chủ có thể vận hành nhiều máy ảo đồng thời.
Hỏi đáp về máy ảo
Một máy chủ vật lý có thể chạy bao nhiêu máy ảo?
Không có một con số cố định. Khả năng thực tế phụ thuộc vào CPU, RAM, lưu trữ, mạng, loại workload và mức tải đồng thời của các VM. Một máy chủ có thể chạy nhiều VM nhẹ hơn đáng kể so với số lượng VM chạy các ứng dụng tiêu thụ nhiều CPU, RAM hoặc I/O.
vCPU có phải là CPU vật lý không?
Không. vCPU là bộ xử lý ảo được hypervisor lập lịch chạy trên các logical processor của máy chủ vật lý. Số vCPU của VM không đồng nghĩa với số lõi vật lý được dành riêng cho VM đó.
Nếu một máy ảo bị quá tải thì các máy ảo khác có bị ảnh hưởng không?
Có thể. VM vẫn được cô lập về quyền truy cập tài nguyên, nhưng các VM cùng chia sẻ tài nguyên vật lý. Nếu một VM tiêu thụ quá nhiều CPU, RAM, I/O hoặc băng thông mạng, nó có thể tạo ra tranh chấp và làm giảm hiệu năng của các VM khác.
Máy ảo có cần hệ điều hành riêng không?
Có. Một VM thông thường chạy một hệ điều hành khách riêng, chẳng hạn Windows hoặc Linux. Hệ điều hành đó tương tác với phần cứng ảo do hypervisor cung cấp thay vì trực tiếp quản lý toàn bộ phần cứng vật lý của máy chủ.
