更改特定磁盘的 I/O 调度程序

Lau*_*ent 4 fedora io systemd

我想永久更改 Fedora 20 上特定磁盘的 I/O 调度程序。根据我的发现,这可以通过以 root 身份执行以下 shell 行来实现:

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

但是,重新启动后更改将丢失。似乎实现我想要的一种方法是创建一个 systemd 服务,但我完全迷失了,因为它必须在安装磁盘后执行。有人能帮我写一个这样的系统服务吗?也欢迎任何其他可行的解决方案。

eww*_*ite 8

tunedtuned-utilsFedora的pacakages可供选择(他们也是红帽)。这是一个系统服务,可以即时应用预定义或用户定义的系统配置文件和可调参数,包括挂载选项、磁盘调度程序、sysctl 参数等。许多 Liinux 管理员忽略了这些设置。

请参阅 Fedora 20 手册:http :
//docs.fedoraproject.org/en-US/Fedora/20/html/Power_Management_Guide/sect-tuned-installation-and-usage.html

就像是:

tuned-adm profile virtual-guest
Run Code Online (Sandbox Code Playgroud)

或者

tuned-adm profile enterprise-storage
Run Code Online (Sandbox Code Playgroud)

这是 RHEL 的设置时间表。Fedora 可能略有不同。

在此处输入图片说明

我知道您正在寻找特定磁盘上的设置,但我倾向于将 I/O 调度参数应用于所有磁盘。无论哪种方式,查看预定义的配置文件是否适合您(无需重复工作)。如果没有,配置文件很容易定制。

  • 用几行创建 /etc/tuned/myprofile/tuned.conf:`[main], include=someprofile, [disk], devices=sda,lift=noop`,然后用 `tuned-adm profile myprofile` 切换到这个配置文件非常简单,并且与所有其他系统的微调一起就位。 (2认同)

Lau*_*ent 6

您只需在/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
Run Code Online (Sandbox Code Playgroud)

然后,启用启动时自动启动的服务,并为当前会话启动它:

chmod 755 /etc/systemd/system/io-scheduler.service
systemctl enable io-scheduler.service
systemctl start io-scheduler.service
Run Code Online (Sandbox Code Playgroud)