এলভিএম, ডিভাইস-ম্যাপার, সফ্টওয়্যার রাইড এবং ব্লক ডিভাইসগুলির জন্য রিডহেড সেটিংস - কী জিতবে?


26

আমি এইটির একটি সোজা উত্তর খুঁজতে চেষ্টা করেছি এবং এটি অধরা প্রমাণিত হয়েছে। এই প্রশ্ন এবং এর উত্তরটি নিকটবর্তী, তবে সত্যই আমি আমার পছন্দ করতে চাই না। আমি যা জানি তা দিয়ে শুরু করি।

আপনার যদি স্ট্যান্ডার্ড ব্লক ডিভাইস থাকে এবং আপনি চালনা করেন তবে sudo blockdev --reportআপনি এরকম কিছু পাবেন:

RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0    500107862016   /dev/sda
rw   256   512  4096       2048    399999238144   /dev/sda1
rw   256   512  1024  781252606            1024   /dev/sda2

এখন, আপনি --setraকোনও পার্টিশন ব্যবহার করে সেই ডিফল্টটিকে 256 থেকে 128 এ পরিবর্তন করার সিদ্ধান্ত নিয়েছেন এবং এটি পুরো ব্লক ডিভাইসে ঘটে, যেমন:

sudo blockdev --setra 128 /dev/sda1
sudo blockdev --report
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   128   512  4096          0    500107862016   /dev/sda
rw   128   512  4096       2048    399999238144   /dev/sda1
rw   128   512  1024  781252606            1024   /dev/sda2

এটি আমার কাছে নিখুঁত ধারণা তৈরি করে - ব্লক স্তরের ডিভাইসটি সেটিংটি যেখানে পার্টিশন নয়, তাই এটি সমস্ত পরিবর্তিত হয়। এছাড়াও আরএ সেটিংস এবং ডিভাইসের মধ্যে ডিফল্ট সম্পর্কটি আমার কাছে বোধগম্য হয়, এটি সাধারণত:

RA * sector size (default = 512 bytes)

অতএব, আমি ডিফল্ট সেক্টরের আকারের সাথে উপরে উপরে পরিবর্তনগুলি 128 কে থেকে 64 কে নেমে পড়ব। এখন পর্যন্ত সব ঠিক আছে।

তবে, যখন আমরা একটি সফ্টওয়্যার RAID, বা LVM এবং ডিভাইস-ম্যাপার যুক্ত করব তখন কী ঘটে? পরিবর্তে আপনার প্রতিবেদনটি এর মতো দেখাচ্ছে বলে মনে করুন:

RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0     10737418240   /dev/xvda1
rw   256   512  4096          0    901875499008   /dev/xvdb
rw   256   512  4096          0    108447924224   /dev/xvdj
rw   256   512  4096          0    108447924224   /dev/xvdi
rw   256   512  4096          0    108447924224   /dev/xvdh
rw   256   512  4096          0    108447924224   /dev/xvdg
rw  4096   512  4096          0    433787502592   /dev/md0
rw  4096   512   512          0    429496729600   /dev/dm-0

এক্ষেত্রে আমাদের এমডিডএম দ্বারা নির্মিত এমডি0 এর শীর্ষে একটি ডিভাইস-ম্যাপযুক্ত ডিএম-0 এলভিএম ডিভাইস রয়েছে যা প্রকৃতপক্ষে চারটি ডিভাইস xvdg-j জুড়ে একটি RAID0 স্ট্রাইপ।

Md0 এবং dm-0 উভয়েরই আরএর জন্য 4096 এর সেটিংস রয়েছে, যা ব্লক ডিভাইসের চেয়ে অনেক বেশি। সুতরাং, এখানে কিছু প্রশ্ন:

  • ভার্চুয়াল ব্লক ডিভাইস চেইনে আরএ সেটিংস কীভাবে পাস হবে?
  • ডিএম-0 ট্রাম্প কি সমস্ত কারণ এটিই শীর্ষস্থানীয় ব্লক ডিভাইস যা আপনি আসলে অ্যাক্সেস করছেন?
  • চান lvchange -rউপর জন্য dm-0 ডিভাইস একটা প্রভাব আছে এবং এখানে দেখাবে না?

যদি এটি যতটা সহজ হয় তবে আপনি যে ভার্চুয়াল ব্লক ডিভাইসটি ব্যবহার করছেন তা থেকে আরএ সেটিংসটি পাস হয়ে যায়, এর অর্থ কি ডিএম -0 (বা এমডি0) থেকে একটি পড়া 4 x 4096 আরএ পড়বে? (প্রতিটি ব্লক ডিভাইসে একটি)। যদি তা হয় তবে এর অর্থ এই হবে যে এই সেটিংসটি উপরের দৃশ্যে রিডহেডের আকারটি বিস্ফোরিত করবে।

তারপরে রিডহেড সেটিংটি আসলে কী করছে তা নির্ধারণের ক্ষেত্রে:

ভার্চুয়াল ডিভাইসের আসল রিডহেড মান নির্ধারণ করতে আপনি উপরের ক্ষেত্রের আকারের সমতুল্য কী ব্যবহার করবেন:

  • RAID এর স্ট্রাইপ আকার (md0 এর জন্য)?
  • কিছু অন্যান্য খাত সমান?
  • এটি কনফিগারযোগ্য, এবং কিভাবে?
  • এফএস কি কোনও ভূমিকা পালন করে (আমি প্রাথমিকভাবে এক্স 4 এবং এক্সএফএসে আগ্রহী)?
  • অথবা, যদি এটি কেবলমাত্র পাস করা হয় তবে এটি কি কেবল শীর্ষ স্তরের ডিভাইস থেকে আরএ সেটিংসটি বাস্তব ব্লক ডিভাইসের খাত আকার দ্বারা গুণিত হয়?

অবশেষে, স্ট্রাইপ আকার এবং আরএ সেটিংয়ের মধ্যে কোনও পছন্দসই সম্পর্ক থাকবে (উদাহরণস্বরূপ)? এখানে আমি ভাবছি যে স্ট্রাইপটি যদি RAID ডিভাইসটি সরিয়ে ফেলার জন্য ক্ষুদ্রতম উপাদান হয় তবে আপনি আদর্শভাবে চান না যে সেখানে ন্যূনতম ইউনিটের ডেটা ব্যবহারের জন্য 2 ডিস্ক অ্যাক্সেস থাকতে হবে এবং আরএটি তৈরি করতে চান একক অ্যাক্সেসের মাধ্যমে অনুরোধটি পূরণ করতে যথেষ্ট বড়।


আপনি কোন লিনাক্স বিতরণ ব্যবহার করছেন? আপনি কি হার্ডওয়্যার বা সফ্টওয়্যার রেড ব্যবহার করছেন? সফ্টওয়্যার মত মনে হচ্ছে। যদি হার্ডওয়্যার হয় তবে আপনি কোন কার্ড / চিপসেটটি ব্যবহার করছেন তা ডিভাইসের ফার্মওয়্যারটিতে সেট এবং সঞ্চয় করা আছে।
জেসন হান্টলি

এছাড়াও, আরএ সেটিংস আপনার ফাইল সিস্টেমের বরাদ্দকরণের স্কিমের উপর নির্ভর করে। আপনি ext4 ব্যবহার করছেন?
জেসন হান্টলি

আমি আসলে উল্লেখ করেছি যে এটি সফ্টওয়্যার RAID এবং প্রশ্নের মধ্যে LVM, তাই হ্যাঁ - সফ্টওয়্যার। ফাইল সিস্টেমের ক্ষেত্রে, আমি এখানে এক্সএফএস এবং এক্সটোর 4 এর মধ্যে পার্থক্যে আগ্রহী, উভয়ের উত্তরগুলি যদিও ভাল হবে
অ্যাডাম সি

এক্সএফএস আরও ভাল পারফরম্যান্সের জন্য টিউন করা যেতে পারে। এটি এই সাইটের কয়েকটি জায়গায় coveredাকা রয়েছে: এখানে এবং এখানে ... আপনি লিনাক্সের কোন বিতরণ ব্যবহার করছেন? এটি একটি কারণ হিসাবে কাজ করে কারণ কিছু বিতরণ-নির্দিষ্ট সরঞ্জাম উপলব্ধ।
ইয়ে হোয়াইট

এটি কোনও পারফরম্যান্সের প্রশ্ন নয়, এটি আরও সুনির্দিষ্ট - আমি কেবল আরএ সেটিংস এবং সেগুলি কীভাবে এলভিএম / সফ্টওয়্যার RAID স্তরগুলির মাধ্যমে অনুবাদ / ইন্টারঅ্যাক্ট করে তা সম্পর্কে জানতে চাই
অ্যাডাম সি

উত্তর:


11

ভার্চুয়াল ব্লক ডিভাইস চেইনে আরএ সেটিংস কীভাবে পাস হবে?

এটা নির্ভর করে. ধরে নেওয়া যাক আপনি জেন ​​ডোমু-এর ভিতরে এবং আর = 256 রয়েছে। আপনার / dev / xvda1 হল / ডিভ / ডিএম 1 এর অধীনে দৃশ্যমান ডোম0-এ আসল এলভি। সুতরাং আপনার কাছে RA (domU (/ dev / xvda1)) = 256 এবং RA (dom0 (/ dev / dm1)) = 512 রয়েছে। এর ফলে এ জাতীয় প্রভাব পড়বে যে dom0 কার্নেল domU এর কার্নেলের চেয়ে অন্য আরএ দিয়ে / dev / dm1 অ্যাক্সেস করতে পারে। যে হিসাবে সহজ।

আমরা যদি / dev / md0 (/ dev / sda1, / dev / sda2) অধিবেশন অনুমান করি তবে আর একটি অধিবেশন ঘটবে।

blockdev --report | grep sda
rw   **512**   512  4096          0   1500301910016   /dev/sda
rw   **512**   512  4096       2048      1072693248   /dev/sda1
rw   **512**   512  4096    2097152   1499227750400   /dev/sda2
blockdev --setra 256 /dev/sda1
blockdev --report | grep sda
rw   **256**   512  4096          0   1500301910016   /dev/sda
rw   **256**   512  4096       2048      1072693248   /dev/sda1
rw   **256**   512  4096    2097152   1499227750400   /dev/sda2

/ Dev / md0 RA সেট করার ফলে / dev / sdX ব্লক ডিভাইসগুলি প্রভাবিত হবে না।

rw   **256**   512  4096       2048      1072693248   /dev/sda1
rw   **256**   512  4096    2097152   1499227750400   /dev/sda2
rw   **512**   512  4096          0      1072627712   /dev/md0

সুতরাং সাধারণত আমার মতে কার্নেল ব্লকডভাইসগুলিকে অ্যাক্সেস করে যেভাবে সেট করা আছে। একটি লজিকাল ভলিউম RAID (এটি এর অংশ) বা ডিভাইসম্যাপার ডিভাইস এবং প্রতিটি অপর আরএর সাথে সম্মত হবে can

সুতরাং উত্তরটি হল - আরএ সেটিংটি আইএমএইচও হ'ল ব্লক ডিভাইস চেইনটি অতিক্রম করে নি, তবে শীর্ষ স্তরের ডিভাইস আরএ সেটিং যাই হোক না কেন, উপাদান উপাদানগুলি অ্যাক্সেস করতে ব্যবহৃত হবে

ডিএম-0 ট্রাম্প কি সমস্ত কারণ এটিই শীর্ষস্থানীয় ব্লক ডিভাইস যা আপনি আসলে অ্যাক্সেস করছেন?

যদি আপনি "ট্রাম্প অল" দ্বারা গভীর প্রচারের অর্থ হয় - আমার আগের মতামত অনুসারে আমি মনে করি যে সিস্টেমে বিভিন্ন ডিভাইসের জন্য আপনার কাছে আলাদা আলাদা আরএ থাকতে পারে।

Lvchange -r এর dm-0 ডিভাইসে প্রভাব ফেলবে এবং এখানে প্রদর্শিত হবে না?

হ্যাঁ তবে এটি একটি বিশেষ ক্ষেত্রে। আসুন ধরে নেওয়া যাক আমাদের / dev / dm0 যা LVM এর / dev / vg0 / blockdevice। যদি তুমি করো:

lvchange -r 512 /dev/vg0/blockdevice

/ dev / dm0 এছাড়াও পরিবর্তন হবে কারণ / dev / dm0 এবং / dev / vg0 / blockdevice কার্নেলের অ্যাক্সেসের ক্ষেত্রে ঠিক একই ব্লক ডিভাইস device

