web-dev-qa-db-ja.com

特定のディスクのI / Oスケジューラーの変更

Fedora 20上の特定のディスクのI/Oスケジューラーを永久に変更したいと思います。私が見つけた結果によると、これはrootとして次のシェル行を実行することによって達成できます:

echo {SCHEDULER-NAME}>/sys/block/{DEVICE-NAME}/queue/Scheduler

ただし、変更は再起動後に失われます。私が望むことを達成するための手段はsystemdサービスを作成することですが、ディスクがマウントされた後に実行する必要があるため、私は完全に迷っています。誰かが私がそのようなsystemdサービスを書くのを手伝ってくれるでしょうか?その他の実行可能なソリューションも歓迎します。

4
Laurent

/ etc/systemd/system/io-scheduler.serviceに次の内容のファイルを作成するだけです。

[Unit]
Description=I/O Scheduler Setter
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo noop > /sys/block/sda/queue/scheduler'
TimeoutSec=0
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

次に、サービスを起動時に自動開始できるようにし、次のコマンドで現在のセッションに対して開始します。

chmod 755 /etc/systemd/system/io-scheduler.service
systemctl enable io-scheduler.service
systemctl start io-scheduler.service
6
Laurent

tunedtuned-utilsパッケージはFedoraで利用できます(Red Hatにもあります)。これは、 事前定義またはユーザー定義のシステムプロファイル を適用できるシステムサービスであり、マウントオプション、ディスクスケジューラ、sysctlパラメータなどを含むオンザフライで調整可能です。多くのLiinux管理者はこれらの設定を見落としています。

Fedora20マニュアルを参照してください。
http://docs.fedoraproject.org/en-US/Fedora/20/html/Power_Management_Guide/sect-tuned-installation-and-usage.html

何かのようなもの:

tuned-adm profile virtual-guest

または

tuned-adm profile enterprise-storage

RHELの設定スケジュールは次のとおりです。 Fedoraは少し異なる場合があります。

enter image description here

特定のディスクの設定を探しているのはわかっていますが、I/Oスケジューリングパラメータをすべてのディスクに適用する傾向があります。いずれにせよ、事前定義されたプロファイルが機能するかどうかを確認してください(作業を繰り返す必要はありません)。そうでない場合、プロファイルは簡単にカスタマイズできます。

8
ewwhite

/boot/grub/menu.lstにあるカーネルコマンドラインに次を追加することにより、すべてのディスクのデフォルトスケジューラを変更できます。

elevator={SCHEDULER-NAME}

0
Boscoe

@ewwhite、あなたはopが尋ねなかった質問への答えを提供しました。

「特定のディスクのI/Oスケジューラを永続的に変更する」という回答は、提案されたリソースでは提供されていません。「FedoraとRed Hatが文書化して意図した方法」というコメントは、いくつかの理由で根拠がありません。ここに入る。

特定のディスクのioスケジューラーを変更するために、opは正しい方法を選択しました。

echo noop>/sys/block/sda/queue/scheduler

彼がこのコマンドを実行する方法を選択する方法は、いくぶん恣意的です。これは、構成管理アプリケーション、スクリプト、または彼が行ったようにサービスユニットを作成することで実行できます。


@ boscoe-これはgrub2システムで問題になるでしょう。質問はF20を対象としています。さらに、エレベータをすべてのディスクに適用しますが、これは操作が求めていたものではありません。

0
Cale