привязка linux -изменение параметров при статической привязке

Брекеты — то, что вам нужно

cat file000{1,2,3}.txt

Это преобразуется в:

cat file0001.txt file0002.txt file0003.txt
1
14.05.2021, 05:28
1 ответ

Существует два API для обработки интерфейсов связывания, в дополнение к устаревшим командам (в Linux)ifconfigи ifenslave, которые, вероятно, не могут создавать новые интерфейсы связывания (и, следовательно, требуют, чтобы параметр max_bondsмодуля соединения был отличен от нуля ).

  • ядра(rt)netlink API:через большинство современных команд, предоставляемых iproute2 , включая команду ip link.

  • API sysfs ядра через псевдо -файлы :, обычно монтируемые в /sys/.

Я могу отметить, что «последние» версии ifenslaveна самом деле полагаются на sysfs API и немного на rtnetlink API через ip link.

Возможно, вам следует настроить связывание для создания нулевого интерфейса вместо одного или двух по умолчанию. :Это историческая функция, которая устарела с этими двумя API. Эти интерфейсы могут быть созданы или удалены динамически позже. Конечно, для очень минимальной системы оставить ее или настроить для создания необходимого нужного номера все еще вариант. Добавление этого в параметры командной строки ядра (обычно находится в /etc/default/grubзаписи GRUB_CMDLINE_LINUX=, но правильное выполнение этого может зависеть от дистрибутива )должно делать это:

bonding.max_bonds=0
  • Настройка связывания вручную с помощью iproute2(ip link):

    Предупреждение :связанная документация является неполной/устаревшей и не показывает, что большинство, если не все функции связывания доступны через ip link.

    С помощью правой команды ip linkможно выполнить удаление, изменение настроек, порабощение и т. д. Эта команда должна включать ключевые слова type bondкаждый раз, когда после них необходимо указать конкретную опцию связи .

    напоминание о синтаксисе команды, для отображения определенных параметров связи :

    ip link add type bond help
    

    пример (Интерфейсы должны быть отключены перед порабощением, но их можно установить одной и той же командой, если предыдущее состояние неизвестно):

    ip link add dev mybond0 type bond mode active-backup miimon 100
    ip link set dev eth0 down master mybond0
    ip link set dev eth1 down master mybond0
    ip link set dev mybond0 up
    ip link set dev eth0 up
    ip link set dev eth1 up
    

    изменение настроек:

    ip link set dev mybond0 type bond miimon 200
    

    ifenslaveэквивалент:

    ip link set dev mybond0 type bond active_slave eth1
    

    некоторые настройки нельзя изменить, пока есть подчиненные устройства. Например,переопределение типа связи:

    # ip link set dev mybond0 type bond mode balance-rr
    RTNETLINK answers: Directory not empty
    

    Порабощенные устройства можно освободить с помощью:

    ip link set dev eth0 nomaster
    

    , а связанное устройство можно удалить с помощью :

    .
    ip link delete dev mybond0
    

    различную информацию, относящуюся к соединению устройству (или к соединению _ведомому устройству ), можно просмотреть с помощью дополнительной опции -details. В какой-то момент использование вывода JSON может быть проще для скриптов (, например, этот Q/A:iproute2 :Как отобразить ТИП сетевых устройств?).

    ip -detail link show dev mybond0
    ip -detail link show dev eth0
    ip -detail link show dev eth1
    
  • Настройка связывания вручную через Sysfs

    Я не думаю, что использование этого API сегодня имеет смысл, если только конкретная функция не стала доступной через ip link. Вероятно, он был создан до того, как инструменты iproute2 смогли его обработать. Возможно, чтение из него все еще может помочь в случае, если инструменты в ограниченной/встроенной системе больше не имеют доступа к команде ip link, но даже это кажется маловероятным.

    Как описано в связанной документации, вы можете создавать и удалять интерфейсы связывания через /sys/class/net/bonding_masters, который присутствует всякий раз, когда здесь присутствует модуль связывания (, встроенный -в ).

    Вот эквивалентные команды, приведенные выше, просто использующие echo... >...из корневой оболочки (или обходя перенаправления с помощьюsudo echo... | tee...):

    echo +mybond0 > /sys/class/net/bonding_masters
    echo active-backup > /sys/class/net/mybond0/bonding/mode
    echo 100 > /sys/class/net/mybond0/bonding/miimon
    

    В любом случае я не вижу способа настроить интерфейсы вверх или вниз через sysfs . Чтобы оставаться в безопасности:

    ip link set dev eth0 down
    ip link set dev eth1 down
    
    echo +eth0 > /sys/class/net/mybond0/bonding/slaves
    echo +eth1 > /sys/class/net/mybond0/bonding/slaves
    

    Опять же, другого выхода нет:

    ip link set dev mybond0 up
    ip link set dev eth0 up
    ip link set dev eth1 up
    

    Затем продолжаем как в предыдущем примере:

    echo 200 > /sys/class/net/mybond0/bonding/miimon
    echo eth1 > /sys/class/net/mybond0/bonding/active_slave
    
    # echo balance-rr > /sys/class/net/mybond0/bonding/mode
    bash: echo: write error: Directory not empty
    
    echo -eth0 > /sys/class/net/mybond0/bonding/slaves
    echo -mybond0 > /sys/class/net/bonding_masters
    

    Конкретная информация о соединении доступна там:

    cat /sys/class/net/bonding_masters
    grep ^ /sys/class/net/mybond0/bonding/*
    grep ^ /sys/class/net/eth0/bonding_slave/*
    grep ^ /sys/class/net/eth1/bonding_slave/*
    
1
28.07.2021, 11:32

Теги

Похожие вопросы