পুনরায় বুট করার মাধ্যমে কীভাবে ইথিওল সেটিংস বজায় রাখা যায়


15

আমি একটি সেন্টোএস 5 সার্ভারে টিসিপি সেগমেন্টেশন অফলোডটি বন্ধ করতে চাই। এথ্টোল কমান্ডটি ব্যবহার করা হ'ল ethtool -K eth0 tso offতবে, এই সেটিংটি কেবলমাত্র এই অধিবেশনটির জন্যই স্থায়ী। পুনরায় বুট করার মাধ্যমে কীভাবে আমি এটি চালিয়ে যেতে পারি?


2
এটি কোথাও একটি সূচনা স্ক্রিপ্টে রাখুন।
জোরডেচে

উত্তর:


15

এটা থেকে ওয়েবপৃষ্ঠা :

আপনি এথটল কমান্ডগুলিতে প্রবেশ করতে পারেন /etc/rc.local (বা আপনার বিতরণের সমতুল্য) যেখানে বর্তমান রানলেভল সম্পূর্ণ হওয়ার পরে কমান্ডগুলি চালিত হয়, তবে এটি আদর্শ নয়। রানলেভাল চলাকালীন নেটওয়ার্ক পরিষেবা শুরু হয়ে থাকতে পারে এবং ইথিওল কমান্ডগুলি নেটওয়ার্ক ট্র্যাফিককে বাধা দেয়। ইন্টারফেসটি সামনে আসার সাথে সাথে আদেশগুলি প্রয়োগ করা আরও বেশি ভাল।

সেন্টোসের নেটওয়ার্ক পরিষেবাটিতে এটি করার ক্ষমতা রয়েছে। স্ক্রিপ্টটি /etc/sysconfig/network-scripts/ifup-postঅস্তিত্বের জন্য যাচাই করে/sbin/ifup-local এবং এটি উপস্থিত থাকলে এটি ইন্টারফেসের নামের সাথে প্যারামিটার হিসাবে চালায় (যেমন /sbin/ifup-local eth0:)

আমরা স্পর্শ সহ এই ফাইলটি এটির সেলইনাক্স প্রসঙ্গটি সেট /sbin/ifup-localকরে এক্সিকিউটেবল করার জন্য এটি তৈরি করতে পারি এবং তারপরে এডিটরটিতে এটি খুলতে পারি।chmod +x /sbin/ifup-localchcon --reference /sbin/ifup /sbin/ifup-local

সমস্ত ইন্টারফেসে একই সেটিংস প্রয়োগ করার জন্য একটি সাধারণ স্ক্রিপ্ট এমন কিছু হবে

#!/bin/bash
if [ -n "$1" ]; then
/sbin/ethtool -G $1 rx 4096 tx 4096
/sbin/ethtool -K $1 tso on gso on
fi

মনে রাখবেন এটি সমস্ত ইন্টারফেস এমনকি লুপব্যাকেও সেটিংস প্রয়োগ করার চেষ্টা করবে।

আমাদের যদি বিভিন্ন ইন্টারফেস থাকে তবে আমরা এতে আলাদা সেটিংস প্রয়োগ করতে চাই বা লুপব্যাকটি এড়াতে চাই, আমরা কেস স্টেটমেন্ট দিতে পারি

#!/bin/bash
case "$1" in
eth0)
/sbin/ethtool -G $1 rx 16384 tx 16384
/sbin/ethtool -K $1 gso on gro on
;;
eth1)
/sbin/ethtool -G $1 rx 64 tx 64
/sbin/ethtool -K $1 tso on gso on
/sbin/ip link set $1 txqueuelen 0
;;
esac
exit 0

এখন এথ্টোল সেটিংস ইন্টারফেসগুলিতে শুরু হওয়ার সাথে সাথে প্রয়োগ করা হয়েছে, ইন্টারফেসটি আনার সাথে সাথে নেটওয়ার্ক যোগাযোগের সমস্ত সম্ভাব্য বাধা সম্পন্ন হয় এবং আপনার সার্ভারটি পুরো নেটওয়ার্ক ক্ষমতা সহ বুট করা চালিয়ে যেতে পারে।


এছাড়াও ETHTOOL_OPTS সম্পর্কে নোট এখানে বর্ণিত access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/... কিছু কারণে এটা আমার মেশিন এখনো কাজ করে না দ্বারা যাইহোক superuser.com/questions/995200/...
javapowered

