প্রশ্ন ইন্টেল igb (সমাধান করা) ব্যবহার করে 3/5 raid6 iSCSI NAS ডিভাইসগুলিতে 100% প্যাকেট প্রথম RX সারিতে ফেলেছে


সম্পাদন করা : সমস্যা সমাধান করা হয়। প্রশ্নের মধ্যে সারি ফ্লো কন্ট্রোল প্যাকেট জন্য ব্যবহার করা হয়েছে। কেন igb চালক তাদের প্রত্যাহার (এবং গণনা) পর্যন্ত FC প্যাকেট propagated অন্য প্রশ্ন। কিন্তু সমাধান হল যে তথ্যটি হারিয়ে যাওয়া কোনও উপায়ে কিছুই বাদ পড়েনি।

আপনাকে অনেক ধন্যবাদ, syneticon-dj, আপনার পয়েন্টার dropwatchসোনা ছিল!

=== আরও রেফারেন্স জন্য মূল প্রশ্ন ===

আমাদের নিম্নলিখিত পরিস্থিতি আছে:

পদ্ধতি: প্রশ্নে সার্ভারটি 4 কোয়াড কোর কোরন সিপিএস, 128 গিগাবাইট ইসিসি র্যাম এবং ডেবিয়ান লিনাক্স চালাচ্ছে। কার্নেল 3.2.26।
ইন্টারফেসগুলি হল আইএলসিএসআই কার্ডগুলির সাথে ইন্টারনাল 82576 গিগাবাইট ইথারনেট কন্ট্রোলার ব্যবহার করে প্রতিটি ইন্টারফেস।

পটভূমি: আমাদের সার্ভারগুলিতে অনেকগুলি NAS (থিকাস N5200 এবং থিকাস XXX) iSCSI ডেডিকেটেড 1GB / গুলি ইন্টারফেসগুলিতে সংযুক্ত থাকে। আমরা প্রতিটি 4 পোর্ট সঙ্গে 5 কার্ড আছে। NAS ফিল্টার সরাসরি সংযুক্ত করা হয়, মধ্যে কোন সুইচ।

দুই সপ্তাহ আগে আমরা চারটি NAS ফিল্টার মুছে ফেলতে এবং তাদের উপর mdadm ব্যবহার করে raid6 তৈরি করতে ব্যবহার করতাম। LVM ব্যবহার করে এটি আমাদের গতিশীলভাবে আমাদের সমস্ত NAS প্রকল্পগুলি অনুসন্ধানের পরিবর্তে আমাদের বিভিন্ন প্রকল্পগুলির জন্য গতিশীলভাবে তৈরি, সঙ্কুচিত এবং / অথবা সঞ্চয় বৃদ্ধি করতে দেয়।

যাইহোক, আমরা অনেক ইন্টারফেস উপর অনেক overruns পেয়েছিলাম এবং অনেক প্যাকেট বাদ দেওয়া হয়েছে। তদন্তগুলি দেখায় যে, নেটওয়ার্কিং স্ট্যাকের জন্য ডিফল্ট সেটিংস বাড়ানো হয়েছে। আমি sysctl ব্যবহৃত না যতক্ষণ না আরো overruns ঘটেছে সব সেটিং tweak।

দুর্ভাগ্যবশত NAS NAS RAID এর জন্য ব্যবহৃত ইন্টারফেসগুলি এখনও অনেকগুলি প্যাকেট ড্রপ করে তবে কেবল RX।

অনুসন্ধানের পরে (এখানে, গুগল, মেটাজার, ইন্টেল, কোথাও, সর্বত্র) আমরা ইন্টেল igb ড্রাইভার সম্পর্কে কিছু সমস্যা পেতে তথ্য পেয়েছি এবং কিছু কাজ সম্পন্ন করতে হবে।

এইভাবে আমি সর্বশেষ সংস্করণটি ডাউনলোড করেছি (igb-4.2.16), এলআরও এবং পৃথক সারি সমর্থনের সাথে মডিউল সংকলন করে নতুন মডিউল ইনস্টল করা হয়েছে।

এই ড্রাইভারটি ব্যবহার করে সমস্ত 20 (!) ইন্টারফেসে এখন 8 টি RxTx সারি রয়েছে (unpaired) এবং LRO সক্ষম আছে। কংক্রিট অপশন লাইন হয়:

options igb InterruptThrottleRate=1 RSS=0 QueuePairs=0 LRO=1

irqbalancer চমত্কারভাবে সব ইন্টারফেসের সারি বিতরণ করা হয় এবং সবকিছু চমত্কার কাজ করে।

তাহলে আমি কেন লিখছি? আমরা নিম্নলিখিত বিজোড় পরিস্থিতি আছে এবং সহজভাবে ব্যাখ্যা করতে পারবেন না:

NAS রেডের জন্য পাঁচটি ইন্টারফেসের মধ্যে (আমরা এক অতিরিক্ত NAS যুক্ত করেছি, এবং mdadm একবার তার বর্তমান পুনঃসংশোধন শেষ হওয়ার পর RAID হত্তয়া উচিত) প্যাকেট ড্রপগুলির বিপুল পরিমাণ (লক্ষ লক্ষ!) দেখায়।

Ethtool এর সাথে অনুসন্ধানগুলি এখন নতুন একাধিক-কিউ-সক্ষম ড্রাইভারের জন্য ধন্যবাদ, যা প্রতিটি ইন্টারফেসগুলি এক সারিতে ব্যাপকভাবে ব্যবহার করে, এই অনুমানটি আমরা অনুমান করব।

কিন্তু তিনটি ইনকামিং প্যাকেট সহ তিনটি কিউ ব্যবহার করুন, যা সমস্ত বাদ পড়ে। কমপক্ষে 'ঘড়ির' ব্যবহার করে তদন্তগুলি দেখানো হয়েছে, যে এই সারির প্যাকেট সংখ্যা বাদ দেওয়া প্যাকেজের সাথে সম্পর্কযুক্ত।

আমরা এমএইচকে NAS এবং ইন্টারফেসে 9000 থেকে 1500 পর্যন্ত পরিবর্তন করেছি, কিন্তু প্যাকেট ড্রপ রেট বৃদ্ধি পেয়েছে এবং এমড্যাডএম কর্মক্ষমতা হ্রাস পেয়েছে। সুতরাং এটি একটি এমটিইউ সমস্যা মত দেখাচ্ছে না। উপরন্তু নেটওয়ার্ক স্ট্যাক এর নিষ্পত্তিযোগ্য মেমরির পরিমাণ রয়েছে, এটি একটি সমস্যাও হতে পারে না। ব্যাকলগগুলি যথেষ্ট বড় (আসলে বিশাল) এবং আমরা সমুদ্রের সম্পূর্ণ।

এখানে উদাহরণ আউটপুট আছে:

~ # for nr in 2 3 4 5 9 ; do eth="eth1${nr}" ; echo " ==== $eth ==== " ; ethtool -S $eth | \
> grep rx_queue_._packet | grep -v " 0" ; ifconfig $eth | grep RX | grep dropped ; \
> echo "--------------" ; done
==== eth12 ==== 
    rx_queue_0_packets: 114398096
    rx_queue_2_packets: 189529879
          RX packets:303928333 errors:0 dropped:114398375 overruns:0 frame:0
--------------
==== eth13 ==== 
    rx_queue_0_packets: 103341085
    rx_queue_1_packets: 163657597
    rx_queue_5_packets: 52
          RX packets:266998983 errors:0 dropped:103341256 overruns:0 frame:0
--------------
==== eth14 ==== 
    rx_queue_0_packets: 106369905
    rx_queue_4_packets: 164375748
          RX packets:270745915 errors:0 dropped:106369904 overruns:0 frame:0
--------------
==== eth15 ==== 
    rx_queue_0_packets: 161710572
    rx_queue_1_packets: 10
    rx_queue_2_packets: 10
    rx_queue_3_packets: 23
    rx_queue_4_packets: 10
    rx_queue_5_packets: 9
    rx_queue_6_packets: 81
    rx_queue_7_packets: 15
          RX packets:161710730 errors:0 dropped:4504 overruns:0 frame:0
--------------
==== eth19 ==== 
    rx_queue_0_packets: 1
    rx_queue_4_packets: 3687
    rx_queue_7_packets: 32
          RX packets:3720 errors:0 dropped:0 overruns:0 frame:0
--------------