তবে ধরে নেওয়া যাক যে জেন ডোমুতে / ডিভ / ভিজি0 / ব্লক ডিভাইস একইভাবে / ডিভ / ডিএম0 এবং / ডিভ / এক্সভিডিএ 1 যা এটি ব্যবহার করছে। / Dev / xvda1 এর RA নির্ধারণ কার্যকর হবে তবে dom0 দেখতে পাবে এটির নিজস্ব আরএ আছে।

ভার্চুয়াল ডিভাইসের আসল রিডহেড মান নির্ধারণ করতে আপনি উপরের ক্ষেত্রের আকারের সমতুল্য কী ব্যবহার করবেন:

আমি সাধারণত বিভিন্ন মান সহ পরীক্ষা করে এবং এটি এইচডিপিআরএম দিয়ে পরীক্ষা করে আরএ আবিষ্কার করি।

RAID এর স্ট্রাইপ আকার (md0 এর জন্য)?

উপরের মতই.

এফএস কি কোনও ভূমিকা পালন করে (আমি প্রাথমিকভাবে এক্স 4 এবং এক্সএফএসে আগ্রহী)?

অবশ্যই - এটি একটি খুব বড় বিষয়। আমি আপনাকে এখানে শুরু করার পরামর্শ দিচ্ছি http://archives.postgresql.org/pgsql-performance/2008-09/msg00141.php


এটি আমি যা খুঁজছি তার খুব কাছাকাছি, এবং আমার সন্দেহ ছিল - আপনি কি কেবল আমার জন্য একটি জিনিস পরিষ্কার করতে পারেন: / dev / md0 (/ dev / sda1, / dev / sda2) পরিস্থিতিতে আমি জানি যে আপনি সেট করতে পারেন পৃথক আরএ মানগুলি পৃথক করে, তবে আপনি যদি / dev / md0 এ মাউন্ট / ডেটা বলুন এবং এ থেকে একটি ফাইল পড়েন - 512 আরএ / / ডি / এসডিএ এবং / দেব / এসডি 2 (যেমন উভয়ের জন্য ব্যবহৃত 512) পড়ার জন্য ব্যবহৃত হয় বা 256 প্রতিটি ব্যবহার করা হয়? পূর্বেরটিকে যদি RAID0 RA সেট করা বুদ্ধিমান বলে মনে হয়: SUM (RAID0 এ ডিভাইসের RA)
অ্যাডাম সি

1
কেবল আমার অভিজ্ঞতা থেকে বলছি - RA = 512 on / dev / md0 সাথে / dev / sdX ডিস্কের অধীনে সেট করা ঠিক একইভাবে কাজ করে যা আমরা RA = 512 এর সাথে / dev / sdX অ্যাক্সেস করেছিলাম তবুও উদাহরণস্বরূপ আমাদের আরএ = 256 থাকতে পারে নীচে ব্লক ডিভাইস স্থাপন। 256 সেটিংটি এ ক্ষেত্রে উপেক্ষা করা হবে (নোট করুন / dev / sda এটি ব্লক ডিভাইস হিসাবে অকার্যকর যদি এটি / dev / md0 এর অংশ হয়)। আমি কোনও কার্নেল প্রোগ্রামার নই তবে এটি যৌক্তিক বলে মনে হচ্ছে এবং এটি আমার অনুশীলনের মাধ্যমে নিশ্চিত হয়ে গেছে। তাই পুনরায় বিশ্বাস। / ডি / এমডি0, আরএ = 512 থেকে 3 টি থ্রেড পড়া / ডি / এসডি {এ, বি, সি RA থেকে আরএ = 512 সহ 3 টি থ্রেড পড়া।
wojciechz

দুর্দান্ত, ধন্যবাদ! উত্তরে আরও পরিষ্কার করার জন্য আমি কিছু জিনিস সম্পাদনা করেছি। আমি গ্রহণ করার আগে আমি আরও একটি জিনিস জিজ্ঞাসা করতে পারি? এইচডিপিআরএম আরএ পরীক্ষার জন্য আপনার কাছে কি কোনও উদাহরণ (বা একটিতে লিঙ্ক) আছে? আমি নিজেই অনুরূপ কিছু করতে যাচ্ছিলাম, সুতরাং যদি কোনও ভাল রেফারেন্স থাকে তবে এটি আমার সময় সাশ্রয় করবে।
অ্যাডাম সি

এটি জটিল নয়, তবে আপনি যা চেক করতে চান তা নির্ভর করে। Hdparm ম্যানুয়াল দয়া করে দেখুন। আপনি যদি ডিস্কের পঠনগুলি পরীক্ষা করতে চান (যা রিডহেডের একটি ডেরাইভেটিভ) আপনি hdparm -t / dev / md0 এর মতো একটি কমান্ড জারি করতে পারেন । ফলাফলটি টাইমিং বাফারড ডিস্কের মতো কিছু দেখাবে : 3.02 সেকেন্ডে 310 এমবি = 102.79 এমবি / সেকেন্ড । শেষ মানটি সাধারণত আরএ সেটিং দ্বারা দৃ strongly়ভাবে প্রভাবিত হয়।
wojciechz

1
আহ, তাই সরাসরি পরিমাপ নয় - বোঝা গেছে, এখনই গ্রহণ করছে - সাহায্যের জন্য ধন্যবাদ :)
অ্যাডাম সি