13

RHEL7 এর জন্য / etc / sysconfig / নেটওয়ার্ক-স্ক্রিপ্ট / ifcfg- * আপনার থাকতে পারে:

ETHTOOL_OPTS = "- কে $ {ডিভাইস} জিএসও বন্ধ করতে চাই তাই"

যদি আরও বিকল্প থাকে তবে ব্যবহার করুন

ETHTOOL_OPTS = "- কে $ {ডিভাইস} gso বন্ধ; -কে $ {ডিভাইস} বন্ধ;

আপনার ifcfg ফাইলে আপনার স্বাভাবিকভাবেই DEVICE সংজ্ঞায়িত করতে হবে।

কোনও rc.local বা অতিরিক্ত ifup স্ক্রিপ্টগুলির প্রয়োজন নেই। জেনেরিক স্থাপনা সিস্টেমে আপনার পক্ষে সহজ to


10

আপনি যদি RHEL7 (বা একইভাবে) তে থাকেন এবং আপনার ইন্টারফেসগুলি নিয়ন্ত্রণ করতে /etc/init.d/network এর পরিবর্তে নেটওয়ার্ক ম্যানেজার ব্যবহার করেন তবে / sbin / ifup-local (সেইসাথে ifdown-প্রাক-লোকাল) এবং ifdown- স্থানীয় ) কখনই কার্যকর হবে না।

পরিবর্তে আপনার স্ক্রিপ্টগুলি /etc/NetworkManager/dispatcher.d/ এ রাখুন এবং নিশ্চিত করুন যে নেটওয়ার্কম্যানেজার-প্রেরণকারী পরিষেবাটি সক্ষম হয়েছে

systemctl enable NetworkManager-dispatcher

ইঙ্গিত: প্রেরণকারী কেবল তখনই কিক করবে যখন নেটওয়ার্কম্যানেজার একটি ইন্টারফেসে পরিবর্তন করে, এটি চলমান বা কোনও কিছুর প্রয়োজন হয় না, সুতরাং যদি অবস্থাটি পড়ে

Active: inactive (dead)

পুরোপুরি ঠিক আছে!

আপনার স্ক্রিপ্টটি নিশ্চিত করুন:

  1. এক্সিকিউটেবল (chmod + এক্স)
  2. মূলের মালিকানাধীন
  3. কেবল রুট দ্বারা লিখনযোগ্য (chmod 755)

এখন নেটওয়ার্কম্যানেজার প্রেরককে দুটি (2) ভেরিয়েবলগুলি পাস করবে:

$ 1 হ'ল ইন্টারফেস ( eno16777984 , eth0 , ppp0 , ইত্যাদি ...)

Holding 2 স্থিতি ধরে রাখছে (হয় উপরে বা নীচে )

এবং এটি স্ক্রিপ্টগুলিকে শৃঙ্খলাবদ্ধ করে (ঠিক যেমন / ইত্যাদি / আরসি ...) প্রেরণকারীর দ্বারা চালিত ক্রমের উপর কিছুটা নিয়ন্ত্রণ রাখতে পারে:

10-প্রথম, 20-সেকেন্ড এবং আরও ...

অর্ডারটি একটি সংযোগে আরোহণ করা হবে

যদি [$ 2 = "আপ"] এর 10-প্রথম এবং তার পরে 20-সেকেন্ড হয়

এবং একটি সংযোগ বিচ্ছিন্ন নেমে

যদি [$ 2 = "ডাউন"] আপনি 20-সেকেন্ড পরে 10-প্রথম পাবেন

ইত্যাদি।

সুতরাং ওপি আপনাকে যা খুঁজছিল তা সম্পাদন করতে এই জাতীয় কিছু রাখতে পারে:

#!/bin/bash
if [ "$1" = "eth0" && "$2" = "up" ]; then
  /sbin/ethtool --offload eth0 tso off
fi

ইন / etc/ নেটওয়ার্ক ম্যানেজার / ডিসপ্যাচার.ড / 20 - ethtool

এবং এটি একটি দিন কল।

চিয়ার্স


