অবিরাম ব্লকদেব সেটরা পড়ুন সামনের সেটিং


14

আমি কিছু এসএসডি পেয়েছি /dev/sda1এবং /dev/sdb1একটি এসইএলএস 11 এসপি 2 সার্ভারে উঠিয়েছি এবং আমি সামনের দিকে সেটিংটি সামঞ্জস্য করতে সক্ষম হয়েছি blockdev --setra:

sudo blockdev --setra 4096 /dev/sda
sudo blockdev --setra 4096 /dev/sdb
sudo blockdev --getra /dev/sda
4096
sudo blockdev --getra /dev/sdb
4096

আমি কীভাবে বুটে এই সেটিংটি চালিয়ে যেতে পারি? বিশেষত, এখানে কি কোনও অনুরূপ সেটিং আছে sysctl.conf, বা এটি ঘটানোর জন্য আমাকে আরসি স্ক্রিপ্টের জন্য নিষ্পত্তি করতে হবে?


2
আমি জানি না এর কোনও 'যথাযথ' সমাধান আছে কি না, তবে উদেব বিধিগুলি অবশ্যই কোনও আরসি স্ক্রিপ্টের চেয়ে আরও উপযুক্ত হবে।
প্যাট্রিক

3
আপনি কেন কোনও এসএসডি বিটিডব্লিউ-তে রিড-ফরোয়ার্ড বাড়াতে চান ? এসএসডি গুলোতে ছোট সময় অনুসন্ধান করার মত পয়েন্টটি আমি দেখতে পাচ্ছি না।
স্টাফেন চেজেলাস

উত্তর:


16

আমি আপনাকে এসএসডি ডিস্কগুলির জন্য পরামিতিগুলি সেট করতে udev ব্যবহার করার পরামর্শ দেব। আপনি এসএসডি ইত্যাদির জন্য বেশি উপযুক্ত এমন একটি নির্দিষ্ট সারি শিডিয়ুলার কনফিগার করতে পারেন You আপনি অনেকগুলি পরামিতিগুলির উপর নির্ভর করে কেবলমাত্র কয়েকটি ডিভাইসে প্যারামিটার প্রয়োগ করতে পারেন।

আপনি নির্বাহের মাধ্যমে আপনার ডিভাইসগুলি (যেমন, ডিস্ক মডেল এবং প্রস্তুতকারকের) সাথে মেলে তুলতে প্রয়োজনীয় নির্দিষ্ট বৈশিষ্ট্যগুলি অর্জন করতে পারেন:

udevadm info -a -p /sys/block/sda

এবং আপনার ব্লক ডিভাইসের জন্য সমস্ত এটিটিআর জোড়া চেক করা।

আরেকটি সুবিধা হ'ল প্লাগেবল ডিস্কগুলির জন্য প্যারামিটারগুলি সেট করার ক্ষমতা (যেমন এনক্লোজারগুলিতে বা হটসপ বেটিতে) এবং ডিভাইসটির পরামিতিগুলি মেলে এই সেটিংসটি সমস্ত নতুন ডিভাইসে প্রয়োগ করা হবে।

এখানে ইন্টেল এসএসডি, আপনার পছন্দসই রিডহেড মান (4096 ব্লক = 2048 কেবি) এর জন্য একটি নির্দিষ্ট শিডিয়ুলার প্রয়োগ করার জন্য এবং অন্য সমস্ত এসএসডি-র জন্য আলাদা শিডিয়ুলার প্রয়োগ করার উদাহরণ এখানে রয়েছে:

cat /etc/udev/rules.d/99-ssd.rules
# http://unix.stackexchange.com/a/71409/36574
# Setting specific kernel parameters for a subset of block devices (Intel SSDs)
SUBSYSTEM=="block", ATTRS{model}=="Intel SSDSC*", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="2048", ATTR{queue/scheduler}="deadline"
# for all other non-rotational block devices set a scheduler to 'noop' and readahead to 1024KB
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="1024", ATTR{queue/scheduler}="noop"

