У меня есть несколько идентичных устройств, работающих под управлением CentOS 7 с четырьмя встроенными сетевыми картами. Чтобы сохранить схожесть со старой версией устройства, работающего под управлением RHEL6 (т. е. ethX
), я хочу использовать схему именования сетей, используемую в RHEL6. Я также хочу минимизировать количество изменений, требуемых после создания универсального системного диска для использования на каждом устройстве.
Если я правильно понимаю схему именования в CentOS 7, она едина и зависит от расположения оборудования, поэтому, если оборудование идентично, у меня будут одинаковые имена сетевых интерфейсов для каждого экземпляра устройства.
По требованию заказчика мне необходимо сделать так, чтобы сетевые интерфейсы устройства имели одинаковые имена в версиях CentOS 7 и RHEL6.
Один из подходов заключается в расширении командной строки ядра, net.ifnames=0
как описаноздесьи затем создать свои собственные ifcfg-ethX
файлы. Однако, насколько я могу судить, для этого требуется ручная модификация файла конфигурации. Это еще больше усложняется тем, что устаревший порядок фиксирован, но произволен, поэтому мне придется изменять эти файлы для каждой системы. :-/
Одна из моих мыслей была использовать схему именования CentOS 7, но затем добавить псевдоним к каждому, чтобы произвольная схема именования могла применяться на основе расположения оборудования. Возможно ли это сделать?
Есть ли еще идеи, как можно присвоить два имени одному устройству и IP-адресу?
ПРИМЕЧАНИЕ: Я не спрашиваю, как добавить несколько IP-адресов на одно и то же устройство, это довольно просто.
РЕДАКТИРОВАТЬ: Мне действительно нужно его переименовать, но хотелось бы сделать это программно.
решение1
Может ли имя быть одновременно «произвольным» и «основанным на расположении оборудования»? Эти слова противоречат друг другу.
Имена
eth#
присваиваются самим ядром на основе порядка обнаружения при каждой загрузке — другими словами, они действуют по принципу «первым пришел, первым обслужен» и не имеют ничего общего с расположением оборудования.Старые версии udev использовались для автоматической генерации файла в
/etc/udev/rules.d
чтобы связать эти назначения с MAC-адресами карт. Вы, вероятно, можете скопировать этот файл в новые системы.Вы также можете написать пользовательские правила udev для установки
NAME=
параметра на основе адреса или расположения PCI. (Обратите внимание, что в будущем udev может отказаться переименовывать интерфейс вeth*
, если он этого еще не сделал. И даже если это разрешено, такое переименование очень хрупкое и может дать сбой, если устройства будут обнаружены в другом порядке.)Хотя, насколько мне известно, RHEL 6 использовалbiosdevnameдля генерации имен физических интерфейсов (переключатель ядра
biosdevname=0
). RHEL 7 использует для этой цели встроенный net_id systemd-udevd (переключатель ядраnet.ifnames=0
).Чтобы получить
p1p2
имена стилей, вы можетеyum install biosdevname
, затем включить его через командную строку ядра (biosdevname=1 net.ifnames=0
). СмотритеДокументация Red Hat.
Сетевые интерфейсы не могут иметь псевдонимов.