Что управляет соглашением об именовании сетевых карт после установки новой версии Ubuntu 20.04?

Что управляет соглашением об именовании сетевых карт после установки новой версии Ubuntu 20.04?

Это новая установка системы Ubuntu server 20.04.04. Я использую networkd и netplan для настройки сети. Я не делал никаких шагов по установке, просто загрузил .iso и установил Ubuntu server через подсказки.

Когда эти машины были отправлены поставщиком, Ubuntu уже была установлена, а сетевые интерфейсы были названы ens1f0следующим образом ens1f1:

root@oldHost2:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0
       logical name: ens1f1
       logical name: bond0

Однако после переустановки ОС (до запуска netplan) я получаю...

root@freshHost1:~# sudo lshw -C network |grep "logical name"
       logical name: ens1f0np0
       logical name: ens1f1np1
       logical name: bond0

На всех моих сайтах мы используем конфигурацию netplan, которая предполагает ens1f0и ens1f0. Я бы хотел, чтобы все интерфейсы соответствовали этому.

Я знаю, что вы можете задать имя интерфейса set-nameв netplan (как определено вhttps://ubuntu.com/server/docs/network-configuration) однако вам нужно уже как-то сопоставить интерфейс (используя MAC-адрес и т. д.), что сделает автоматическую инициализацию кошмаром (если не невозможной). Сценарий «курица/яйцо». У меня есть сотни машин для инициализации, и я хотел бы шаблонизировать мою конфигурацию netplan, не зная MAC-адресов.

Я знаю, что можно также сгруппировать интерфейсы в netplan:

  ethernets:
    eports:
      match:
        name: ens*

Это может подойти в моем случае, но не все системы имеют простую настройку из двух сетевых карт, поэтому я не уверен, какой курс действий будет лучшим.

Мои вопросы к ServerFault...

  • Поскольку это логическое имя задается еще до запуска Netplan, что определяет это имя? Как я могу переопределить его во время установки/подготовки ОС?
  • Что означают символы np0и np1в названиях интерфейсов?

решение1

Это определяется systemd на основе информации об устройстве. На имя могут влиять несколько различных факторов, включая BIOS, другие устройства, которые могут быть установлены, версию Linux и версию драйвера. Смотретьhttps://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.htmlо том, как systemd конструирует имена.

Например, номера слотов могут быть связаны со слотами PCIe, а могут и не быть. Я думаю, что это как минимум связано с BIOS/ACPI, но могут быть и другие факторы. На одной из моих машин сетевая карта, установленная в одном слоте, нумеруется как enpN, а та же сетевая карта, перемещенная в другой слот, нумеруется как ensN.

Я слышал о случаях, когда номера шин PCIe назначались по-разному при определенных условиях, например, при наличии устройства Thunderbolt во время загрузки. В конечном счете, это, вероятно, вина BIOS системы, которая не резервировала номера шин PCIe правильно для порта Thunderbolt.

Что касается того, что вы видите с np0 и np1, p0 и p1 — это имена физических портов, взятые из devlink __devlink_port_phys_port_name_get. Предположительно поддержка devlink была добавлена ​​в драйвер NIC, что и привело к появлению np0/np1. Если вы обновите старую систему до той же версии ядра, то наименование также должно измениться.

Связанный контент