ফাইলটি সংরক্ষণের পরে আপনি পরীক্ষা করতে পারবেন আপনার নিয়মটি ডিভাইসের সাথে মেলে কিনা এবং উদেব ব্যবহার করে উদেব কী করবে:

udevadm test --action=add /sys/block/sda

এটি ডিভাইসটি প্লাগ ইন করা অবস্থায় উদেব লোড হয়, কী মিলবে, কোনটি নয় এবং উদেব কী সিদ্ধান্ত নেবে সে সমস্ত নিয়ম মুদ্রণ করে।

আশাকরি এটা সাহায্য করবে.


ভাল তথ্য। আমি যখন কিছু সুযোগ পাই এবং আপনার কাছে ফিরে আসি তখন আমি কিছু অনুরূপ উদেব নিয়মগুলি চেষ্টা করে যাচ্ছি। আমরা ব্যবহার করছি OCZ vertex 3, তবে আমি মনে করি না যে আপনার প্রস্তাবিত নিয়মগুলি মডেল ক্ষেত্রটি বাদ দিয়ে ইন্টেলের সাথে নির্দিষ্ট, সঠিক?
বাঞ্জার

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

10

নোট করুন যে রিড-ফরোয়ার্ড কমপক্ষে /sys( /sys/class/block/sda/queue/read_ahead_kb) blockdevএবং hdparm( hdparm -a) এর মাধ্যমে সেট করা যেতে পারে ।

hdparmডেবিয়ান এবং এর ডেরিভেটিভসে এমন একটি উপস্থিত রয়েছে hdparm.confযা বুট-এ সেট করার জন্য প্রতি-ডিভাইস বৈশিষ্ট্য নির্দিষ্ট করে এবং হট-প্লাগের উপর ( udevনিয়মের মাধ্যমে ) আসে।

সুতরাং আপনি থাকতে পারেন:

/dev/disk/by-id/my-disk... {
  read_ahead_sect = 4096
}

(আইডি ব্যবহার করা আরও ভাল sdaযা এর তুলনায় এক বুট থেকে পরবর্তী বুটে বদলে যেতে পারে)।


আমি hdparmএসইএলএস 11 এ দেখছি , তবে এটি সনাক্ত করতে পারে বলে মনে হচ্ছে না hdparm.conf। গুগল আমাকে বলেছে যে কোনও hdparmসেটিংস অব্যাহত রাখতে কমপক্ষে সুসেইতে একটি আরসি স্ক্রিপ্টের প্রয়োজন ।
বাঞ্জার

@ বাঞ্জার, হ্যাঁ, দেখে মনে হচ্ছে এটি একটি ডেবিয়ান এক্সটেনশন (উবুন্টুতে সামান্য পরিবর্তিত): শেল স্ক্রিপ্ট প্রারম্ভিক বুট এবং ডিভাইস হট প্লাগের উপর চালিত যা সেই ফাইলটিকে পার্স করে এবং hdparmসেই অনুযায়ী কল করে। আমি উত্তর আপডেট করেছি।
স্টাফেন চেজেলাস

/sys@ জোরলেম udevবিধিটি বুটআপ কনফিগারেশনের জন্য বেশ সুন্দর যদিও পথটি নির্দিষ্ট করার জন্য +1 ।
টোটার

-1

এর সাথে সম্পর্কিত কিছু নেই sysctl, তাই, হ্যাঁ, /etc/rc.localএকটি উপায় বা একই রকম। এবং সাবধান থাকুন - আমি ব্যক্তিগতভাবে লক্ষ্য করেছি যে উবুন্টুতে - এই পরিবর্তনগুলি আরও একবার বুটের পরে সেট হয়ে গেছে, সুতরাং এটি crontabবজায় রাখার জন্য এটি বোধগম্যও হতে পারে ।

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