ローカルサーバー上にKVMベースのVMをセットアップしようとしていますが、このドキュメントに従ってください: https://wiki.debian.org/KVM
このドキュメントでは、ブリッジ接続用にvirbr0
を取得すると記載されていますが、残念ながら、自動的には作成されませんでした。 Docはそれを修正するためにvirt-managerを使用することを提案していますが、私はGUIなしで標準のDebianサーバーをインストールしています。では、どうすればコマンドラインからそれを作成できますか?
私はbr0を作成しました、すべてがよさそうです:
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope Host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope Host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:1f:c6:9c:0f:0d brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:1f:c6:9c:0f:0d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.200/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::21f:c6ff:fe9c:f0d/64 scope link
valid_lft forever preferred_lft forever
$ Sudo ip route
default via 192.168.1.1 dev br0
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.001fc69c0f0d no eth0
virbr0
はありません。
Ifage-bridgeを作成しようとすると、エラーが発生します。
$ virsh iface-bridge eth0 br0
error: failed to get interface 'eth0'
error: internal error: couldn't find interface named 'eth0': required entry missing
また、qemu用にブリッジを構成しました。これは手動で行い、qemuautostartに追加しました。
$ cat /etc/libvirt/qemu/networks/bridge.xml
<network>
<name>bridge</name>
<bridge name="br0"/>
<forward mode="bridge"/>
</network>
そして、ブリッジのためにVM)を作成/開始できません:
$ virt-install --virt-type kvm --name testvm --network bridge
Starting install...
Retrieving file MANIFEST... | 3.3 kB 00:00 ...
Retrieving file linux... | 6.0 MB 00:08 ...
Retrieving file initrd.gz... | 29 MB 00:56 ...
Allocating 'testvm.qcow2' | 8.0 GB 00:00
ERROR failed to retrieve file descriptor for interface: Transport endpoint is not connected
--network
構成を省略しても機能します。このVMにはネットワークがないため、基本的には役に立ちません。virsh edit testvm
でブリッジ構成を追加した場合:
<interface type='bridge'>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
実行すると、とにかく失敗します:
$ virsh start testvm
error: Failed to start domain testvm
error: failed to retrieve file descriptor for interface: Transport endpoint is not connected
私が間違ったことをしましたか? VMのネットワークをセットアップするためにvirbr0
とホットを追加するにはどうすればよいですか?
Debian Jessieを新しくインストールしましたが、コアコンポーネント、ssh、kvm/qemu/libvirt以外は何もインストールされていません。
その理由は、root以外のユーザーからのブリッジを使用するための不十分な権限でした。
ドキュメント は次のように述べています:
非ルートの場合、libvirtのデフォルトはqemu:/// sessionです。したがって、<youruser>から次のことを行う必要があります。
$ virsh --connect qemu:///system list --all
インストールのためにそれを指定する必要があること、そしてそれをいつ行うかは明確ではありませんでした。 root以外のユーザーにはrequiredコマンドラインオプションであることがわかります。
ネットワークで新しいVMをインストールするための正しいコマンドには、次のものが含まれている必要があります。
virt-install --connect qemu:///system .......
または、root
ユーザーから直接インストールすることもできます
すでにbr0が構成されているので、十分です。適切なvirt-installオプションは--network bridge=br0
編集:コメントで約束されているように、ブリッジに接続されたインターフェイスの例:
</interface>
<mac address='00:1a:4a:01:00:04'/>
<source bridge='br0'/>
<target dev='vnet2'/>
<model type='virtio'/>
<link state='up'/>
<alias name='net0'/>
</interface>
target dev
およびalias name
はオプションのafaikです
これがどのように機能するかです:
# cat /tmp/virt-net-example.xml
<network connections='9'>
<name>some-virt-net</name>
<uuid>530f11c4-617b-447c-bdba-704f34374277</uuid>
<bridge name='virbr42' stp='on' delay='0'/>
<mac address='42:13:37:23:21:87'/>
<ip address='172.20.42.254' netmask='255.255.255.0'>
<dhcp>
<range start='172.20.42.1' end='172.20.42.42'/>
</dhcp>
</ip>
</network>
# virsh net-define /tmp/virt-net-example.xml
# virsh net-start some-virt-net
Network some-virt-net started
# brctl show virbr42
bridge name bridge id STP enabled interfaces
virbr42 8000.421337232187 yes virbr42-nic
# link show virbr42-nic
99: virbr42-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr42 state DOWN mode DEFAULT group default qlen 1000
link/ether 42:13:37:23:21:87 brd ff:ff:ff:ff:ff:ff
今すぐFC22でlibvirt1.2.13に対してテスト済み