লিনাক্সে সফ্টওয়্যার RAID এবং LVM ব্যবহার করার সময়, কোন আইও শিডিউলার এবং রিডহেড সেটিংস সম্মানিত হয়?


28

একাধিক স্তর (শারীরিক ড্রাইভ -> এমডি -> ডিএম -> এলভিএম) এর ক্ষেত্রে, শিডিয়ুলার, রিডহেড সেটিংস এবং অন্যান্য ডিস্ক সেটিংস কীভাবে ইন্টারঅ্যাক্ট করে?

ভাবুন আপনার mddm দ্বারা তৈরি একটি সফ্টওয়্যার RAID ডিভাইসের সমস্ত অংশ (/ dev / sda - / dev / sdd) বেশ কয়েকটি ডিস্ক রয়েছে (/ dev / sda - / dev / sdd)। (শারীরিক ডিস্ক ও / dev / md0 সহ) প্রতিটি ডিভাইস আই নির্ধারণকারী জন্য নিজস্ব সেটিং (হয়েছে তাই মত পরিবর্তিত ) এবং readahead ( blockdev ব্যবহার পরিবর্তিত )। আপনি যখন ডিএম (ক্রিপ্টো) এবং এলভিএমের মতো জিনিস ফেলে দেন আপনি তাদের নিজস্ব সেটিংসের সাথে আরও বেশি স্তর যুক্ত করেন।

উদাহরণস্বরূপ, যদি ফিজিকাল ডিভাইসটিতে 128 টি ব্লকের আগে পড়া থাকে এবং RAID এর 64 টি ব্লকের একটি রিডহেড থাকে, তবে আমি / dev / md0 থেকে পাঠ করিলে সম্মানিত হয়? এমডি ড্রাইভার কি একটি 64 টি ব্লক পড়ার চেষ্টা করে যা প্রকৃত ডিভাইস ড্রাইভার 128 ব্লকের একটি পঠনকে অনুবাদ করে? অথবা র‌্যাড রিডহেড অন্তর্নিহিত ডিভাইসে "পাস-থ্রো" করে, যার ফলে 64৪ টি ব্লক পড়ে?

একই ধরণের প্রশ্ন শিডিয়ুলারদের জন্য রয়েছে? আইও শিডিউলারের একাধিক স্তর এবং সেগুলি কীভাবে ইন্টারঅ্যাক্ট করে সে সম্পর্কে কি আমাকে চিন্তিত হতে হবে, বা / dev / md0 কার্যকরভাবে অন্তর্নিহিত শিডিয়ুলগুলিকে ওভাররাইড করে?

এই প্রশ্নের উত্তর দেওয়ার জন্য আমার প্রচেষ্টায়, আমি শিডিয়ুলার এবং সরঞ্জামগুলিতে কিছু আকর্ষণীয় ডেটা তৈরি করেছি যা এটি বের করতে সহায়তা করতে পারে:

উত্তর:


7

আপনি যদি এমডি0 থেকে একটি রিড করেন তবে এমডি 0 এর জন্য রিডহেড ব্যবহার করা হবে। আপনি যদি এমডি 0 এর একটি উপাদান এসডিএ থেকে পঠন করেন তবে এটি এসডিএ সেটিংসটি ব্যবহার করবে। ডিভাইস ম্যাপার কেবল একটি আই / ও বিচ্ছিন্ন করে একাধিক পাঠায় এবং রেড করতে লেখেন, তবে এটি ব্লক ক্যাশে স্তরটির ঠিক নীচে যেখানে রিডহেড হয় takes স্টোরেজ স্ট্যাকটি দেখে মনে হচ্ছে:

ফাইল সিস্টেম - আপনি O_DIRECT দিয়ে খুললে ক্যাশে বাইপাস করে

ব্লক ক্যাশে - readahead, ক্যাশে লিখুন, সময়সূচী

ডিভাইস-ম্যাপার - ডিএম, এলভিএম, সফ্টওয়্যার RAID, স্ন্যাপশট ইত্যাদি

এসডি - ডিস্ক ড্রাইভার

এসসিএসআই - ত্রুটি পরিচালনা, ডিভাইস রুটিং

হার্ডওয়্যার ড্রাইভার - স্ক্সি কার্ড, এফসি কার্ড, ইথারনেট

আপনি যখন করবেন তখন নোট করুন

dd if=/dev/sda of=foo

আপনি ফাইল হিসাবে এসডিএ পড়ছেন, তাই আপনি ব্লক ক্যাশে যাচ্ছেন। সরাসরি ডিস্কে যেতে, করুন

dd if=/dev/sda of=foo iflag=direct

I / O লিফ্ট শিডিয়ুলারের ক্ষেত্রে, কেবলমাত্র এটি ডিস্ক ড্রাইভারের (এসডি) উপস্থিত রয়েছে। / Sys / block / md বা / sys / block / dm এর অধীনে কোনও কিউ ডিরেক্টরি নেই। আপনি কেবল একবার ডিস্ক লিফ্ট সাজানোর মাধ্যমে যান।


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