У меня есть несколько идентичных устройств под управлением CentOS 7 с четырьмя встроенными сетевыми картами. Чтобы сохранить ощущение, похожее на более старую версию устройства, использующего RHEL6 (то есть ethX), я хочу использовать схему именования сети, используемую RHEL6. Я также хочу минимизировать количество необходимых изменений после создания универсального системного диска для использования на каждом устройстве.

Если я понимаю схему именования в CentOS 7, схема именования согласовывается в зависимости от расположения оборудования, поэтому, если оборудование идентично, у меня будут одинаковые имена сетевых интерфейсов для каждого экземпляра устройства.

Из-за требований клиентов необходимо, чтобы сетевые интерфейсы устройства имели одинаковое имя в версиях CentOS 7 и RHEL6.

Один из подходов состоит в том, чтобы расширить командную строку ядра с помощью net.ifnames=0 как описано здесь, а затем создать мои собственные ifcfg-ethX . Однако, насколько я могу судить, для этого необходимо изменить файл конфигурации вручную. Это еще более усложняется тем, что устаревший порядок является фиксированным, но произвольным, поэтому мне придется изменить эти файлы для каждой системы. :-/

Одна из моих мыслей заключалась в том, чтобы использовать схему именования CentOS 7, но затем добавить псевдоним к каждой, чтобы произвольная схема именования могла применяться в зависимости от местоположения оборудования. Можно ли сделать это?

Любые другие идеи о том, как я могу получить два имени для одного устройства и IP-адрес?

ПРИМЕЧАНИЕ. Я не спрашиваю, как добавить несколько IP-адресов к одному устройству, что довольно просто.

РЕДАКТИРОВАТЬ: Мне действительно нужно переименовать его, но я хотел бы сделать это программно.

1 ответ1

2

Может ли имя быть одновременно "произвольным" и "основанным на расположении оборудования"? Эти слова противоречат друг другу.

  • Имена eth# назначаются самим ядром в зависимости от порядка обнаружения при каждой загрузке - другими словами, они «первым пришел, первым обслужен» и не имеют никакого отношения к расположению оборудования.

    Старые версии udev использовались для автоматического создания файла в /etc/udev/rules.d для привязки этих назначений к MAC-адресам карт. Вы, вероятно, можете скопировать этот файл в новые системы.

    Вы также можете написать пользовательские правила udev для установки параметра NAME= на основе адреса или расположения PCI. (Обратите внимание, что в будущем udev может отказаться переименовывать интерфейс в eth* , если это еще не сделано. И даже если это разрешено, это переименование является очень хрупким и может дать сбой, если устройства обнаружены в другом порядке.)

  • Хотя, насколько мне известно, RHEL 6 использовал имя biosdevname для генерации имен физических интерфейсов (переключатель ядра biosdevname=0). RHEL 7 использует встроенный в systemd-udevd net_id для этой цели (переключатель ядра net.ifnames=0).

    Чтобы получить имена в стиле p1p2 , вы можете yum install biosdevname , а затем включить его через командную строку ядра (biosdevname=1 net.ifnames=0). Смотрите документацию Red Hat.

Сетевые интерфейсы не могут иметь псевдонимы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .