Trước khi bắt đầu, tôi phải cảnh báo: nếu bạn cố gắng sử dụng Xen mà không có ảo hóa phần cứng, hành trình của bạn sẽ gặp rất nhiều vấn đề. Đây là gợi ý không quá tinh tế rằng bạn không nên thử Xen nếu không có CPU hiện đại với các mở rộng ảo hóa. Khác biệt hoàn toàn so với các giải pháp dành cho gia đình như VirtualBox hay VMware Player, nhưng Xen nhắm đến một phân khúc thị trường hoàn toàn khác.
Nhưng nếu bạn cứng đầu như tôi và muốn chinh phục thế giới với các hướng dẫn, bạn sẽ thử ảo hóa paravirtualization của Xen và thất bại. Rào cản lớn nhất là làm cho các máy khách Xen khởi động từ CD và ảnh CD để bắt đầu cài đặt. Mạng ảo hóa paravirtualized cũng không dễ dàng chút nào. Hôm nay, tôi sẽ cố gắng làm cho mọi thứ đơn giản hơn. Nhấn mạnh vào từ "cố gắng".
Chúng ta sẽ tìm hiểu các vấn đề gặp phải, các triệu chứng, cách khắc phục (nếu có), cách làm việc với kernel và initrd ảo hóa paravirtualized, cũng như cách cấu hình bộ điều hợp mạng cầu (bridged) cho các máy khách. Tất cả những điều này và nhiều hơn nữa, bao quanh bởi sự không chắc chắn. Hãy theo chân tôi.

Tại sao ảo hóa paravirtualization có thể gây khó khăn
Dưới đây là giải thích chính thức:
Ảo hóa paravirtualization là một kỹ thuật ảo hóa hiệu quả và nhẹ được giới thiệu bởi Xen, sau đó được áp dụng bởi các giải pháp ảo hóa khác. Paravirtualization không yêu cầu các mở rộng ảo hóa từ CPU host. Tuy nhiên, các máy khách ảo hóa paravirtualized yêu cầu kernel đặc biệt được port để chạy nguyên sinh trên Xen, vì vậy các máy khách nhận biết hypervisor và có thể chạy hiệu quả mà không cần mô phỏng hoặc phần cứng ảo hóa mô phỏng.
Nhấn mạnh vào cụm từ "máy khách yêu cầu kernel đặc biệt". Nếu bạn không biết điều này là gì hoặc cách lấy được nó, bạn sẽ phải làm việc rất chăm chỉ để mọi thứ hoạt động. Đáng chú ý nhất, bạn sẽ gặp vấn đề khi cố gắng khởi động từ ảnh CD trực tiếp, vốn là bước đầu tiên trong cài đặt hệ thống.
Khởi động từ CD hoặc ảnh ISO
Vấn đề bắt đầu khi bạn cố gắng thiết lập máy ảo mới. Giống như chúng ta đã làm hàng triệu lần trước đây, chúng ta muốn máy khách khởi động từ CD trước.


Nhưng sau đó bạn nhận được loại lỗi xấu xí này, ngay cả khi bạn thử sử dụng ISO:


Nếu bạn tìm kiếm trên Internet, bạn sẽ tìm thấy bảy triệu công thức cho bạn biết cách này có thể hoặc không thể thực hiện. Nhưng nó không bao giờ là một dòng lệnh đơn giản, không bao giờ plug-and-play. Các giải pháp phổ biến nhất dao động giữa việc trích xuất ảnh và tải lên máy chủ HTTP và gắn ảnh như thiết bị loopback.
P.S. Hãy xem phần "Đọc thêm" bên dưới. Tài liệu tham khảo giải thích tại sao Ubuntu, mà chúng ta đã chọn để kiểm tra ở trên, thực sự không khởi động được như một máy khách paravirtualized mà không cần công sức và sửa đổi thêm.
Vậy bạn nên làm gì?
Thứ nhất, không làm gì cả. Ít trong số các phương pháp được đề xuất dễ dàng triển khai. Và chúng không thực sự hoạt động. Những gì bạn cần làm là kiểm tra thông báo lỗi. Nhấp vào Details (Chi tiết) và hy vọng tốt nhất. Mô tả có thể hữu ích.
Không đi sâu vào tất cả các trường hợp có thể, các vấn đề chính với paravirtualization thu hẹp lại thành hai vấn đề cốt lõi: 1) bạn cần kernel và initrd phù hợp để khởi động hệ thống máy khách 2) giao diện mạng ảo hóa paravirtualized kém. Và sự kết hợp của hai yếu tố này sẽ ngăn cản bạn khởi động máy ảo từ CD/DVD.
Kernel & ảnh initrd
Với ảo hóa đầy đủ (full virtualization), mọi thứ khá đơn giản. Trong tệp cấu hình máy ảo, bạn cần chỉ định đúng các chỉ thị builder, kernel và boot. Kernel hvmloader luôn có sẵn, vì vậy bạn đã ổn định ở đó.