নতুন অতিরিক্ত ড্রাইভ eth15 সংযুক্ত করা হয়।
আপনি দেখতে পারেন, কোন overruns এবং কোন ত্রুটি আছে। এবং অ্যাডাপ্টারের রিপোর্ট, যে তারা একটি একক প্যাকেট ড্রপ না। সুতরাং এটি কার্নেল তথ্য দূরে নিক্ষেপ করা হয়। কিন্তু কেন?

সম্পাদন করা: আমি উল্লেখ করতে ভুলে গেছি যে eth15 তে eth12 একই কার্ডে অবস্থিত। অন্য একটি eth19।

কেউ কি কখনও এমন অদ্ভুত আচরণ দেখেছে, এবং পরিস্থিতি সমাধানে প্রতিকারের সমাধান আছে?

এবং এমনকি যদি না, কেউ কি একটি পদ্ধতি যা আমরা করতে পারে জানেন অন্তত কোন প্রক্রিয়া ড্রপ লাইন দখল খুঁজে বের করে?

আগাম অনেক ধন্যবাদ!


5
2018-06-07 20:35


উত্স


এটি একটি ভয়ঙ্কর সেটআপ। কিন্তু একটি আকর্ষণীয় প্রযুক্তিগত প্রশ্ন। - ewwhite
ঠিক কি ভয়ানক? ISCSI ব্যবহার করে NAS RAID স্থাপনের জন্য আমি কতটুকু এবং টিউটোরিয়াল পেয়েছি। অন্তত এটা অসাধারণ বলে মনে হচ্ছে না, তাই না? - Yamakuzure
এই স্পষ্টভাবে একটি অস্বাভাবিক সেটআপ। যথাযথ আকারের ডিস্ক / ইন্টারকানেক্স এবং ক্ষমতা সহ যথাযথ আকারের স্টোরেজ ইউনিট তৈরি / কেনার মাধ্যমে আপনি আরও ভালোভাবে পরিষেবা পাবেন। - ewwhite
@ ইয়ামাকুজার কি অসাধারণ ব্যাপার হল আপনার অনেকগুলি ইন্টারফেস এবং রিড্যান্ট্যান্ট সুইচের পরিবর্তে সরাসরি সংযোগগুলি ব্যবহার করা। এছাড়াও, একটি md অ্যারে নির্মাণের জন্য iSCSI- র মাধ্যমে স্টোরেজ স্পেস ব্যবহার করার জন্য "নীরব" স্টোরেজ ডিভাইসগুলি অবশ্যই টেকনিক্যালি সম্ভব, তবে সাধারণত একটি "বুদ্ধিমান" স্টোরেজ সহ একটি অ্যাক্টিভেটেড ম্যানেজমেন্ট ইন্টারফেসের অধীনে স্থিতিস্থাপকতা এবং পর্যাপ্ত স্থান সরবরাহকারী একটি পদ্ধতি পছন্দ করা হবে। আমি দেখি আপনি কম খরচে স্যান তৈরি করার চেষ্টা করছেন, কিন্তু সম্ভবত আপনি নিজের কল্পনা করার চেয়ে নিজেকে আরও বেশি সমস্যায় ফেলছেন। - the-wabbit
@ewwhite: দুর্ভাগ্যবশত একটি "যথোপযুক্ত সৃষ্টিকর্তা স্টোরেজ ইউনিট" যা 23 টি 5.2TB NAS প্রতিস্থাপন করতে পারে, তাই না imho বিদ্যমান। যাইহোক, আমরা এখন যারা filers আছে এবং সহজভাবে তাদের একত্রীকরণ করতে চান। - Yamakuzure


উত্তর:


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

এছাড়াও, আপনার সেটআপটি বেশ জটিল হিসাবে, আপনাকে এটি সরল করে সমস্যাটিকে আলাদা করার চেষ্টা করা উচিত। এই আমি কি করতে হবে:

  1. সহজ মামলা বাতিল, যেমন। ইস্যু দ্বারা লিঙ্ক পরিসংখ্যান চেক করে /sbin/ethtool -S <interface> ড্রপ একটি লিঙ্ক সম্পর্কিত সমস্যা কিনা তা দেখতে
  2. এনআইসিগুলি বিঘ্ন কোলাসিংয়ের ব্যবহার করছে, রিং বাফার বৃদ্ধি এবং এটি বিষয় সাহায্য করে দেখুন
  3. ব্যবহার dropwatch অন্য কোন বাফার বাড়ানো যেতে পারে যদি একটি ভাল ধারণা পেতে
  4. মাল্টিউইউ নেটওয়ার্কিং পুনরায় নিষ্ক্রিয় করুন - ২0 টি সক্রিয় ইন্টারফেসের সাথে খুব কমই এমন একটি পরিস্থিতি থাকবে যেখানে ইন্টারফেস প্রতি একাধিক সারি কোনও কর্মক্ষমতা অর্জন করবে এবং আপনার বিবরণ থেকে এটি একটি কুইন-সম্পর্কিত সমস্যা হতে পারে
  5. ইন্টারফেসের সংখ্যা হ্রাস করুন এবং সমস্যাটি স্থির থাকে কিনা তা দেখুন
  6. অন্য কিছু যদি সাহায্য করে, একটি প্রশ্ন পোস্ট করুন কার্নেল netdev মেইলিং তালিকা

