Назад | Перейти на главную страницу

Как указать номер NIC в virsh / kvm?

Надеюсь, мне здесь помогут. Я использую команду virt-clone, чтобы получить образ VyOS (Linux-маршрутизатор с открытым исходным кодом). Клон работает нормально, но когда я копирую образ на другой хост KVM и устанавливаю его, номер сетевой карты меняется. порты 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

Я запускаю службу с virsh start vyos

но когда я просматриваю интерфейсы, нумерация изменилась:

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:~$

Есть ли способ заставить новую виртуальную машину / домен использовать eth0 и eth1 вместо eth2 и eth3?

Мне нужно, чтобы они оставались такими же, чтобы я мог писать сценарии.

****** Обновить

Я попытался запустить 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 [...]

Я также попытался отредактировать xml с помощью virsh edit и удалить MAC-адреса и перезапустить домен, но это не устранило проблему.

Спасибо за помощь C

Причина, по которой вы столкнулись с этой проблемой, заключается в том, что вы не очистили различные заполненные значения из этого образа виртуальной машины, которые необходимо очистить перед использованием после клонирования, например MAC-адреса интерфейсов в файлах конфигурации, что объясняет имя вашего сетевого адаптера. вопрос.

При клонировании создается только копия диска и создается новое определение виртуальной машины. Определения представлены в формате XML, их можно найти в /etc/libvirt/qemu/$VM_NAME.xml по умолчанию. Изображения могут быть в различных форматах (включая необработанные блочные устройства, а не файлы вообще), но при использовании файлов изображений они хранятся в /var/lib/libvirt/images/ по умолчанию.

Вам необходимо сначала выполнить sysprep этого образа, чтобы исправить наблюдаемое поведение, которое удалит заполненные значения для таких вещей, как постоянные сетевые правила и конфигурации сетевых адаптеров (и еще несколько вещей, но они наиболее важны в контексте этого вопроса).

Это делается для виртуальных машин libvirt с помощью virt-sysprep в отношении образа корневого диска, обычно либо после клонирования одного образа, либо потенциально перед клонированием (в случае создания «шаблонного» образа виртуальной машины).

ВНИМАНИЕ! Используйте virt-sysprep только для неактивных (уничтоженных или отключенных) образов виртуальных машин. Этот инструмент смонтирует гостевые файловые системы и внесет изменения, что опасно и может привести к серьезным сбоям при выполнении на работающей виртуальной машине)

В этом случае я подробно расскажу о процессе sysprep, который вы бы использовали. после клонирование изображения, а не создание шаблона или чего-то еще. Дайте мне знать, если вам понадобится помощь в использовании по-другому. Следующее будет выполнять стандартные "типичные" действия, которые вам нужно будет сделать для успешного использования корневого образа, как если бы он никогда не загружался:

Клонируйте свое изображение

[...]

Выполните эту команду для клонированного корневого образа (до или после копирования, не имеет значения):

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

Затем вы можете использовать это изображение в экземпляре, как если бы оно никогда раньше не загружалось. Ваши важные изменения будут сохранены.

Вывод, выгружаемый в stdout, подробно описывает, что было сделано, и удалось ли это сделать. Я не совсем уверен, что образ VyOS будет успешным с использованием значений по умолчанию. Если у вас возникли проблемы, и вы застряли, опубликуйте свои результаты, и я могу помочь разобрать, что там происходит.

Я смог выполнить то, что искал, установив Vyos на виртуальную машину без сетевых адаптеров. Затем я клонировал эту виртуальную машину и использовал файлы qcow2 для своей установки. Когда я установил с помощью этого файла qcow2, я бы добавил 2 новые карты NIC. Теперь каждый раз, когда я запускаю Vyos, это всегда Eth0 и Eth1, и мои сценарии работают нормально.

Больше работа, чем исправление.