Проверка правил udev в /etc/udev/rules.d
На предыдущих этапах мы узнали, как проверить активный планировщик ввода-вывода (I/O scheduler) с использованием /sys
и dmesg
. Теперь давайте рассмотрим, как система может быть настроена для автоматической настройки планировщика при обнаружении устройств. Чаще всего это делается с помощью udev
.
udev
представляет собой менеджер устройств для ядра Linux. Он управляет узлами устройств в /dev
и обрабатывает все события в пользовательском пространстве при подключении или отключении аппаратных устройств от системы. udev
использует правила для сопоставления устройств и выполнения действий, таких как установка прав доступа или настройка параметров устройств, например, планировщика ввода-вывода.
Правила udev
обычно хранятся в директории /etc/udev/rules.d/
. Эти файлы имеют расширение .rules
. Мы можем проверить эти файлы, чтобы узнать, есть ли какие-либо правила, которые конкретно устанавливают планировщик ввода-вывода для определенных устройств.
Сначала выведем список файлов в директории /etc/udev/rules.d/
с помощью команды ls
:
ls /etc/udev/rules.d/
Вы увидите список файлов, возможно, включая некоторые, связанные с блочными устройствами или хранилищем. Вывод может выглядеть примерно так:
10-snapd.rules 50-cloudimg-settings.rules 70-snap.core.rules 70-snap.lxd.rules 70-snap.microk8s.rules 70-snap.snapd.rules 70-snap.snapd-desktop-integration.rules 99-vmware-scsi-udev.rules
Теперь давайте посмотрим внутри одного из этих файлов, чтобы узнать, можно ли найти какие-либо правила, связанные с планировщиками. Мы будем использовать команду cat
для отображения содержимого файла. Например, давайте посмотрим на файл 99-vmware-scsi-udev.rules
(точное имя файла может немного отличаться в зависимости от окружения, но ищите файл, который, по-видимому, связан с хранилищем или устройствами):
cat /etc/udev/rules.d/99-vmware-scsi-udev.rules
Вы, возможно, увидите правила, которые сопоставляют определенные атрибуты устройств и затем устанавливают свойства. Ищите строки, которые используют ключевое слово ATTR
для сопоставления атрибутов устройств и свойство ATTR{queue/scheduler}
для установки планировщика.
Например, правило для установки планировщика deadline
может выглядеть примерно так:
## Set scheduler for VMware SCSI devices
ACTION=="add|change", SUBSYSTEM=="block", ATTRS{idVendor}=="VMware", ATTRS{idModel}=="VMware Virtual S", ATTR{queue/scheduler}="deadline"
Это правило сопоставляет блочные устройства (SUBSYSTEM=="block"
) с определенными атрибутами производителя и модели и устанавливает для них планировщик deadline
при их подключении или изменении.
Проверяя эти правила, вы можете понять, как может быть настроен стандартный планировщик ввода-вывода на вашей системе.