6
2018-06-08 07:30



ধন্যবাদ। আমি সচেতন ছিলাম না dropwatch. - ewwhite
1: আমরা ব্যবহার করে লিংক stat পালন করেছি watchethtool উপর। সবকিছু স্থিতিশীল। 2: watch -g সন্দেহজনক কিছু দেখানো হয়নি। কিন্তু আমি তা মনে রাখব এবং রিং বাফার বাড়ানোর পরে কি হবে তা চেষ্টা করব। 3: আমি দিতে হবে dropwatchএকটি চেষ্টা, যে ধারণা জন্য আপনাকে অনেক ধন্যবাদ! 4: আচ্ছা, আমাদেরও একক-সারির ড্রপ হার ছিল। 5: আচ্ছা, প্রায় সব ইন্টারফেস বর্তমানে ব্যবহার করা হয় (এবং প্রয়োজন!) শুধুমাত্র দুটি অতিরিক্ত। 6: আমি আপনার ধারনা bet 2 এবং 3 একটি সমাধান খুঁজে পেতে আমার আনা হবে। (আমি জানি না dropwatchহয়!) যদি না আমি চেষ্টা করব। আপনাকে অনেক ধন্যবাদ! - Yamakuzure
সমস্যা সমাধান করা হয়! বাদ দেওয়া প্যাকেটগুলি কেবল rx_flow_control_xon এবং xoff প্যাকেটগুলি। ফিল্টার তিনটি সহজ যথেষ্ট দ্রুত হয় না। এবং এমটিইউকে 1500 হ্রাস করার সময় "ড্রপ রেট" বেড়ে গিয়েছিল। এজন্য ফ্লো কন্ট্রোলটি উদ্দেশ্য হিসাবে কাজ করে। কেন চালককে এফসি প্যাকেটগুলি সরানো উচিত যাতে তারা বাদ পড়ে (এবং গণনা করা) আমার জন্য একটি ধাঁধা, কিন্তু অন্তত কিছু খারাপ ঘটছে না। ("ড্রপওয়াচ" কি ছিল চূড়ান্ত সূত্র দিয়েছে) - Yamakuzure
@ ইয়ামাকুজুর খুশি এটা সমাধান করা যেতে পারে। আমাকে পজিশন করার একমাত্র বিষয় হল ইথারনেটটিতে প্রবাহ নিয়ন্ত্রণের জন্য XON এবং XOFF এর ধারণা নেই - এটি কেবল মালয়েস্টাস্ট ঠিকানার জন্য নির্ধারিত PAUSE ফ্রেমগুলি ব্যবহার করে। এটি অভ্যন্তরীণ কার্নেল কাঠামো অন্যান্য ট্রান্সমিশন প্রোটোকলগুলির সাথে সামঞ্জস্যের জন্য XON / XOFF আচরণের অনুকরণ করতে পারে। PAUSE ফ্রেমগুলিকে একটি বৈধ মাল্টিস্টাস্ট গন্তব্যে সন্নিবেশ করা হয়, এটি গণনা দেখতে ভুল বলে মনে হচ্ছে না। যেহেতু গন্তব্য ঠিকানাটি ইন্টারফেসের মালিকানাধীন নয়, এটি তাদের বাদ দেওয়ার জন্য ভুল বলে মনে হচ্ছে না, যদিও আমি দেখতে পারি যে এটি কীভাবে বিভ্রান্তিকর। - the-wabbit
@ ইয়ামাকুজুর বিটিডব্লিউঃ আমি বলা আপনি N5200 কুকুর ধীর ছিল;) - the-wabbit