Networking

QEmu-KVM:如何在沒有 libvirt 的情況下配置 VM?

  • December 10, 2016

為了充分了解和了解更多關於 KVM 技術的資訊,我需要只使用命令行的東西來管理和執行 VM,這就是kvm命令。

到目前為止,我已經完成了我需要的一切,但網路部分。

我的意思是,在 CLI 上,我已將訪客的乙太網介面定義為

-device virtio-net-pci,mac=02:01:01:01:01:01

但是後來我找不到足夠的文件來其附加到主機網路介面(這是一個 LACP 乙太網綁定介面)。這應該通過-netdevCLI 選項來完成。

我需要讓每個 VM 相互通信,並與來賓以及主機 LAN 上的其他主機通信。

我發現了一些(可能已經過時的)關於橋接等的文件,但最終它們都是基於 libvirt 的。

雖然它是一個非常強大的工具,但它

  1. 向使用者隱藏太多細節
  2. 有時需要您下載由其他人製作的 XML 文件並根據您的需要對其進行自定義。

是否有任何關於如何在-netdev各種場景下使用的文件,在多種策略的情況下可能有優缺點?

@shodanskok 在評論中提出了一個非常有效的觀點,那就是:為什麼不使用 libvirt via virsh?它是 QEMU / KVM 以及 ESXi 和 Xen 的出色命令行抽象。您可以使用 XML 片段來管理設備附件,這是一種標準化工具堆棧的好方法,無論在其下執行哪個管理程序。正是出於這個原因,OpenStack 直接使用它,它提供了即使是異構雲也需要的那種靈活性。

除此之外,如果您必須直接使用 qemu-kvm 命令,您將需要管理自己的網路堆棧。具體來說,在這種情況下,您缺少一座橋樑。

**您將需要創建一個所有 VM 都連接到的橋接介面。**這將為您提供所有機器之間的完全互通。在這種情況下,網橋是虛擬轉發交換機。您的綁定也將連接到此交換機,將外部網路連接到此虛擬交換機。

您將需要使用您的發行版的網路腳本來創建這樣一個介面並將您的綁定附加到它。你還沒有提到你的發行版,所以我將提供這個問題的“臨時”解決方案(這在 GNU / Linux 中是通用的)。這些更改將在重新啟動時失去,因此請確保將網橋添加到介面配置文件中。

一方面,libvirt 能夠通過 virsh 命令行持久地設置這些介面(持久性由 XML 文件授予),而不必擔心分發特定的介面配置文件。再次罷工,有效的更高級別的工具棧。

創建橋樑:

# brctl addbr br0(本例中網橋名稱為 br0。名稱是任意的)。

要向該網橋添加底層介面:

# brctl addif bond0 br0(在這種情況下,我們將 bond0 添加到 br0)

完成後,您的鏈路層主機網路就完成了。如果您需要通過 IP 地址定址您的主機,您可以將該地址放在網橋上。不要把它放在下面一層,例如在粘合劑上。那根本行不通。

將 IP 添加到此網橋(如果您不為網橋創建介面文件,這也將是短暫的,但會立即起作用):

# ip a add 10.1.0.100/24 dev br0(給出的 IP 只是一個例子。)

作為潛在的幫助,這裡是在 CentOS 和 Debian 上設置持久網橋的連結。

對於 CentOS:https ://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-networkscripts-interfaces_network-bridge.html

對於 Debian:https ://wiki.debian.org/NetworkConfiguration#Bridging

設置完成後,您只需-device按如下方式修改您的開關:

-device virtio-net-pci,netdev=br0,mac=02:01:01:01:01:01

引用自:https://serverfault.com/questions/807714