libvirt: Thay đổi dhcp-setup mà không cần khởi động lại


11

Tôi đang sử dụng libvirt và kvm để ảo hóa máy chủ của mình. Tôi đã cấu hình libvirt để khởi động máy chủ dhcp trên giao diện cầu nối mạng để cung cấp cho ips của vm. Mọi VM luôn có cùng một ip dựa trên mac của nó, cái này được cấu hình như thế này:

<dhcp>
 <range start='10.1.1.2' end='10.1.1.254' />
 <host mac='54:52:00:21:01:ba' name='virstvm' ip='10.1.1.10' />
 <host mac='00:16:36:2d:71:f9' name='secvm' ip='10.1.1.20' />
</dhcp>

Vấn đề: Bất cứ khi nào tôi thêm một máy chủ mới vào phần dhcp, tôi phải khởi động lại libvirt-bin để khởi động lại tất cả các vm của tôi . Đây không thể là giải pháp vì nó có nghĩa là thời gian chết mỗi khi tôi thêm Máy chủ mới. Có một giải pháp?


Câu hỏi hay tôi nghĩ rằng đó chỉ là vấn đề tái tạo mạng sau khi thay đổi mạng bằng virsh sau khi bạn chỉnh sửa tệp xml giống như với tên miền. Nhưng điều này dường như không phải là trường hợp. Vì virsh net-dumpxml cho thấy rõ ràng libvirt vẫn có tệp gốc được lưu trữ.
3dinfluence

Câu trả lời:


7

Lệnh cập nhật mạng được thêm vào trong virsh sẽ cho phép cập nhật máy chủ dhcp mà không cần khởi động lại mạng ảo (Tôi chưa thử nghiệm nó).

người đàn ông virsh:

Phần lệnh mạng cập nhật mạng xml [--parent-index index] [[--live] [--config] | [--hiện hành]]

Cập nhật phần đã cho của định nghĩa mạng hiện có, với các thay đổi tùy chọn có hiệu lực ngay lập tức mà không cần phải hủy và khởi động lại mạng.

lệnh là một trong những "add-first", "add-last", "add" (một từ đồng nghĩa với add-last), "xóa" hoặc "sửa đổi".

phần là một trong những "cầu nối", "tên miền", "ip", "ip-dhcp-host", "ip-dhcp-Range", "Forward", "Forward-interface", "Forward-pf", "portgroup "," dns-host "," dns-txt "hoặc" dns-srv ", mỗi phần được đặt tên theo cách ghép của hệ thống phân cấp thành phần xml dẫn đến thành phần bị thay đổi. Ví dụ: "ip-dhcp-host" sẽ thay đổi một <host>phần tử được chứa bên trong một <dhcp>phần tử bên trong một <ip>phần tử của mạng.

xml là văn bản của phần tử xml hoàn chỉnh thuộc loại đang được thay đổi (ví dụ: "<host mac =" 00: 11: 22: 33: 44: 55 'ip =' 1.2.3.4 '/> "hoặc tên của một tệp chứa một phần tử xml hoàn chỉnh. Sự phân tán được thực hiện bằng cách xem ký tự đầu tiên của văn bản được cung cấp - nếu ký tự đầu tiên là "<", thì đó là văn bản xml, nếu ký tự đầu tiên không phải là "<", thì đó là Tên của tệp chứa văn bản xml sẽ được sử dụng.

Tùy chọn --parent-index được sử dụng để chỉ định phần tử nào trong số các phần tử cha mà phần tử được yêu cầu nằm trong (dựa trên 0). Ví dụ, một <host>phần tử dhcp có thể nằm trong bất kỳ một trong nhiều <ip>phần tử trong mạng; nếu chỉ mục cha mẹ không được cung cấp, <ip>phần tử "thích hợp nhất" sẽ được chọn (thường là phần tử duy nhất đã có <dhcp>phần tử), nhưng nếu --parent-index được đưa ra, trường hợp cụ thể đó <ip>sẽ được sửa đổi.

Nếu --live được chỉ định, ảnh hưởng đến mạng đang chạy. Nếu --config được chỉ định, ảnh hưởng đến lần khởi động tiếp theo của mạng liên tục. Nếu --c Hiện được chỉ định, ảnh hưởng đến trạng thái mạng hiện tại. Cả hai cờ --live và --config có thể được cung cấp, nhưng --c Hiện là độc quyền. Không chỉ định bất kỳ cờ nào giống như chỉ định --c Hiện tại.


5

Quy trình sau đây phù hợp với tôi với phiên bản libvirt: 0.7.5-5ubfox27 trên máy chủ Ubuntu 10.04.4 LTS:

  virsh net-dumpxml default > default.xml

  $EDITOR default.xml

  virsh net-destroy default
  virsh net-define default.xml
  virsh net-start default

Điều này cũng hoạt động cho các mạng khác bên cạnh mạng mặc định. Chỉ cần thay thế từ mặc định trong ví dụ bằng tên của mạng.


Tôi chỉ thử cái này Mặc dù cấu hình mạng mới thực sự có hiệu lực, tất cả các VM đều mất kết nối mạng và cần phải được khởi động lại.
dùng1202136

@ user1202136: Bạn đã thực hiện loại thay đổi cấu hình mạng nào? Và bạn đã sử dụng loại máy ảo nào?
pefu

Tôi đã sử dụng máy ảo ảo Xen. Về thay đổi cấu hình mạng, tôi đã thêm một mục DHCP tĩnh mới.
dùng1202136

Khác với việc khởi động lại dnsmaq bằng tay, bạn muốn khởi động lại dịch vụ mạng.
Breno Leitão

@Breno Leitão: Chính xác như thế nào? Và nhận xét của bạn áp dụng cho các phiên bản hương vị phân phối Linux nào?
pefu

2

Giải pháp của @ pefu cũng đã làm điều đó cho CentOS 6.4!

Việc sử dụng net-edittrong virshkhông cập nhật tệp XML /var/lib/libvirt/network/default.xmlcũng như không thay đổi trạng thái của cấu hình mạng đang chạy.

Chạy lại net-editcho thấy phiên bản đã chỉnh sửa ngay cả sau khi khởi động lại nhưng nó không được tải!

Xuất nó thành tệp XML thực, chỉnh sửa và tải lại nó hoạt động!


1

Tôi nghĩ libvirt sử dụng dnsmaq cho máy chủ dhcp của nó. Có lẽ bạn chỉ có thể khởi động lại dnsmasq và tất cả sẽ ổn?


1

Sau một cuộc tranh luận về Danh sách gửi thư, tôi phát hiện ra: điều này hiện không thể thực hiện được!


Tôi không biết nếu điều này được khuyến nghị, nhưng tôi thường chỉ giết quá trình dnsmasq và bắt đầu nó bằng cách sử dụng các đối số mà nó đang chạy lại.
bkzland

Câu trả lời sẽ chỉ định Phân phối Linux và phiên bản mà nó áp dụng. Như tôi đã trình bày dưới đây, có thể có trong Ubuntu 10.04 LTS và mới hơn.
pefu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.