stripe_cache_sizeを永続化する


15

やった

echo 8192 > /sys/block/md0/md/stripe_cache_size

私のRAIDパフォーマンスを改善するために、それはたくさん助けました。

しかし、それを永続化する方法はまだわかりません。

/etc/rc.localで設定しようとしていました-他のコマンドは実行されますが、他の場所で256に上書きされました...ヒントはありますか?


以下の私の回答からコメントを再投稿します。StackExchangeがどのように機能するかわからないので、見たかどうかはわかりません。 etc / init.d 'および' grep -R stripe_cache_size /etc/init.d '?
-zpletan

1
sysfsutilsパッケージは問題の解決に役立ちますか?
ズプレタン

回答:


16

次のようなudevルールを追加します/etc/udev/rules.d/60-md-stripe-cache.rules

SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="8192"

私は実際にこれを試したことがありませんので、100%正しいとは限りません(いくつかのタイプミスかもしれません)が、近いはずです。チェックman udevより理解すること。

また、後で次のコマンドを実行して、新しいルールをすぐに適用することもできます。

udevadm trigger
udevadm control --reload-rules

1
本当にありがとうございます、これは最終的に完璧な解決策です:-)構文は大丈夫です、名前の前に60-を追加し、ramfsを再生成する必要がありました。
BarsMonster

1
ありがとう。これがUbuntu 13.10の問題であるとは信じられません。ストライプキャッシュサイズをはるかに大きな値に変更するだけで、1つの暗号化されたRAIDから別の暗号化されたRAIDへのコピー中に<10MB / sから100MB / sに完全にハングしました。
frostschutz

他の人にとっては明らかです:少なくとも最新のUbuntuシステム(私の場合は17.04)、おそらく他の人では、この新しいルールを作成した後にinitramfs( "sudo update-initramfs -u")を再構築する必要があります。自動的に有効になります。
ブライアンヘンリー

1

最後の投稿を拡大するだけです。その下のスクリプトは私のために動作します。「<...>」の間で詳細を入れ替えるだけです。楽しい!


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#################NOTE######################
##  You are limited by CPU and memory too #
##  <Your Name> <Date of Modification>    #
##  stripe cache size and read-ahead      #
###########################################
echo 16384 > /sys/block/<Your RAID5 or 6 Volume>/md/stripe_cache_size
blockdev --setra 16384 /dev/<Your RAID5 or 6 Volume>

exit 0

3
「最後の投稿で展開するだけ」とは言わないでください。回答は通常、投票によってランク付けされるため、回答が参照しているものの上に表示される可能性があります。著者名で投稿を参照してください。より明確です。
ウォーレンヒル

0

私もこれを理解しようとしています。私はrc.localに私を置きましたが、運はありません。ログイン後に手動で起動します。これを処理するスクリプトを作成して「スタートアップアプリケーション」に入れることができますが、gnomeにログインしていない場合はまったく役に立ちません。


それはubuntuサーバーなので、ここでは運がありません。
-BarsMonster

0

sysfsutilsパッケージは問題の解決に役立ちますか?

元の回答:

あなたの質問にコメントする方法がわかりません。私はあなたの問題についてさらに学ぶときに、この答えを編集すると思います。

の出力(または、長い場合はpastebin)を投稿できますか

grep -R md0 /etc/init.d

何も見つかりませんでした。
-BarsMonster

うーん...私はRAIDを持っていないので、それは一種のロングショットですが、「grep -R 256 /etc/init.d」と「grep -R stripe_cache_size /etc/init.d」を試すことができますか?
-zpletan

どちらも結果を返しませんでした。
-BarsMonster

0

本当の答えはありませんが、単純なスタートアップスタートアップスクリプトを作成してみてください。.conf拡張子を付けて/ etc / initにファイルを作成します。ファイルに以下を入力します。

start on started tty1

exec echo 8192 > /sys/block/md0/md/stripe_cache_size

私の考えでは、ターミナルが起動した頃にコマンドを実行する必要があります。おそらくコマンドを実行しているのとほぼ同じ時期です。


私はすでにこれを起動スクリプト(rc.local)に入れようとしましたが、助けにはなりませんでした。また、これはUbuntu Serverであるため、再起動後は端末が存在しない可能性があります。
-BarsMonster

これをrc.localメソッドの代替として提案していました。多分それは後で始まるでしょう。私は本当に知りません。
user1974

端末の不足に関しては、私にはわからない。起動後にサーバーにttyがないのはなぜですか?ターミナルと言っても同じ意味ですか?かかわらず、あなただけの変更、コマンドをトリガするためにさまざまなサービスを利用することができますtty1
user1974

0

テストするRAID 5セットアップがないので、暗闇でのトータルショット:行を追加することもできます

chmod -w /sys/block/md0/md/stripe_cache_size

rc.localで、設定後に書き込み権限を削除します。たぶんそれは他の場所で変更されるのを止めるでしょうか?


良いアイデアですが、Ubuntuのブートプロセスで何かが台無しになっているようです:-S今日は投稿してみます。
-BarsMonster

助けなかった:-|
-BarsMonster

0

追記

echo 8192 > /sys/block/mdX/md/stripe_cache_size

/etc/rc.local


質問を参照してください-これは私が試した最初のものであり、動作しませんでした、明らかにmd-driverが再初期化されたか、rc.localが実行された後に何かがあります。
BarsMonster

-1

このページは、fsのセットアップ時にストライプサイズ(または幅)をセットアップする必要があることを示唆しています。多分tunefsはここで役立つでしょうか?


2
それは全く違うものです。ストライプキャッシュサイズは、ストライプキャッシュ用のメモリ上のMDカーネルドライバーの設定です。
BarsMonster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.