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

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

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

但是,重新启动后,更改将丢失。 看来,实现我想要的是一个意思是创build一个systemd服务,但我完全丢失,因为它必须执行磁盘安装后。 有人可以帮我写这样一个系统服务吗? 任何其他可行的解决scheme也是受欢迎的。

tunedtuned-utils pacakages可用于Fedora(他们也在红帽)。 这是一个系统服务,可以实时应用预定义或用户定义的系统configuration文件和可调参数,包括挂载选项,磁盘调度程序,sysctl参数等。许多Liinuxpipe理员忽略这些设置。

看到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 

要么

 tuned-adm profile enterprise-storage 

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

在这里输入图像说明

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

您只需在/etc/systemd/system/io-scheduler.service中创build一个包含以下内容的文件:

 [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 

您可以通过将以下内容添加到您的内核命令行来更改所有磁盘的默认调度程序:该命令行可以在/boot/grub/menu.lstfind:

elevator={SCHEDULER-NAME}

@ewwhite,你提供了一个问题的答案,没有问。

在你所build议的资源中没有提供“永久更改特定磁盘的I / O调度程序”的答案,而“Fedora和Red Hatlogging和指定的方式”的评论是不在基地的,这是因为我赢得了“进入这里。

要更改特定磁盘的io调度程序,操作系统select了正确的方法:

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

他如何select执行这个命令有点武断。 这可以通过configurationpipe理应用程序,脚本或创build服务单元来完成。


@boscoe – 在grub2系统上会出现问题。 这个问题是针对F20的。 此外,它将电梯应用到所有的磁盘,这不是什么后操作。