Linuxボンド - 静的にリンクされている場合のパラメータの変更

Linuxボンド - 静的にリンクされている場合のパラメータの変更

Linuxネットワークバインディングを使用していくつかのテストを実行したいと思います。私はqemu仮想マシンを使用しており、それを静的にリンクされたバインディングに設定したカスタムカーネルで実行しています。モジュール(たとえば、miimon)をロードするときにバインディングパラメータを設定できることをドキュメントで見ました。しかし、静的に接続するときにこれらの値をどのように設定しますか?

ベストアンサー1

バインディングインターフェイスを処理する2つのAPIがあります。また廃止されたコマンド(Linuxで)とをifconfig使用するifenslaveと、新しいバインディングインターフェイスを作成できなくなる可能性があります(したがって、max_bondsバインディングモジュールにゼロ以外の引数が必要です)。

  • カーネル(室温)ネットワークリンクAPI: ほとんどの最新のコマンドは以下で提供されます。IP ルート 2コマンドが含まれていますip link

  • コアシステムファイルシステム擬似ファイルによるAPI:通常/sys/

「最近の」バージョンはifenslave実際には次のように異なります。システムファイルシステムAPIと関連情報rtnetlinkAPIが合格しましたip link

デフォルトインターフェイスの1つまたは2つの代わりに0つのインターフェイスを生成するようにバインディングを設定する必要があります。これは、これら2つの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。おそらく以前に作成されたでしょう。IP ルート 2ツールはこれらすべてを処理できます。制限付き/組み込みシステムのツールがコマンドにアクセスできなくなった場合は、コマンドを読むことがまだ役に立つかもしれませんが、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
    

    インターフェイスを設定する方法はありません。システムファイルシステムそれでも。安全を確保するには:

    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/*
    

おすすめ記事