【问题标题】:Change I/O scheduler not using sd* to refer to the disk更改不使用 sd* 来引用磁盘的 I/O 调度程序
【发布时间】:2011-09-03 17:34:16
【问题描述】:

我想将 I/O 调度程序更改为系统上某个特定磁盘的截止日期。然而,我发现的所有资源都使用了我无法使用的方法,因为它们要么使用 sd*(sda、sdb 等)引用磁盘,要么使用 Grub 而不是 Grub2。

我不能使用像 sd* 这样的标签来指代磁盘的原因很明显:它可以并且将会针对磁盘进行更改。 我查看了 UUID(/dev/disk/by-uuid),看看它们是否可以提供解决方案,但是唉。互联网上的很多资源都在谈论使用 UUID 引用驱动器或磁盘,而您只能通过这种方式真正引用磁盘上的分区。 在我看来,使用 UUID 引用分区是安全引用分区的一个受欢迎的改变,但是对于整个磁盘来说缺乏类似的东西真的很可惜。

以下任何一项都不是选项:

/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="elevator=deadline quiet splash"

会导致所有磁盘使用相同的调度程序。

/etc/rc.local

echo deadline > /sys/block/sda/queue/scheduler
echo 1 > /sys/block/sda/queue/iosched/fifo_batch

正在使用 sd* 标签。

/etc/sysfs.conf 中

block/sda/queue/scheduler = deadline

再次使用 sd* 标签。

如何使用一种安全的方式来更改 I/O 调度程序来引用磁盘?

【问题讨论】:

  • 写一个init.d脚本,解析dmesg。每个 sd* 磁盘都有 SerialID,因此您可以找到当前启动的磁盘 sd# 编号。此外,您可以遍历所有 sd* 并直接请求串行(例如 smartctl 可以这样做)。

标签: linux ubuntu uuid scheduler


【解决方案1】:

我想没有像 osgx 建议的那样创建脚本更简单/更清洁的解决方案了。

在 dmesg 中,我没有找到任何类似磁盘的 SerialID 的东西,所以我想出了一个不同的解决方案,它可能也更容易被其他人应用。

/etc/init.d/中创建一个名为setscheduler.sh的文件,并添加如下内容:

#!/bin/bash

# List of UUIDs (one per line)
# For each drive: Add the UUID of a single partition located on the drive of which you want to change the I/O-scheduler
UUID_LIST=(
    2669b09e-75cd-4f45-bedb-8cb405444287
)

DISK_PATH="/dev/disk/by-uuid"
BLOCK_PATH="/sys/block"

for UUID in ${UUID_LIST[@]} ; do
    if [[ -L "${DISK_PATH}/${UUID}" ]] ; then
        TARGET=$( readlink "${DISK_PATH}/${UUID}" )
        DISK=`expr "${TARGET}" : '.*\(sd[a-z]\)'`

        if [[ -d "${BLOCK_PATH}/${DISK}" ]] ; then
            echo deadline > "${BLOCK_PATH}/${DISK}/queue/scheduler"
            echo 1 > "${BLOCK_PATH}/${DISK}/queue/iosched/fifo_batch"
        fi
    fi
done

使文件可执行:

sudo chmod +x /etc/init.d/setscheduler.sh

将其注册为 init.d 脚本:

sudo update-rc.d setscheduler.sh defaults

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2014-05-20
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多