Không có kernel hoặc initrd nào cho các máy khách paravirtualized. Vì vậy bạn sẽ cần 즉흥 một chút. Khi bạn cố gắng khởi chạy máy ảo sau khi tạo nó bằng trình hướng dẫn GUI, bạn sẽ nhận được lỗi CD-ROM. Nhưng tệp cấu hình sẽ được ghi vào đĩa.
Đi đến thư mục /etc/xen/vm và mở tệp trong trình soạn thảo văn bản. Chú ý các dòng kernel và initrd, trỏ đến các ảnh kernel và initrd tạm thời dưới /tmp. Bạn có thể thay đổi hai mục này để trỏ đến các tệp kernel và initrd Xen vĩnh viễn, nhưng điều này có thể rắc rối, vì bạn có thể cần tải xuống riêng hoặc tự xây dựng chúng. Bạn cũng có thể muốn kiểm tra nội dung của ảnh CD và tìm nội dung liên quan đến xen, sau đó sao chép và sử dụng để khởi động máy khách. Đây là một ví dụ:

Bạn cũng có thể sử dụng chỉ thị bootloader với các đối số phù hợp, nhưng lần nữa, đây là một quá trình mệt mỏi, vì mỗi máy ảo sẽ yêu cầu một tập hợp con khác nhau. Tuy nhiên, đối với hầu hết các máy khách Linux, điều sau đây nên hoạt động, với một "có thể" lớn ngầm hiểu:
bootloader = '/usr/lib/xen/boot/domUloader.py'
bootentry = '--entry-=xvda1:/boot/vmlinuz-xen,/boot/initrd-xen'
Bạn đương nhiên sẽ cần điều chỉnh thiết bị ảo từ xvda1 thành bất kỳ thứ gì bạn đang sử dụng trong thiết lập của mình. Đây là một thủ đoạn xấu xí và không nhất thiết sẽ hoạt động.
Giao diện mạng ảo hóa paravirtualized
Rào cản khác là chỉ thị vif. Các máy khách Xen paravirtualized có thể không thích thiết lập của bạn. Lý do là bạn không thể sử dụng trực tiếp các bộ điều hợp mạng của mình mà không cầu nối (bridge) chúng. Bạn sẽ không thể sử dụng các thiết bị như eth0 hay wlan0, bạn sẽ phải sử dụng xenbr0 hoặc br0 và các loại tương tự. Nếu bạn cố gắng khởi động máy ảo từ dòng lệnh, thông báo lỗi sẽ rõ ràng:

Làm giải pháp thay thế tạm thời, xóa hoặc comment chỉ thị và máy ảo của bạn nên khởi động. Lại một lần nữa, không giống như hầu hết các hướng dẫn của tôi, sử dụng "có" khẳng định, ở đây chúng ta đang đối mặt với "có thể" gây bực bội. Thay thế vif chung bằng bất kỳ loại chỉ thị nào bạn có trong tệp cấu hình.
#vif=['',]
Và rồi bảng điều khiển thần kỳ:


Và bạn sẽ gặp vấn đề mạng sớm hay muộn:
Nói chung, bạn có thể làm được mà không cần mạng, nhưng điều này hầu như vô dụng, vì chúng ta muốn có kết nối cho các máy khách. Do đó, bạn sẽ cần cầu nối các bộ điều hợp. Một số giao diện mạng của bạn có thể không hỗ trợ cầu nối, vì vậy hãy cân nhắc điều đó.


