Chúng tôi đã có một hướng dẫn về một số sự cố Xen phổ biến có thể xảy ra khi bạn thử và kiểm tra Xen trong môi trường của mình. Loạt mẹo và thủ thuật đầu tiên tập trung vào các sự cố với màn hình, phiên bản Python và mô-đun, thay đổi tập lệnh trình bao bọc và chạy các lệnh rõ ràng cũng như các dịch vụ khắc phục sự cố.
Hôm nay, chúng ta sẽ tìm hiểu sâu hơn và cố gắng hiểu, khắc phục cũng như giải quyết một số sự cố khác mà bạn có thể đã hoặc chưa gặp phải. Tôi phải thừa nhận rằng một số giải pháp có thể hơi đặc biệt, vì vậy đừng hiểu ý tôi, nhưng tôi tin rằng chúng hoạt động tốt về tổng thể. Tuy nhiên, hy vọng rằng trải nghiệm Xen của bạn sẽ thú vị hơn sau bài đọc này.
Mẹo 1:Kết nối VNC với máy chủ ảo hóa bị từ chối hoặc ngắt kết nối
Sau khi bạn khởi động Trình quản lý máy ảo (trình quản lý tài năng), bạn có tùy chọn để xem nội dung của các máy ảo của mình bằng VNC, sau đó sẽ hiển thị nội dung của bảng điều khiển của miền có liên quan. Thỉnh thoảng, bảng điều khiển có thể trở nên trống rỗng và gây ra lỗi được ghi trong tiêu đề ở trên. Câu hỏi, bạn làm gì bây giờ?
Kinh nghiệm của tôi cho thấy rằng điều này sẽ xảy ra bất cứ khi nào hệ điều hành khách được khởi động lại hoặc tắt máy. Sau khi bật lại, bạn sẽ phải mở lại bảng điều khiển một cách bất tiện nhất để xem nội dung. Điều tương tự cũng xảy ra nếu bạn sử dụng virt-viewer:
virt-viewer
Sau khi miền được khởi động lại, đặt lại hoặc tắt nguồn, bạn sẽ mất kết nối. Hiện tại, giải pháp đơn giản là mở lại cửa sổ giao diện điều khiển, thông qua virt-manager hoặc virt-viewer.
Ngoài ra, để thiết lập kết nối:
virsh vncdisplay
vncviewer
Mẹo 2:vif biến mất khi khách đang chạy, không còn kết nối mạng nữa
Có thể xảy ra trường hợp trong khi máy ảo của bạn đang chạy, giao diện mạng ảo, thường được gắn nhãn vifX.X sẽ biến mất khỏi danh sách ifconfig, biến khách của bạn thành cục gạch vô dụng.
Sự cố cũng có thể biểu hiện ở địa chỉ MAC giao diện mạng có liên quan bên trong máy ảo biến thành tất cả các số không. Và trên máy chủ (dom0), bạn có thể thấy các loại mục sau trong /var/log/messages:
kernel:[ 109.743854] br0:port 2(vif1.0) đang ở trạng thái học hỏi
kernel:[ 109.811880] br0:port 3(tap1.0) đang chuyển sang trạng thái máy học
kernel:[ 117.369189] br0:port 3(tap1.0) đang ở trạng thái bị vô hiệu hóa
kernel:[ 117.398076] device tap1.0 rời khỏi chế độ hỗn tạp
kernel:[ 117.398083] br0:cổng 3(tap1.0) đang ở trạng thái bị vô hiệu hóa
kernel:[ 117.815006] br0:cổng 2(vif1.0) đang ở trạng thái bị vô hiệu hóa
kernel:[ 117.850075] br0:cổng 2(vif1.0) đang ở trạng thái bị vô hiệu hóa
Vì vậy, làm thế nào để bạn đi về sửa chữa một cái gì đó như thế này? Có một số tùy chọn. Một, nâng cấp kernel có thể giải quyết vấn đề một cách bí ẩn. Chà, không quá bí ẩn, giống như sửa các điều kiện cuộc đua trong ngăn xếp mạng Xen.
Tùy chọn thứ hai là thử điều chỉnh cài đặt mạng trong tệp cấu hình Xen, nằm trong /etc/xen/xend-config.sxp. Tệp này chứa tất cả các loại chỉ thị, bao gồm cách thiết lập cầu nối và giao diện mạng ảo. Nhiều người cho rằng mạng hơi bị lỗi và bạn nên định cấu hình thủ công các tập lệnh của riêng mình.
Cụ thể, hãy thay đổi các chỉ thị sau:
( network-script network-bridge ) thành ( network-script )
Hơn nữa, bạn nên cấu hình cầu nối của mình theo cách thủ công. Trong quá trình thử nghiệm, bạn nên sử dụng các lệnh brctl và ifconfig, và khi bạn chắc chắn rằng các thay đổi của mình là ổn định, thì bạn nên cam kết vĩnh viễn chúng vào các tập lệnh mạng của mình. Trên hệ thống RedHat và SUSE, điều này có nghĩa là tạo ifcfg-br
Đây là một ví dụ về cấu hình cầu thủ công:
brctl addbr br0
brctl setfd br0 0
ifconfig br0 10.0.0.128 lên mặt nạ mạng 255.255.255.0
brctl addif br0 eth0
tuyến đường thêm -net mặc định gw 10.0.0.254 br0
ifconfig eth0 0.0.0.0 lên
Tiếp theo trên menu, tăng hoặc giảm số lượng vòng lặp mạng, nghĩa là có thể tạo bao nhiêu cặp thiết bị ảo. Nếu bạn đạt đến giới hạn trên, thì bạn có thể muốn tăng số lượng. Điều này được thực hiện bằng cách tạo một tệp có tên netloop trong /etc/modprobe.d và viết bên trong:
tùy chọn netloop nloopbacks=
Hoặc chỉ cần thêm tùy chọn này vào /etc/modprobe.conf.
Đọc thêm một chút về chủ đề này:
Mạng Xen
Cầu nối mạng Xen được giải thích với ghi chú khắc phục sự cố
Kết nối mạng SLES dưới xen kẽ, khắc phục sự cố và đề xuất
Kết nối mạng Xen dễ dàng
Mạng Linux thật tệ. Mạng XEN hút.
Tạo cầu nối mạng ảo Xen bổ sung
Nếu bạn tình cờ gặp phải sự cố hạt nhân khi điều này xảy ra, thì hai liên kết này cũng có thể được quan tâm, hãy cẩn thận với sự táo bạo:
LỖI hạt nhân tại mm/vmalloc.c:2165
[PATCH] mm:đồng bộ hóa bảng trang không gian địa chỉ vmalloc trong alloc_vm_area()
Vấn đề thực sự có thể được giải quyết bằng cách giảm số lượng vòng lặp mạng xuống 0.
Mẹo 3:Bật quyền truy cập HTTP cũ
libvirt làm cho HTTP trở nên dư thừa khi kết nối với dom0 và quản lý nó cả cục bộ và từ xa. Tuy nhiên, một số bạn có thể quan tâm đến tùy chọn này, đặc biệt nếu bạn có ý định sử dụng các công cụ như OpenXenManager, sử dụng HTTP/HTTPS để kết nối. Để làm cho Xen có thể truy cập được từ Web, bạn sẽ cần chỉnh sửa một số lệnh trong tệp cấu hình xend-config.sxp:
(xend-http-server có)
(cổng xend 8000)
(xend-địa chỉ '')
Thay đổi không thành có cho xend-http-server và chỉ định cổng chính xác, địa chỉ xend chỉ định địa chỉ IP của giao diện mạng mà Xend sẽ lắng nghe. Nếu bạn để mặc định dấu ngoặc kép trống thì nó sẽ lắng nghe trên tất cả các giao diện có sẵn. Tiếp theo, tải lại tệp cấu hình:
/etc/init.d/xend tải lại
Và sau đó bạn có thể kiểm tra quyền truy cập Web:
Mẹo 4:LỖI:không thể kết nối với 'localhost:8000':Kết nối bị từ chối
Một hệ quả tất yếu của mẹo trên là bạn có thể gặp phải lỗi từ chối kết nối xấu xí khi cố gắng kết nối với dom0 bằng trình quản lý virt. Python nổi tiếng là dài dòng, vì vậy hãy chuẩn bị cho sự xấu xí.
Để giải quyết vấn đề này, bạn có thể cần kích hoạt quyền truy cập HTTP. Ngoài ra, bạn cần phải tự hỏi tại sao điều này lại xảy ra ngay từ đầu. Lý do rất có thể là một trong các dịch vụ Xen không chạy, điều này buộc người quản lý tài năng phải quay lại quyền truy cập cũ. Nếu không muốn sử dụng giao thức HTTP, bạn có thể muốn đảm bảo rằng hệ thống của mình khởi động với tất cả các dịch vụ Xen có liên quan, đặc biệt là libvirtd và xend.
Mẹo 5:lỗi khởi động domU
Khi bạn cố gắng bật tên miền của mình bằng xm tạo
#xm bắt đầu thử nghiệm1
Lỗi:Không thể hủy tạm dừng tên miền:bắt buộc phải có số nguyên
Cách sử dụng:xm bắt đầu
Và một đồ họa tương đương:
Điều này thường có nghĩa là bạn đã chỉ định một thành phần phần cứng không tồn tại hoặc không được hỗ trợ, chẳng hạn như card mạng hoặc card âm thanh. Vui lòng xem lại tệp cấu hình miền của bạn, thường được lưu trữ trong /etc/xen/vm để tìm lỗi. Bạn cũng có thể muốn tham khảo /var/log/messages, cũng như nhật ký lỗi Xen - /var/log/xen/xend.log.
Bây giờ, đây là một cái khác:
#xm tạo thử nghiệm1
Sử dụng tệp cấu hình "./test1".
Lỗi:(2, 'Hạt nhân không hợp lệ', "elf_xen_note_check:LỖI:Không phải hình ảnh Xen-ELF:Không tìm thấy ghi chú ELF hoặc phần '__xen_guest'.\n")
Điều này có thể xảy ra nếu bạn cố gắng bật máy khách ảo hóa song song bằng cách sử dụng cài đặt hạt nhân HVM trong tệp cấu hình miền. Khá tầm thường để gỡ lỗi và giải quyết.
#xm tạo thử nghiệm1
Sử dụng tệp cấu hình "./test1".
Lỗi:Không thể kết nối thiết bị 768 (vbd).
Tệp /tmp/disk.raw được lặp lại qua /dev/loop1,
được gắn trong miền khách,
và vì vậy không thể được gắn kết bây giờ.
Bạn có thể thấy điều này nếu bạn cố gắng sử dụng lại một tệp đĩa cứng đã được sử dụng bởi một máy ảo khác. Ngoài ra, bạn có thể đã gắn nó như một thiết bị loopback ở đâu đó để kiểm tra các bộ phận bên trong của nó.
Nói về lỗi vbd, đây là một lỗi khác:
#xm tạo thử nghiệm1
Sử dụng tệp cấu hình "./test1".
Lỗi:Không thể kết nối thiết bị 5632 (vbd). Không tìm thấy thiết bị.
Một biến thể của loại thông báo này được hiển thị trong xend.log:
GỠ LỖI (DevController:139) Đang chờ thiết bị vscsi.
GỠ LỖI (DevController:139) Đang đợi thiết bị vbd.
GỠ LỖI (DevController:144) Đang đợi 768.
CẢNH BÁO (XendDomain:1076) Không thể thiết lập thiết bị cho
Lý do ở đây có thể là do tệp đĩa cứng được chỉ định sai hoặc một lần nữa, việc sử dụng thiết bị nào đó không đúng cách, có thể là do lỗi chính tả. Điều này tương tự như lỗi đầu tiên được liệt kê ở trên.
Bây giờ, một câu hỏi có thể nảy sinh là làm thế nào để biết loại thiết bị vbd là gì? Là giải pháp thay thế đơn giản nhất, bạn có thể xác minh điều này trên bất kỳ Xen domU nào đã khởi động. Tất cả các thiết bị có thể được tìm thấy trong /sys/devices/xen/. Ví dụ:
#cat /sys/devices/xen/vbd-768/block/hda/hda1/dev
3:1
Ở đây chúng ta thấy rằng vbd-768 là một thiết bị khối có số chính là 3. Do đó, hda1 tương ứng với 3:1, viết tắt của logic. Thêm về danh pháp này trong một giây.
Và một danh sách đầy đủ cho một máy ảo cụ thể:
#ll
tổng số 0
drwxr-xr-x 2 root root 0 ngày 18 tháng 12 12:07
-rw-r--r-- 1 gốc root 4096 ngày 18 tháng 12 12:07 uevent
drwxr-xr-x 4 gốc root 0 ngày 18 tháng 12 12:05 vbd-5632
drwxr-xr-x 4 gốc root 0 ngày 18 tháng 12 12:05 vbd-768
drwxr-xr-x 3 root root 0 18 tháng 12 12:05 vfb-0
drwxr-xr-x 4 gốc root 0 ngày 18 tháng 12 12:05 vif-0
Cách phức tạp hơn là dịch số sang hệ thập lục phân, sau đó sử dụng hai bit có nghĩa nhỏ nhất cho số phụ và các bit cao hơn còn lại làm số chính, sau đó tham khảo danh sách devices.txt trực tuyến hoặc trong /usr/src/ linux/Documentation để giải mã loại thiết bị chính xác. Ví dụ:số thập phân 768 là x0300 hexa, nghĩa là số chính 3, số phụ 0. Điều này chuyển thành thiết bị IDE đầu tiên (không) hoặc hda. Tương tự như vậy, 5632 dịch thành x1600, có nghĩa là tổ hợp 16,00 chính, phụ, đối với các thiết bị khối là CD-ROM. Vui vẻ, không? Chủ đề danh sách gửi thư Xen cũ này cũng có thể được quan tâm.
Mẹo 6:Cài đặt nâng cao
Cuối cùng, một cái gì đó nhẹ. Khi khởi động khách của bạn, bạn có thể muốn điều chỉnh một số cài đặt nâng cao. Ví dụ:bạn có thể quan tâm đến PAE hoặc OpenGL. Bạn nên đánh dấu các tùy chọn chính xác trong trình hướng dẫn máy ảo hoặc cách khác, nếu bạn đã quen thuộc với các tệp dòng lệnh và máy ảo, chỉ cần thêm các chuỗi chính xác vào đó.
Mẹo cuối cùng, không công khai là thiết lập hệ thống đa khởi động với GRUB2 phụ trách. Không có gì mới, chúng tôi đã nói về điều này trong bài viết giới thiệu, vì vậy hãy đến đó và xem qua.
Và chúng ta sẽ kết thúc ở đây ngày hôm nay.
Kết luận
Tôi tin rằng bất kỳ công cụ nào được viết bằng Python đều được thiết kế với càng nhiều lỗi càng chi tiết càng tốt chỉ để chọc tức các quản trị viên và làm phiền họ. Xen nằm trong danh mục này, với một số thông điệp khá phong phú và không phù hợp về vấn đề mà nó đang gặp phải. Không tầm thường, để nói rằng ít nhất.
Vẫn hy vọng, hướng dẫn này có ích cho bạn. Tôi phải thừa nhận rằng có khá nhiều sai sót ở đây. Bạn rất có thể cố gắng áp dụng những gợi ý này và thất bại thảm hại, cảm thấy tức giận và thất vọng. Điều này là do thực sự có hàng trăm tình huống khác nhau có thể gây ra cho bạn, mỗi tình huống đều hơi khác nhau. Bất kể, một số lời khuyên sẽ hữu ích. Cách khắc phục sự cố ngắt kết nối VNC, cách điều tra các sự cố mạng, các lỗi khác nhau và sự cố cấu hình, v.v. Vâng đó sẽ là tất cả, gặp lại bạn xung quanh.
Chúc mừng.