Почему мой конфиг blockdev не меняет execute from rc.local при перезагрузке

Если я правильно помню, значение по умолчанию рассчитывается из максимального потенциального количества процессоров (rhel).

Выполните эту команду в каждой из систем.

dmesg | grep -i smp.*allow

Или возможно, что ограничение было изменено ранее администратором?

2
04.12.2015, 22:40
2 ответа

Забудьте о rc.local.

Вы используете CentOS 7. У вас есть systemd. /etc/rc.local - это двойной механизм обратной совместимости в systemd, потому что это механизм обратной совместимости для механизма, который был сам механизмом совместимости в System 5 rc. И как показывает беспорядок в вопросе AskUbuntu по гиперссылке ниже, использование /etc/rc.local может пойти ужасно неправильно. Поэтому создайте правильный блок обслуживания systemd.

Сначала создайте шаблонный сервисный модуль. Для примера назовем его /etc/systemd/system/custom-readahead@.service:

[Unit]
Documentation=https://unix.stackexchange.com/questions/247436/
Description=Set custom read-ahead on storage device %I
BindsTo=dev-%i.device

[Service]
Type=oneshot
ExecStart=/sbin/blockdev --setra 128 /dev/%I

Организуйте запуск этого сервисного блока менеджером подключаемых устройств (udev) при появлении соответствующих устройств. Ваше правило, которое вам придется адаптировать к своим конкретным потребностям, будет выглядеть примерно так:

SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ENV{SYSTEMD_WANTS}="custom-readahead@%k"

Параметр SYSTEMD_WANTS заставляет udev запускать названную службу - инстанцию шаблона для устройства %k. Затем эта служба запускает blockdev.

Очевидно, существует другой способ сделать это, который опирается на способность udev устанавливать эти параметры напрямую. Для этого вам не нужен блок шаблонов systemd или инстанцированные службы. Вместо этого просто проинструктируйте udev непосредственно в его правиле:

SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="128"

Обратите внимание на разницу между == и =.

Нигде не задействован rc.local, в любом случае.

Further reading

5
27.01.2020, 21:54

В CentOS 7 файл rc.local по умолчанию не исполняется.

Выполните: chmod +x /etc/rc.d/rc.local

Чтобы включить его.

2
27.01.2020, 21:54

Теги

Похожие вопросы