4

উত্তরটি আরও জটিলভাবে জানুন যাতে আমি উদাহরণে এটি করব। এর জন্য বলুন আপনার কাছে 3 টি ব্লক ডিভাইস রয়েছে যা আপনি স্ট্যান্ডার্ড সেক্টর ধরে ধরে 4 (4 * 512 বাইট) বলতে আপনার আরএ সেট করেছেন। যদি আপনি 3 ডিস্ক ব্যবহার করে একটি RAID-5 স্কিম ব্যবহার করতে চান তবে যে কোনও পাঠ্য এমনকি কোনও অনন্য ডিস্কের স্ট্রাইপটি স্পর্শ করলে তা আরএকে আরও জটিল করে তুলবে যে আপনি প্রাথমিকভাবে ব্লক ডিভাইস আরএতে সেট করেছিলেন। সুতরাং আপনার পড়াটি যদি সমস্ত 3 ডিস্ক বিস্তৃত হয় তবে আপনার কার্যকর আরএ 12 * 512 বাইট হবে। এটি বিভিন্ন স্তরে, যেমন এমডি বা এলভিএম-র সেটেনটিন আরএ দ্বারা আরও বাড়ানো যেতে পারে। থাম্বের নিয়ম হিসাবে, যদি আমার অ্যাপ্লিকেশনটি আরএ থেকে উপকৃত হয় তবে আমি এটিকে সম্ভাব্য সর্বোচ্চ স্তরের উপর সেট করে রাখি তাই আমি আর অকারণে আরএকে মিশ্রিত করব না। আমি তখন 2049 সেক্টরের ফাইল সিস্টেমটি শুরু করি এবং প্রতিটি সেক্টর 8 দিয়ে বিভাজ্য সংখ্যার উপর দিয়ে অফসেট করি you আপনি যা জিজ্ঞাসা করছেন আমি তা বন্ধ করতে পারি তবে এটি আমার 2 ¢ ¢


সুতরাং, আপনি বলছেন যে শীর্ষস্থানীয় ডিভাইসে আরএ সেটিংটি যাই হোক না কেন, এটি কেবল নিচে চলে যাবে। অতএব, আপনি যদি LVM -> 2 x RAID -> 4 x ফিজিকাল ডিস্ক ব্যবহার করেন এবং আপনার 4 টির RA ছিল, তবে 8 টি শারীরিক ডিভাইস রয়েছে বলে আপনি 32 এর কার্যকর RA সহ শেষ করেন। RAID এর খণ্ড / স্ট্রাইপের আকারটি সেই দৃশ্যে দক্ষ হতে পারে - আমি ধরে নিয়েছি আপনি একটি RAA পুরো স্ট্রাইপটি কভার করতে চান যাতে আপনার দুবার অ্যাক্সেস না করতে হয়?
অ্যাডাম সি

বিটিডাব্লু, আমি যদি এই অধিকারটি পাই, আমি যে দৃশ্যের বর্ণনা দিচ্ছি তাতে আমি মনে করি যে আমি RAID0 এর খণ্ড / স্ট্রাইপটি এক্স, যেখানে X = RA * 512bytes সেট করতে চাইব। সুতরাং, আমার কাছে যদি 64 কে (এমডিএডিএম ডিফল্ট) এর খণ্ড / স্ট্রাইপ থাকে তবে আমার ন্যূনতম আরএ 128 ব্যবহার করা উচিত কারণ এটি আমাকে একটি শটে পুরো স্ট্রাইপ দেয়।
অ্যাডাম সি

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