দয়া করে মনে রাখবেন যে এই প্রশ্নটি অনেক পুরানো এবং এর ইতিমধ্যে একটি স্বীকৃত উত্তর রয়েছে এবং আপনার উত্তরটি নতুনভাবে যুক্ত করে না। প্রথম পৃষ্ঠায় বিশৃঙ্খলা দেখা দেয় বলে দয়া করে খুব পুরানো পোস্টের উত্তর এড়াতে চেষ্টা করুন।
ক্যাথরিন ম্যাকইননেস

3
"Ifup- লোকাল" এর জন্য গুগল অনুসন্ধান করুন এবং আপনি এটি 6th ষ্ঠ হিট হিসাবে পেয়েছেন। কিছুই আমি "পুরানো" বিবেচনা করব না
ব্যবহারকারী 1972814

2
এটি সেন্টোস to এর ক্ষেত্রে অবশ্যই কিছু যুক্ত করে
Cent. সেন্টোস in-এ

3
বাশ স্ক্রিপ্টের একটি ত্রুটি রয়েছে, এটি হওয়া উচিত:if [ "$1" = "eth0" ] && [ "$2" = "up" ]; then
অগ্রে 1'18

5

আমি বন্ডেড ইন্টারফেস ব্যবহার করছিলাম বলে গ্রহণযোগ্য উত্তরের (যা আমি তাড়াতাড়ি যোগ করতে খুব তাড়াতাড়ি পেয়েছি,) বেশ সমস্যায় পড়েছি।

কী ঘটছে তা আবিষ্কার করতে আমার কিছুটা সময় লেগেছে তবে আমি দেখতে পেয়েছি যে কোনও বন্ড আনার সময়, বা স্বতন্ত্রভাবে কোনও বন্ড দাস আনার সময়, ifup-local স্ক্রিপ্টটি দাস ইন্টারফেসের জন্য ডাকা হত না। আমি ধরে নিলাম এটি কারণ গোলাম ইন্টারফেসগুলিতে তাদের দেওয়া কোনও আইপি ঠিকানা নেই।

এটিকে পেতে, আমি ইন্টারফেসের যে ifup-localবিষয়বস্তু /proc/bonding/bondXউত্থাপিত হয়েছিল তার বিষয়বস্তুগুলি বিশ্লেষণ করতে সংশোধন করেছি , যদি এটি বন্ধন হয় তবে স্লেভ ইন্টারফেসের নামগুলি পেতে, এবং তারপরে প্রয়োজনীয় জিনিসগুলি দিয়েছিলাম।

শেষ পর্যন্ত আমার ifup-localনীচের মত দেখাচ্ছে:

#!/bin/bash

if [ -n "$1" ]
then
  IFACE="$1"

  # If interface is physical
  if [[ $IFACE =~ ^eth[0-9]+$ ]]
  then
    # Do whatever you need for a physical interface here
    # example below
    /sbin/ethtool -K $IFACE rx off    

  # Else if it's a bond
  elif [[ $IFACE =~ ^bond[0-9]+$ ]]
  then
    # Do whatever you need for the bond here
    # example below
    /sbin/ethtool -K $IFACE gso off

    # Now deal with slaves
    # Pull out slave interface names from /proc/net/bonding/bondX
    SLAVES=$(/bin/grep -oP "Slave Interface: \K(eth[0-9]+)" /proc/net/bonding/$IFACE)
    for SLAVE in $SLAVES
    do
      # Do whatever you need with the slave here
      # example below
      /sbin/ethtool -K $SLAVE tso off gso off
    done
  fi
fi

ক্যাভিয়েট: / স্ক্রিপ্টটি লেখার সময় আমি যেটি ব্যবহার করছিলাম তার সাথে রেডহ্যাট / ফেডোরা / সেন্টোসের বিভিন্ন সংস্করণের জন্য / প্রোক / নেট / বন্ডিং / বন্ডএক্সএক্সের বিষয়বস্তু আলাদা হতে পারে, সুতরাং স্লেভ ইন্টারফেসের নামগুলি সরিয়ে নেওয়ার আদেশটি কাজ নাও করতে পারে ।


4

অফ-টপিক, উবুন্টু ব্যবহারকারীরা যারা এখানে এসেছিলেন তাদের জন্য, আমার মতো এটিও নোট হিসাবে:

