継続的な blockdev setra 先読み設定

継続的な blockdev setra 先読み設定

/dev/sda1SLES 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によって行われる決定を印刷します。

お役に立てば幸いです。

おすすめ記事