/dev/sda1
SLES 11 SP2サーバーにいくつかのSSDをインストールし、以下を/dev/sdb1
使用して先読み設定を調整できました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
起動時にこの設定をどのように保存できますか?具体的には、rcスクリプトに対応する設定がありますかsysctl.conf
?それともこれを達成するにはrcスクリプトを満たす必要がありますか?
ベストアンサー1
SSDディスクのパラメータを設定するには、udevを使用することをお勧めします。これにより、SSDなどに適した特定のキュースケジューラを設定できます。また、複数のパラメータに基づいて特定のデバイスにのみパラメータを適用できます。
次のコマンドを実行して、デバイス(ディスクモデルや製造元など)を一致させるために必要な特定の属性を取得できます。
udevadm info -a -p /sys/block/sda
ブロックデバイスのすべてのATTRペアを確認します。
もう1つの利点は、プラグ可能ディスク(エンクロージャまたはホットスワップ可能ベイなど)のパラメータを設定し、デバイスパラメータが一致する限り、すべての新しいデバイスにその設定を適用できることです。
以下は、特定のスケジューラ、Intel SSDに必要な先読み値(4096ブロック= 2048kb)、および他のすべてのSSDに異なるスケジューラを適用する例です。
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"
ファイルを保存した後、ルールがデバイスと一致するかどうか、udevがudevadmを使用して実行するアクションをテストできます。
udevadm test --action=add /sys/block/sda
これは、udevによってロードされたすべてのルール、一致するルール、一致しないルール、およびデバイスが接続されたときにudevによって行われる決定を印刷します。
お役に立てば幸いです。