উবুন্টুতে, পাঠ্যপুস্তকটি করার উপায় হ'ল / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস ফাইল সম্পাদনা করা যা পরিবর্তে init.d / প্রাক-আপ-ইত্যাদি ইত্যাদি স্ক্রিপ্টগুলি পড়ে read সুতরাং একটি / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস ফাইলটি এর মতো দেখতে পারে:

auto eth0
iface eth0 inet static
pre-up /sbin/ethtool -s eth0 speed 10 duplex full

ডক্স এটিই বলে, তবে এটি কার্যকর হয় না । হতে পারে যে প্রাক-আপ এবং আপ স্ক্রিপ্টগুলিতে পার্সিং যুক্তিটি কিছুটা তারিখযুক্ত এবং সেগুলি ইন্টারফেস ফাইল থেকে প্রয়োজনীয় সেটিংসটিকে বিশ্লেষণ করে না। জানিনা। কমপক্ষে, এটি আমার পক্ষে কাজ করছে না।

সুতরাং হ্যাক-ইশ কিন্তু এখনের কাজের সমাধানটি এখনও একটি স্থানীয় /etc/rc.local ফাইল তৈরি করতে এবং সম্পাদনা করতে হবে এবং সেখানে কমান্ডটি প্রস্থান করার জন্য উল্লেখ করা হয়েছে (তবে লক্ষ্য রাখবেন যে ইন্টারফেসটি ইতিমধ্যে হয়ে যাওয়ার পরে এটি কয়েক সেকেন্ডের জন্য নেটওয়ার্কিংকে বাধা দিতে পারে) প্রতিপালিত). সুতরাং এটি হচ্ছে:

ethtool -s eth0 গতি 10 ডুপ্লেক্স পূর্ণ অটোনগ চালু

মধ্যে /etc/rc.local কাজ সমাধান হিসেবে উপরে অভিপ্রেত একটি ইন্টারফেস মন্দীভূত হয়।

উপর উবুন্টু 17,04 এবং উপরোক্ত

আরও সাম্প্রতিক উবুন্টাস সিস্টেমড ব্যবহার করে, এবং এভাবে আরসি.লোকাল ফাইলটি 'স্টার্ট' রানলেভেলে পৌঁছানোর পরে অগত্যা কার্যকর হয় না। "আরসি-লোকাল" পরিষেবা সক্ষম করতে হবে। যদিও এটি ডিফল্টরূপে বলে মনে হচ্ছে, পিছনের সামঞ্জস্যতার কারণে, সম্ভবত - এটির সাথে তার স্থিতি পরীক্ষা করা নিশ্চিত করুনsudo systemctl status rc-local


pre-upনির্দেশ, ধন্যবাদ :) TSO পতাকা সেটিংয়ের জন্য লিনাক্স মিন্ট 17.3 উপর আমার জন্য কাজ
Joril

1

আমি দেখতে পেলাম যে এই ধরণের কনফিগারেশনটি সেট করা /etc/network/interfacesআসলে উবুন্টুর পক্ষে কাজ করে (মঞ্জুরি দিয়েছি যে আমি এটি বন্ধ করার জন্য ব্যবহার করেছি large-receive-offload, তবে এটি আসলে গুরুত্বপূর্ণ নয়):

অটো এথ 1
iface এথ 1 ইনট স্ট্যাটিক
    ঠিকানা xxx.xxx.xxx.xxx
    নেটমাস্ক এক্সএক্স
    প্রি-আপ / এসবিন / ইথিওল-কে $ আইএফএসি লোর বন্ধ

1

উবুন্টুর জন্য, আপনি নিম্নলিখিত লাইনটি এতে যোগ করে এটি করতে পারেন /etc/network/interfaces:

auto eth0
iface eth0 inet static
[...]
post-up /sbin/ethtool -K eth0 tso off gso off gro off

এখানে পোস্ট-আপ নির্দিষ্ট ইন্টারফেস আনার পরে প্রদত্ত ক্রিয়াকলাপটি সম্পাদন করবে।


0

হ্যাঁ, এটি মুহুর্তের জন্য কনফিগারেশন ফাইলগুলি ব্যবহার করে করা যায় না। আপনি কমান্ডটি ভিতরে রাখতে পারেন /etc/init.d/rc.localএবং এটি করা উচিত।

এই ফাইলটি বুটিং ক্রমের সর্বশেষে কার্যকর করা হয় এবং তাই ইন্টারফেসের জন্য বন্ধ করা হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.