Lại một lần nữa, điều này có thể giúp ích hoặc không. Không có đảm bảo nào. Ví dụ, bạn có thể bị đen đủy và thấy loại thông báo này nói với bạn: bạn nên từ bỏ ngay bây giờ. Hoặc bạn có thể thử tạo cầu nối thủ công bằng tiện ích brctl.
Chúng ta có gì ở đây?
Hướng dẫn này hơi rối, nên hãy xem chúng ta đã có gì cho đến nay. Bạn có hai vấn đề cốt lõi: một, bootloader/kernel cho máy khách của bạn; hai, giao diện mạng. Chạy ở chế độ paravirtualized, Xen yêu cầu các tệp kernel và initrd phù hợp cho máy khách của bạn được đặt ở đâu đó trên đĩa. Nó cũng yêu cầu các bộ điều hợp mạng được cầu nối.
Bạn có thể giải quyết vấn đề đầu tiên bằng cách để trình hướng dẫn máy ảo tạo các mục tạm thời cho bạn trên ổ cứng, nhưng điều này chỉ hoạt động đối với một số loại hệ điều hành máy khách. Ví dụ, Scientific Linux 6, dựa trên RedHat 6, hỗ trợ rõ ràng loại này, vì vậy bạn may mắn. Xem bên dưới để biết thêm chi tiết. Thay vào đó, bạn có thể đặt thủ công kernel và initrd Xen phù hợp ở đâu đó trên ổ cứng. Là tùy chọn cuối cùng, bạn cũng có thể sử dụng bootloader trực tiếp, cũng với các tệp phù hợp.
Vấn đề thứ hai cần một bước thêm; bạn phải cấu hình cầu nối mạng. Bạn có thể cầu nối cả bộ điều hợp dây và không dây, tuy nhiên một số phần cứng có thể không hỗ trợ điều này.
Dù vậy, mọi thứ vẫn có thể không hoạt động. Và có thể là sẽ không. Kết luận, Xen paravirtualization là một nỗi đau; tốt nhất nên tránh. Nếu so sánh độ khó để chạy máy ảo theo cách này so với hầu hết các giải pháp thay thế, câu trả lời khá rõ ràng.
Đọc thêm
Nếu bạn vẫn dũng cảm sau hướng dẫn này, bạn có thể muốn đọc thêm một vài bài viết trình bày các giải pháp có thể để khởi động máy khách từ CD-ROM. Hay đúng hơn, cho bạn thấy tại sao nó không hoạt động và tại sao bạn không nên phiền toái.
Hỗ trợ Xen domU - Các lựa chọn phổ biến như Ubuntu và Fedora là không thể, cho đến nay
Cách khởi động SLES para-virtual domU như hệ thống cứu hộ
Kết luận
Làm việc với Xen ở chế độ paravirtualized không phải là nhiệm vụ dễ dàng. Tùy thuộc vào mức độ tiên tiến của hệ thống máy khách trong việc hỗ trợ para-domU, bạn có thể may mắn và khởi động từ CD hoặc ảnh ISO. Nhưng bạn cũng sẽ yêu cầu mạng được cầu nối, điều này có thể không luôn hoạt động, đặc biệt với bộ điều hợp không dây.
Hơn nữa, bạn có thể cần săn tìm các tệp kernel và initrd Xen cho hệ thống máy khách của mình, thậm chí biên dịch phiên bản tùy chỉnh của riêng bạn. Loại công việc này quá nhiều đối với hầu hết mọi người, cả về kỹ năng, kiên nhẫn và chi phí quản trị, đặc biệt là vì các giải pháp ảo hóa khác cung cấp nhiều hơn mà không cần vất vả.
Hy vọng hướng dẫn này làm rõ sương mù một chút. Máy chủ web, thiết bị loopback, ổ vật lý, không có sự khác biệt. Bạn cần các ảnh kernel và initrd đặc biệt và mạng được cầu nối. Bạn có thể may mắn và có các máy khách hỗ trợ ảo hóa paravirtualization domU. Nếu không, bạn sẽ gặp rất nhiều rắc rối. Lời khuyên chân thành của tôi là, tránh nếu có thể, hãy chọn các giải pháp thay thế. Tuy nhiên, ở chế độ ảo hóa phần cứng đầy đủ, Xen lại khá tuyệt vời.
Chúc vui.