web-dev-qa-db-ja.com

virsh / kvmでNIC番号を指定する方法は?

ここで助けが得られることを願っています。 virt-cloneコマンドを使用してVyOS(オープンソースのLinuxルーター)のイメージを取得しています。クローンは正常に動作しますが、イメージを別のKVMホストにコピーしてインストールすると、NICカード番号が変更されます。ポートeth0とeth1はeth2とeth3に変わります新しいインスタンスでこれが発生しないようにする方法はありますか?

私が実行している元のサーバーで:

vyos@vyos:~$ show int
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             -                                 u/u
eth1             -                                 u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
vyos@vyos:~$

次に、シャットダウンしてクローンを作成します。

virt-clone --original vyos --name vyos_clone --file vyos_clone

新しいクローンファイルを別のkvmホストにコピーして、次のコマンドを実行します。

virt-install -n vyos --description "Vyos Server" --ram 1024 --vcpus 1 --os-type=linux --disk /VMs/vyos_clone,device=disk,bus=virtio,size=15,sparse=true,format=raw --graphics none --network=default,model=virtio --network=network:HUB1,model=virtio --import --noautoconsole --autostart

私はvirshstartvyosでservieを開始します

しかし、インターフェイスを表示すると、番号が変更されています。

vyos@vyos:~$ show int
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth2             -                                 u/u
eth3             -                                 u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
vyos@vyos:~$

新しいVM /ドメインにeth2とeth3の代わりにeth0とeth1を使用させる方法はありますか?

いくつかのスクリプトを書くことができるように、これらを同じままにする必要があります。

******更新

Sysprepを実行しようとしましたが、vyosのオペレーティングシステムを認識しないようです。

> # virt-sysprep -a /VMs/vyos_clone [   0.0] Examining the guest ... virt-sysprep: error: no operating systems were found in the guest
> image
> 
> If reporting bugs, run virt-sysprep with debugging enabled and include
> the complete output:
> 
>   virt-sysprep -v -x [...]

また、virsh editを使用してxmlを編集し、MACアドレスを取り出してドメインを再起動しようとしましたが、問題は解決しませんでした。

あなたの助けをありがとうC

2
Cade Nelson

この問題が発生している理由は、構成ファイルのインターフェイスMACアドレスなど、クローン作成後に使用する前にクリアする必要があるVMイメージからさまざまな入力値をクリアしていないためです- -NICの命名の問題を説明しています。

クローン作成はディスクのコピーのみを作成し、新しいVM定義を生成します。定義はXML形式であり、デフォルトでは/etc/libvirt/qemu/$VM_NAME.xmlにあります。画像はさまざまな形式(ファイルではなくrawブロックデバイスを含む)である可能性がありますが、画像ファイルを使用する場合、デフォルトで/var/lib/libvirt/images/に保存されます。

表示されている動作を修正するには、最初にそのイメージをsysprepする必要があります。これにより、永続的なネットルールやNIC構成などの入力値が削除されます(その他いくつかありますが、これらはこの質問のコンテキスト)。

これは、ルートディスクイメージに対してvirt-sysprepコマンドを使用してlibvirt VMに対して実行されます。通常は、単一のイメージのクローンを作成した後、またはクローンを作成する前に実行されます(「テンプレート」VMイメージを作成する場合)。 )。

警告:非アクティブな(破棄またはシャットダウンされた)VMイメージでのみvirt-sysprepを使用してください。このツールはゲストファイルシステムをマウントして変更を加えます。これは危険であり、実行中のVMで実行すると重大な障害が発生する傾向があります)

この場合、テンプレートなどを作成するのではなく、 after イメージのクローン作成に使用するsysprepプロセスについて詳しく説明します。別の方法で使用する際にサポートが必要な場合はお知らせください。以下は、ルートイメージを起動したことがないかのように正常に使用するために実行する必要があるデフォルトの「一般的な」アクションを実行します。

画像のクローンを作成します

[...]

複製されたルートイメージに対して次のコマンドを実行します(コピーの前後は関係ありません)。

virt-sysprep -a /var/lib/libvirt/images/$ROOT_VM_DISK.qcow2

次に、そのイメージを、以前に起動されたことがないかのようにインスタンスで使用できます。重要な変更は引き続き保持されます。

Stdoutにダンプされた出力には、何が行われたか、およびそれが成功したかどうかが詳細に示されます。 デフォルトを使用してVyOSイメージが成功するかどうかは完全には確信していません。問題が発生して行き詰まった場合は、結果を投稿してください。そこで何が起こっているのかを特定するお手伝いをします。

2
Spooler

VyosをネットワークアダプターなしでVMにインストールすることで、探していたものを達成することができました。次に、そのVMを複製し、qcow2ファイルを私のインストール。このqcow2ファイルを使用してインストールすると、2枚の新しいNICカードが追加されます。Vyosを起動するたびに、常にEth0とEth1になり、スクリプトは正常に実行されます。

修正よりも回避策の方が多いです。

1
Cade Nelson